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):
formatedDate = self.timestamp.strftime(datetime_format_string)
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 .models import Status, Task, Workflow, LogEntry
from .models import Status, Task, Workflow, LogEntry, Configuration
class WorkflowSerializer(serializers.ModelSerializer):
# tasks = serializers.StringRelatedField(
# many=True,
# required=False,
# )
#workflow = WorkflowSerializer()
class Meta:
model = Workflow
fields = "__all__"
......@@ -124,3 +117,8 @@ class WorkflowSerializer(serializers.ModelSerializer):
fields = "__all__"
class ConfigurationSerializer(serializers.ModelSerializer):
class Meta:
model = Configuration
fields = "__all__"
......@@ -45,7 +45,7 @@
</div>
{% include 'taskdatabase/pagination.html' %}
</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">
(function(seconds) {
var refresh,
......
......@@ -17,6 +17,10 @@ urlpatterns = [
path('logentries/', views.LogEntryListViewAPI.as_view()),
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 ---
# /atdb/get_size?status__in=defined,staged
path('tasks/get_size',
......
......@@ -12,10 +12,14 @@ from django_filters import rest_framework as filters
from django.shortcuts import render, redirect
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 .serializers import TaskWriteSerializer, TaskReadSerializer, WorkflowSerializer, LogEntrySerializer
from .forms import FilterForm
from .serializers import \
TaskWriteSerializer, \
TaskReadSerializer, \
WorkflowSerializer,\
LogEntrySerializer,\
ConfigurationSerializer
from .services import algorithms
......@@ -55,7 +59,16 @@ class LogEntryFilter(filters.FilterSet):
model = LogEntry
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 -----------
......@@ -212,6 +225,24 @@ class LogEntryDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView):
task.new_status = log_entry.status
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 ---
# 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