added action orm models and route
This commit is contained in:
parent
ac1786c115
commit
25d7a0de63
|
@ -10,4 +10,5 @@ urlpatterns = [
|
||||||
path("users/edit/<int:pk>", views.EditUserView.as_view(), name="edit_user"),
|
path("users/edit/<int:pk>", views.EditUserView.as_view(), name="edit_user"),
|
||||||
path("users/delete/<int:pk>", views.DeleteUserView.as_view(), name="delete_user"),
|
path("users/delete/<int:pk>", views.DeleteUserView.as_view(), name="delete_user"),
|
||||||
path("institution/<int:pk>", views.InstitutionView.as_view(), name="institution"),
|
path("institution/<int:pk>", views.InstitutionView.as_view(), name="institution"),
|
||||||
|
path("reserved", views.AddReservedAnnotationView.as_view(), name="reserved"),
|
||||||
]
|
]
|
||||||
|
|
|
@ -15,6 +15,7 @@ class Annotation(models.Model):
|
||||||
USER = 1, "User"
|
USER = 1, "User"
|
||||||
DOCUMENT = 2, "Document"
|
DOCUMENT = 2, "Document"
|
||||||
ERASE_SERVER = 3, "EraseServer"
|
ERASE_SERVER = 3, "EraseServer"
|
||||||
|
ADMIN = 4, "Admin"
|
||||||
|
|
||||||
created = models.DateTimeField(auto_now_add=True)
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
uuid = models.UUIDField()
|
uuid = models.UUIDField()
|
||||||
|
@ -28,7 +29,32 @@ class Annotation(models.Model):
|
||||||
constraints = [
|
constraints = [
|
||||||
models.UniqueConstraint(fields=["type", "key", "uuid"], name="unique_type_key_uuid")
|
models.UniqueConstraint(fields=["type", "key", "uuid"], name="unique_type_key_uuid")
|
||||||
]
|
]
|
||||||
|
#TODO: check if this works properly
|
||||||
|
def clean(self):
|
||||||
|
super().clean()
|
||||||
|
if self.type == self.Type.ADMIN:
|
||||||
|
if Annotation.objects.filter(type=self.Type.ADMIN, key=self.key).exists():
|
||||||
|
raise ValidationError(f"The key '{self.key}' is already reserved by admin.")
|
||||||
|
else:
|
||||||
|
if Annotation.objects.filter(type=self.Type.ADMIN, key=self.key).exists():
|
||||||
|
raise ValidationError(f"The key '{self.key}' is reserved by admin and cannot be used.")
|
||||||
|
|
||||||
|
class AllowedValue(models.Model):
|
||||||
|
annotation = models.ForeignKey(Annotation, on_delete=models.CASCADE, limit_choices_to={'type': Annotation.Type.ADMIN})
|
||||||
|
value = models.CharField(max_length=50)
|
||||||
|
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.value
|
||||||
|
|
||||||
|
#This represents a change on a System-type Annotation
|
||||||
|
class Action(models.Model):
|
||||||
|
|
||||||
|
annotation = models.ForeignKey(Annotation, on_delete=models.CASCADE, limit_choices_to={'type': Annotation.Type.ADMIN})
|
||||||
|
created = models.DateTimeField(auto_now_add=True)
|
||||||
|
owner = models.ForeignKey(Institution, on_delete=models.CASCADE)
|
||||||
|
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
|
comment = models.CharField(max_length=250)
|
||||||
|
|
||||||
class Evidence:
|
class Evidence:
|
||||||
def __init__(self, uuid):
|
def __init__(self, uuid):
|
||||||
|
|
Loading…
Reference in New Issue