diff --git a/AKModel/models.py b/AKModel/models.py index 979f005f70ed48e2bd73daad4d21dbe2160b9aff..5c359610bf4a09979df568cc4eacaa8a80b47645 100644 --- a/AKModel/models.py +++ b/AKModel/models.py @@ -2,6 +2,7 @@ import itertools from datetime import timedelta from django.db import models +from django.urls import reverse_lazy from django.utils import timezone from django.utils.datetime_safe import datetime from django.utils.text import slugify @@ -529,7 +530,7 @@ class ConstraintViolation(models.Model): # Stringify all other fields for field in self.fields: a = getattr(self, field, None) - if a is not None: + if a is not None and str(a) != '': output.append(f"{field}: {a}") return ", ".join(output) @@ -539,6 +540,10 @@ class ConstraintViolation(models.Model): def details(self): return self.get_details() + @property + def edit_url(self): + return reverse_lazy('admin:AKModel_constraintviolation_change', kwargs={'object_id': self.pk}) + @property def level_display(self): return self.get_level_display() diff --git a/AKScheduling/api.py b/AKScheduling/api.py index b7ab7fbd1adb2290c79ac0d59e06ccbb7fd19b72..2e065b467427c3c70a7175e43aacc9695d2dac34 100644 --- a/AKScheduling/api.py +++ b/AKScheduling/api.py @@ -114,7 +114,7 @@ class EventsViewSet(EventSlugMixin, viewsets.ModelViewSet): class ConstraintViolationSerializer(serializers.ModelSerializer): class Meta: model = ConstraintViolation - fields = ['pk', 'type_display', 'aks', 'ak_slots', 'ak_owner', 'room', 'requirement', 'category', 'comment', 'timestamp_display', 'manually_resolved', 'level_display', 'details'] + fields = ['pk', 'type_display', 'aks', 'ak_slots', 'ak_owner', 'room', 'requirement', 'category', 'comment', 'timestamp_display', 'manually_resolved', 'level_display', 'details', 'edit_url'] class ConstraintViolationsViewSet(EventSlugMixin, viewsets.ModelViewSet): diff --git a/AKScheduling/templates/admin/AKScheduling/constraint_violations.html b/AKScheduling/templates/admin/AKScheduling/constraint_violations.html index 8645c192829c9bc58f91b45e78d1be2819b2892e..c987f3119284f551f5f74d06eba1c10f6faffdf6 100644 --- a/AKScheduling/templates/admin/AKScheduling/constraint_violations.html +++ b/AKScheduling/templates/admin/AKScheduling/constraint_violations.html @@ -63,7 +63,7 @@ // Update violations table for(let i=0;i<response.length;i++) { - table_html += "<tr><td>" + response[i].level_display + "</td><td>" + response[i].type_display + "</td><td>" + response[i].details + "</td><td>" + response[i].timestamp_display + "</td><td></td></tr>"; + table_html += "<tr><td>" + response[i].level_display + "</td><td>" + response[i].type_display + "</td><td>" + response[i].details + "</td><td class='nowrap'>" + response[i].timestamp_display + "</td><td><a href='" + response[i].edit_url + "'><i class='btn btn-primary fa fa-pen'></i></a></td></tr>"; } } else {