From d375cea6493a07fa3ffce99740d00c8912feff4e Mon Sep 17 00:00:00 2001 From: vermaas <vermaas@astron.nl> Date: Fri, 2 Dec 2022 10:23:33 +0100 Subject: [PATCH] split annotation in taskid and sasid to preserve the remarks on both levels, and add sasid remarks to tasks. --- atdb/taskdatabase/models.py | 14 ++++++++ .../templates/taskdatabase/index.html | 2 +- .../quality/annotate_quality_taskid.html | 27 ++++++++++++++++ .../taskdatabase/quality/tasks_quality.html | 10 +++--- ...ality.html => annotate_quality_sasid.html} | 4 +-- .../validation/tasks_validation.html | 10 +++--- atdb/taskdatabase/urls.py | 9 +++--- atdb/taskdatabase/views.py | 32 ++++++++++++------- 8 files changed, 79 insertions(+), 29 deletions(-) create mode 100644 atdb/taskdatabase/templates/taskdatabase/quality/annotate_quality_taskid.html rename atdb/taskdatabase/templates/taskdatabase/validation/{annotate_quality.html => annotate_quality_sasid.html} (89%) diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py index cb0443b0..c5315f5f 100644 --- a/atdb/taskdatabase/models.py +++ b/atdb/taskdatabase/models.py @@ -139,6 +139,20 @@ class Task(models.Model): except: return None + @property + def get_quality_remarks_taskid(self): + try: + return self.remarks['quality_taskid'] + except: + return None + + @property + def get_quality_remarks_sasid(self): + try: + return self.remarks['quality_sasid'] + except: + return None + @property def quality_as_list(self): try: diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index 9fcee8dd..47fcad4f 100644 --- a/atdb/taskdatabase/templates/taskdatabase/index.html +++ b/atdb/taskdatabase/templates/taskdatabase/index.html @@ -34,7 +34,7 @@ {% include 'taskdatabase/pagination.html' %} </div> </div> - <p class="footer"> Version 27 November 2022 + <p class="footer"> Version 2 December 2022 </div> diff --git a/atdb/taskdatabase/templates/taskdatabase/quality/annotate_quality_taskid.html b/atdb/taskdatabase/templates/taskdatabase/quality/annotate_quality_taskid.html new file mode 100644 index 00000000..23d0e3d6 --- /dev/null +++ b/atdb/taskdatabase/templates/taskdatabase/quality/annotate_quality_taskid.html @@ -0,0 +1,27 @@ + +{% block myBlock %} +<div class="container-fluid details-container"> + + + <div class="card"> + <div class="card-body"> + <h4>Quality Annotation (per task)</h4> + + <form class="post-form" action="{% url 'annotate-quality-taskid' task.id %}" method="POST"> + {% csrf_token %} + <div> + {{ form }} + </div> + <div><button class="btn btn-success btn-sm" type="submit"><i class="fas fa-check"></i> OK</button> + <a href="{% url 'quality' %}" class="btn btn-warning btn-sm" role="button"><i class="fas fa-times-circle"></i> Cancel</a>  + </div> + </form> + + </div> + </div> +</div> +{% endblock %} + + +{% include "taskdatabase/modal/modal_script.html" %} +{% include "taskdatabase/modal/modal.html" %} \ No newline at end of file diff --git a/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality.html b/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality.html index a52b81a3..76258aec 100644 --- a/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality.html +++ b/atdb/taskdatabase/templates/taskdatabase/quality/tasks_quality.html @@ -53,16 +53,16 @@ {% endif %} <td>{% if user.is_authenticated %} - {% if task.get_quality_remarks %} + {% if task.get_quality_remarks_taskid %} <a class="open-modal btn btn-warning btn-sm" - href="{% url 'annotate-quality' task.id my_tasks.number %}" - data-popup-url="{% url 'annotate-quality' task.id my_tasks.number %}"> + href="{% url 'annotate-quality-taskid' task.id my_tasks.number %}" + data-popup-url="{% url 'annotate-quality-taskid' task.id my_tasks.number %}"> <i class="fas fa-pen-alt"></i> </a> {% else %} <a class="open-modal btn btn-secondary btn-sm" - href="{% url 'annotate-quality' task.id my_tasks.number %}" - data-popup-url="{% url 'annotate-quality' task.id my_tasks.number %}"> + href="{% url 'annotate-quality-taskid' task.id my_tasks.number %}" + data-popup-url="{% url 'annotate-quality-taskid' task.id my_tasks.number %}"> <i class="fas fa-pen-alt"></i> </a> {% endif %} diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality.html b/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality_sasid.html similarity index 89% rename from atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality.html rename to atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality_sasid.html index 80b7910c..86ff0efb 100644 --- a/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality.html +++ b/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality_sasid.html @@ -5,9 +5,9 @@ <div class="card"> <div class="card-body"> - <h4>Quality Annotation</h4> + <h4>Quality Annotation (per SAS_ID)</h4> - <form class="post-form" action="{% url 'annotate-quality-sasid' task.sas_id %}" method="POST"> + <form class="post-form" action="{% url 'annotate-quality-sasid' task.id %}" method="POST"> {% csrf_token %} <div> {{ form }} diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html index dfd608cd..4392498e 100644 --- a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html +++ b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html @@ -29,16 +29,16 @@ <td> {% if user.is_authenticated %} - {% if task.get_quality_remarks %} + {% if task.get_quality_remarks_sasid %} <a class="open-modal btn btn-warning btn-sm" - href="{% url 'annotate-quality' task.id my_tasks.number %}" - data-popup-url="{% url 'annotate-quality' task.id my_tasks.number %}"> + href="{% url 'annotate-quality-sasid' task.id my_tasks.number %}" + data-popup-url="{% url 'annotate-quality-sasid' task.id my_tasks.number %}"> <i class="fas fa-pen-alt"></i> </a> {% else %} <a class="open-modal btn btn-secondary btn-sm" - href="{% url 'annotate-quality' task.id my_tasks.number %}" - data-popup-url="{% url 'annotate-quality' task.id my_tasks.number %}"> + href="{% url 'annotate-quality-sasid' task.id my_tasks.number %}" + data-popup-url="{% url 'annotate-quality-sasid' task.id my_tasks.number %}"> <i class="fas fa-pen-alt"></i> </a> {% endif %} diff --git a/atdb/taskdatabase/urls.py b/atdb/taskdatabase/urls.py index 891749a6..b486b50f 100644 --- a/atdb/taskdatabase/urls.py +++ b/atdb/taskdatabase/urls.py @@ -23,10 +23,11 @@ urlpatterns = [ path('task_details/', views.TaskDetails, name='task-details'), path('task_quality/<int:id>/<page>', views.ShowTaskQuality, name='task-quality'), path('task_quality/', views.ShowTaskQuality, name='task-quality'), - path('annotate_quality/<int:id>/<page>', views.AnnotateQuality, name='annotate-quality'), - path('annotate_quality/<int:id>', views.AnnotateQuality, name='annotate-quality'), - path('annotate_quality/', views.AnnotateQuality, name='annotate-quality'), - path('annotate_quality_sasid/<sas_id>', views.AnnotateQualitySasId, name='annotate-quality-sasid'), + path('annotate_quality_taskid/<int:id>/<page>', views.AnnotateQualityTaskId, name='annotate-quality-taskid'), + path('annotate_quality_taskid/<int:id>', views.AnnotateQualityTaskId, name='annotate-quality-taskid'), + path('annotate_quality_taskid/', views.AnnotateQualityTaskId, name='annotate-quality-taskid'), + path('annotate_quality_sasid/<int:id>', views.AnnotateQualitySasId, name='annotate-quality-sasid'), + path('annotate_quality_sasid/<int:id>/<page>', views.AnnotateQualitySasId, name='annotate-quality-sasid'), path('show_inspectionplots/<int:id>/<page>', views.ShowInspectionPlots, name='inspection-plots'), path('show-inputs/<int:id>/', views.ShowInputs, name='show-inputs'), diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py index 45284f9f..389fbf68 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -526,7 +526,7 @@ def ShowTaskQuality(request, id=0, page=0): return render(request, "taskdatabase/tasks/task_quality.html", {'task': task, 'quality': quality_html}) -def AnnotateQuality(request, id=0, page=0, new_remark=""): +def AnnotateQualityTaskId(request, id=0, page=0): # a POST means that the form is filled in and should be stored in the database if request.method == "POST": @@ -535,41 +535,49 @@ def AnnotateQuality(request, id=0, page=0, new_remark=""): if form.is_valid(): task = Task.objects.get(id=id) try: - task.remarks['quality'] = request.POST.get("annotation", "") + task.remarks['quality_taskid'] = request.POST.get("annotation", "") except: task.remarks = {} - task.remarks['quality'] = request.POST.get("annotation", "") + task.remarks['quality_taskid'] = request.POST.get("annotation", "") task.save() - return redirect_with_params('validation', '?page=' + request.POST.get("return_to_page", 1)) + return redirect_with_params('quality', '?page=' + request.POST.get("return_to_page", 1)) else: # a GET means that the form should be presented to be filled in task = Task.objects.get(id=id) try: - quality_remarks = task.remarks['quality'] + quality_remarks = task.remarks['quality_taskid'] except: quality_remarks = "" form = QualityAnnotationForm(initial={'annotation': quality_remarks, 'return_to_page': page}) - return render(request, "taskdatabase/validation/annotate_quality.html", + return render(request, "taskdatabase/quality/annotate_quality_taskid.html", {'task': task, 'page': page, 'form': form}) -def AnnotateQualitySasId(request, sas_id=0, page=0, new_remark=""): +def AnnotateQualitySasId(request, id=0, page=0): # a POST means that the form is filled in and should be stored in the database if request.method == "POST": form = QualityAnnotationForm(request.POST) if form.is_valid(): - tasks = Task.objects.filter(sas_id=sas_id) + task = Task.objects.get(id=id) + tasks = Task.objects.filter(sas_id=task.sas_id) for task in tasks: try: - task.remarks['quality'] = request.POST.get("annotation", "") + remark_per_sasid = request.POST.get("annotation", "") + try: + remark_per_taskid = task.remarks['quality_taskid'] + except: + remark_per_taskid = '' + new_remark_per_taskid = remark_per_taskid + "\n\n" + remark_per_sasid + task.remarks['quality_taskid'] = new_remark_per_taskid + task.remarks['quality_sasid'] = remark_per_sasid except: task.remarks = {} - task.remarks['quality'] = request.POST.get("annotation", "") + task.remarks['quality_sasid'] = request.POST.get("annotation", "") task.save() @@ -579,12 +587,12 @@ def AnnotateQualitySasId(request, sas_id=0, page=0, new_remark=""): # a GET means that the form should be presented to be filled in task = Task.objects.get(id=id) try: - quality_remarks = task.remarks['quality'] + quality_remarks = task.remarks['quality_sasid'] except: quality_remarks = "" form = QualityAnnotationForm(initial={'annotation': quality_remarks, 'return_to_page': page}) - return render(request, "taskdatabase/validation/annotate_quality.html", + return render(request, "taskdatabase/validation/annotate_quality_sasid.html", {'task': task, 'page': page, 'form': form}) def ShowInspectionPlots(request, id=0, page=0): -- GitLab