diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html index e2093f42fc910b5d0c6b37032e0518c971bd06b6..e37428dadef3a9c020ad72d55a6b649865938604 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 dd0fc8cb4787be3fdca4c936a58fc364e10bafc1..80b7910ca7a4e3d3419bbbc8502bf7dfd32ef18a 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 12dc69c383415919be83579c0dd9d8016664b91f..dfd608cd6771395fefc1b49241b2c78f0588d807 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 279efc63cf5d05183408bca39270087dd48b5943..63b90750f0d092801dc7f98f8a4ea3d4cf56f828 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 904b6883c7111725eafd5d58ea7c9c2c95f671b8..c5af634cb13f22e91b6d93b1c837b8526d29dc99 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 50f9df5a27d58e0f51a2e1bff1d61bae493c8b9c..60e1fe93e54a28b579961586cda7a54802b89760 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 f2b4c71bdb43220e5b3ebd2d88da5dc70e643afa..547cd379beb8844a9b738c164a5e7d8cc9a3a83e 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