From 2e37eeb4db709d297702e4e7659cfad11a05b62b Mon Sep 17 00:00:00 2001 From: vermaas <vermaas@astron.nl> Date: Fri, 25 Nov 2022 15:24:53 +0100 Subject: [PATCH] validation per sas_id instead of per task --- .../templates/taskdatabase/index.html | 2 +- .../validation/annotate_quality.html | 2 +- .../validation/tasks_validation.html | 24 +-------- .../validation/tasks_validation_headers.html | 13 ++--- .../validation/validation_page.html | 2 +- atdb/taskdatabase/urls.py | 1 + atdb/taskdatabase/views.py | 52 +++++++++++++++++-- 7 files changed, 56 insertions(+), 40 deletions(-) diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index e2093f42..e37428da 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 21 November 2022 + <p class="footer"> Version 25 November 2022 </div> diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality.html b/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality.html index dd0fc8cb..80b7910c 100644 --- a/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality.html +++ b/atdb/taskdatabase/templates/taskdatabase/validation/annotate_quality.html @@ -7,7 +7,7 @@ <div class="card-body"> <h4>Quality Annotation</h4> - <form class="post-form" action="{% url 'annotate-quality' task.id %}" method="POST"> + <form class="post-form" action="{% url 'annotate-quality-sasid' task.sas_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 12dc69c3..dfd608cd 100644 --- a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html +++ b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation.html @@ -4,29 +4,9 @@ {% if task.status != "removed_invisible" %} <div class="row"> <tr class="{{ task.status }}"> - - <td> - <a href="{{ task.get_absolute_url }}" target="_blank">{{ task.id }} </a> - </td> - <td> - {% if user.is_authenticated %} - <a class="btn btn-primary btn-sm" - href="{% url 'task-details' task.id my_tasks.number %}" - data-popup-url="{% url 'task-details' task.id my_tasks.number %}" - ><i class="fas fa-list"></i> Details - </a> - {% if task.has_quality %} - <a class="open-modal btn btn-primary btn-sm" - href="{% url 'task-quality' task.id my_tasks.number %}" - data-popup-url="{% url 'task-quality' task.id my_tasks.number %}" - ><i class="fas fa-balance-scale"></i> Quality - </a> - {% endif %} - {% endif %} - </td> - - <td>{{ task.project }}</td> <td>{{ task.sas_id }}</td> + <td>{{ task.project }}</td> + <td>{{ task.filter }} </td> diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html index 279efc63..63b90750 100644 --- a/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html +++ b/atdb/taskdatabase/templates/taskdatabase/validation/tasks_validation_headers.html @@ -1,21 +1,14 @@ <tr> <th> - <a href="{% url 'sort-tasks' '-pk' 'validation' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> - ID - <a href="{% url 'sort-tasks' 'id' 'validation' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> + <a href="{% url 'sort-tasks' '-sas_id' 'validation' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> + SAS_ID + <a href="{% url 'sort-tasks' 'sas_id' 'validation' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> </th> - <th>Details</th> - <th> <a href="{% url 'sort-tasks' '-project' 'validation' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> Project <a href="{% url 'sort-tasks' 'project' 'validation' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> </th> - <th> - <a href="{% url 'sort-tasks' '-sas_id' 'validation' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> - SAS_ID - <a href="{% url 'sort-tasks' 'sas_id' 'validation' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-down"></i></a> - </th> <th> <a href="{% url 'sort-tasks' '-filter' 'validation' %}" class="btn btn-light btn-sm" role="button"><i class="fas fa-sort-up"></i></a> Filter diff --git a/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html b/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html index 904b6883..c5af634c 100644 --- a/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html +++ b/atdb/taskdatabase/templates/taskdatabase/validation/validation_page.html @@ -11,7 +11,7 @@ <div class="col-12"> <h3>Validation</h3> - These are the tasks in status <b>stored</b> that can be validated. Click one of the quality buttons to validate. + These are the SAS_ID's in status <b>stored</b> that can be validated. Click one of the quality buttons to validate. <td>{% include 'taskdatabase/filter/search.html' %}</td> diff --git a/atdb/taskdatabase/urls.py b/atdb/taskdatabase/urls.py index 50f9df5a..60e1fe93 100644 --- a/atdb/taskdatabase/urls.py +++ b/atdb/taskdatabase/urls.py @@ -26,6 +26,7 @@ urlpatterns = [ 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('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 f2b4c71b..547cd379 100644 --- a/atdb/taskdatabase/views.py +++ b/atdb/taskdatabase/views.py @@ -337,8 +337,9 @@ class ShowValidationPage(ListView): def get_queryset(self): - stored_tasks = Task.objects.filter(status__icontains='stored') - tasks = get_filtered_tasks(self.request, stored_tasks) + stored_tasks = Task.objects.filter(status__icontains='stored').order_by("sas_id") + tasks = stored_tasks.distinct("sas_id") + #tasks = get_filtered_tasks(self.request, stored_tasks) # exclude the failed tasks tasks = tasks.exclude(status__icontains="failed") @@ -557,6 +558,37 @@ def AnnotateQuality(request, id=0, page=0, new_remark=""): {'task': task, 'page': page, 'form': form}) +def AnnotateQualitySasId(request, sas_id=0, page=0, new_remark=""): + # 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) + for task in tasks: + try: + task.remarks['quality'] = request.POST.get("annotation", "") + except: + task.remarks = {} + task.remarks['quality'] = request.POST.get("annotation", "") + + task.save() + + return redirect_with_params('validation', '?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'] + except: + quality_remarks = "" + + form = QualityAnnotationForm(initial={'annotation': quality_remarks, 'return_to_page': page}) + return render(request, "taskdatabase/validation/annotate_quality.html", + {'task': task, 'page': page, 'form': form}) + def ShowInspectionPlots(request, id=0, page=0): # a GET means that the form should be presented to be filled in task = Task.objects.get(id=id) @@ -926,10 +958,20 @@ def TaskSetStatus(request, pk, new_status, page=0): def TaskValidate(request, pk, quality, new_status, page=0): model = Task task = Task.objects.get(pk=pk) - task.new_status = new_status - task.quality = quality - task.save() + # find all tasks with the same SAS_ID, and set this quality to all of the + sas_id = task.sas_id + tasks = Task.objects.filter(sas_id=sas_id) + for task in tasks: + if task.status == 'stored': + task.quality = quality + task.new_status = new_status + # task.save() + + #task.new_status = new_status + #task.quality = quality + + #task.save() if page == 0: # redirect to details screen -- GitLab