Skip to content
Snippets Groups Projects
Commit 5044b9ad authored by Nico Vermaas's avatar Nico Vermaas
Browse files

adding configuration API

parent 96222768
No related branches found
No related tags found
4 merge requests!39Dev nico,!35Master,!34Master,!33Dev nico
# Generated by Django 3.1.4 on 2021-03-01 11:06
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('taskdatabase', '0002_auto_20210225_0715'),
]
operations = [
migrations.CreateModel(
name='Configuration',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('key', models.CharField(max_length=50)),
('value', models.CharField(max_length=255)),
],
),
migrations.AlterField(
model_name='task',
name='priority',
field=models.IntegerField(default=100, null=True),
),
]
...@@ -85,3 +85,11 @@ class Status(models.Model): ...@@ -85,3 +85,11 @@ class Status(models.Model):
formatedDate = self.timestamp.strftime(datetime_format_string) formatedDate = self.timestamp.strftime(datetime_format_string)
return str(self.name)+' ('+str(formatedDate)+')' return str(self.name)+' ('+str(formatedDate)+')'
class Configuration(models.Model):
key = models.CharField(max_length=50)
value = models.CharField(max_length=255)
# the representation of the value in the REST API
def __str__(self):
return str(self.key)
\ No newline at end of file
from rest_framework import serializers from rest_framework import serializers
from .models import Status, Task, Workflow, LogEntry from .models import Status, Task, Workflow, LogEntry, Configuration
class WorkflowSerializer(serializers.ModelSerializer): class WorkflowSerializer(serializers.ModelSerializer):
# tasks = serializers.StringRelatedField(
# many=True,
# required=False,
# )
#workflow = WorkflowSerializer()
class Meta: class Meta:
model = Workflow model = Workflow
fields = "__all__" fields = "__all__"
...@@ -124,3 +117,8 @@ class WorkflowSerializer(serializers.ModelSerializer): ...@@ -124,3 +117,8 @@ class WorkflowSerializer(serializers.ModelSerializer):
fields = "__all__" fields = "__all__"
class ConfigurationSerializer(serializers.ModelSerializer):
class Meta:
model = Configuration
fields = "__all__"
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
</div> </div>
{% include 'taskdatabase/pagination.html' %} {% include 'taskdatabase/pagination.html' %}
</div> </div>
<p class="footer"> Version 1.0.0 (1 mar 2021 - 11:00) <p class="footer"> Version 1.0.0 (1 mar 2021 - 13:00)
<script type="text/javascript"> <script type="text/javascript">
(function(seconds) { (function(seconds) {
var refresh, var refresh,
......
...@@ -17,6 +17,10 @@ urlpatterns = [ ...@@ -17,6 +17,10 @@ urlpatterns = [
path('logentries/', views.LogEntryListViewAPI.as_view()), path('logentries/', views.LogEntryListViewAPI.as_view()),
path('logentries/<int:pk>/', views.LogEntryDetailsViewAPI.as_view(), name='logentry-detail-view-api'), path('logentries/<int:pk>/', views.LogEntryDetailsViewAPI.as_view(), name='logentry-detail-view-api'),
path('configuration/', views.ConfigurationListViewAPI.as_view()),
path('configuration/<int:pk>/', views.ConfigurationDetailsViewAPI.as_view(), name='configuration-detail-view-api'),
# --- custom requests --- # --- custom requests ---
# /atdb/get_size?status__in=defined,staged # /atdb/get_size?status__in=defined,staged
path('tasks/get_size', path('tasks/get_size',
......
...@@ -12,10 +12,14 @@ from django_filters import rest_framework as filters ...@@ -12,10 +12,14 @@ from django_filters import rest_framework as filters
from django.shortcuts import render, redirect from django.shortcuts import render, redirect
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import Task, Status, Workflow, LogEntry from .models import Task, Status, Workflow, LogEntry, Configuration
from django.db.models import Q from django.db.models import Q
from .serializers import TaskWriteSerializer, TaskReadSerializer, WorkflowSerializer, LogEntrySerializer from .serializers import \
from .forms import FilterForm TaskWriteSerializer, \
TaskReadSerializer, \
WorkflowSerializer,\
LogEntrySerializer,\
ConfigurationSerializer
from .services import algorithms from .services import algorithms
...@@ -55,7 +59,16 @@ class LogEntryFilter(filters.FilterSet): ...@@ -55,7 +59,16 @@ class LogEntryFilter(filters.FilterSet):
model = LogEntry model = LogEntry
fields = { fields = {
'step_name': ['exact', 'icontains'], 'step_name': ['exact', 'icontains', 'in', 'startswith'],
}
class ConfigurationFilter(filters.FilterSet):
class Meta:
model = Configuration
fields = {
'key': ['exact', 'icontains'],
} }
# ---------- GUI Views ----------- # ---------- GUI Views -----------
...@@ -212,6 +225,24 @@ class LogEntryDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView): ...@@ -212,6 +225,24 @@ class LogEntryDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView):
task.new_status = log_entry.status task.new_status = log_entry.status
task.save() task.save()
# example: /atdb/configuration/
class ConfigurationListViewAPI(generics.ListCreateAPIView):
model = Configuration
queryset = Configuration.objects.all()
serializer_class = ConfigurationSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_class = ConfigurationFilter
# example: /atdb/configuration/5/
class ConfigurationDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView):
model = Configuration
queryset = Configuration.objects.all()
serializer_class = ConfigurationSerializer
# --- controller resources, triggered by a button in the GUI or directoy with a URL --- # --- controller resources, triggered by a button in the GUI or directoy with a URL ---
# set task status to 'new_status' - called from the GUI # set task status to 'new_status' - called from the GUI
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment