@@ -16,7 +16,6 @@ from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP, LANIS_ZOOM_LUT,
|
||||
from konova.tasks import celery_send_mail_shared_access_removed, celery_send_mail_shared_access_given, \
|
||||
celery_send_mail_shared_data_recorded, celery_send_mail_shared_data_unrecorded, \
|
||||
celery_send_mail_shared_data_deleted, celery_send_mail_shared_data_checked
|
||||
from user.models import User
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.http import HttpRequest
|
||||
from django.utils.timezone import now
|
||||
@@ -28,7 +27,6 @@ from intervention.settings import INTERVENTION_IDENTIFIER_LENGTH, INTERVENTION_I
|
||||
from konova.utils import generators
|
||||
from konova.utils.generators import generate_random_string
|
||||
from konova.utils.message_templates import CHECKED_RECORDED_RESET, GEOMETRY_CONFLICT_WITH_TEMPLATE
|
||||
from user.models import UserActionLogEntry, UserAction
|
||||
|
||||
|
||||
class UuidModel(models.Model):
|
||||
@@ -50,14 +48,14 @@ class BaseResource(UuidModel):
|
||||
A basic resource model, which defines attributes for every derived model
|
||||
"""
|
||||
created = models.ForeignKey(
|
||||
UserActionLogEntry,
|
||||
"user.UserActionLogEntry",
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name='+'
|
||||
)
|
||||
modified = models.ForeignKey(
|
||||
UserActionLogEntry,
|
||||
"user.UserActionLogEntry",
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
@@ -94,9 +92,9 @@ class BaseObject(BaseResource):
|
||||
"""
|
||||
identifier = models.CharField(max_length=1000, null=True, blank=True)
|
||||
title = models.CharField(max_length=1000, null=True, blank=True)
|
||||
deleted = models.ForeignKey(UserActionLogEntry, on_delete=models.SET_NULL, null=True, blank=True, related_name='+')
|
||||
deleted = models.ForeignKey("user.UserActionLogEntry", on_delete=models.SET_NULL, null=True, blank=True, related_name='+')
|
||||
comment = models.TextField(null=True, blank=True)
|
||||
log = models.ManyToManyField(UserActionLogEntry, blank=True, help_text="Keeps all user actions of an object", editable=False)
|
||||
log = models.ManyToManyField("user.UserActionLogEntry", blank=True, help_text="Keeps all user actions of an object", editable=False)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
@@ -105,7 +103,7 @@ class BaseObject(BaseResource):
|
||||
def set_status_messages(self, request: HttpRequest):
|
||||
raise NotImplementedError
|
||||
|
||||
def mark_as_deleted(self, user: User, send_mail: bool = True):
|
||||
def mark_as_deleted(self, user, send_mail: bool = True):
|
||||
""" Mark an entry as deleted
|
||||
|
||||
Does not delete from database but sets a timestamp for being deleted on and which user deleted the object
|
||||
@@ -116,6 +114,7 @@ class BaseObject(BaseResource):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
from user.models import UserActionLogEntry
|
||||
if self.deleted:
|
||||
# Nothing to do here
|
||||
return
|
||||
@@ -133,7 +132,7 @@ class BaseObject(BaseResource):
|
||||
|
||||
self.save()
|
||||
|
||||
def mark_as_edited(self, performing_user: User, request: HttpRequest = None, edit_comment: str = None):
|
||||
def mark_as_edited(self, performing_user, request: HttpRequest = None, edit_comment: str = None):
|
||||
""" In case the object or a related object changed the log history needs to be updated
|
||||
|
||||
Args:
|
||||
@@ -144,13 +143,14 @@ class BaseObject(BaseResource):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
from user.models import UserActionLogEntry
|
||||
edit_action = UserActionLogEntry.get_edited_action(performing_user, edit_comment)
|
||||
self.modified = edit_action
|
||||
self.log.add(edit_action)
|
||||
self.save()
|
||||
return edit_action
|
||||
|
||||
def add_log_entry(self, action: UserAction, user: User, comment: str):
|
||||
def add_log_entry(self, action, user, comment: str):
|
||||
""" Wraps adding of UserActionLogEntry to log
|
||||
|
||||
Args:
|
||||
@@ -161,6 +161,7 @@ class BaseObject(BaseResource):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
from user.models import UserActionLogEntry
|
||||
user_action = UserActionLogEntry.objects.create(
|
||||
user=user,
|
||||
action=action,
|
||||
@@ -229,7 +230,7 @@ class RecordableObjectMixin(models.Model):
|
||||
"""
|
||||
# Refers to "verzeichnen"
|
||||
recorded = models.OneToOneField(
|
||||
UserActionLogEntry,
|
||||
"user.UserActionLogEntry",
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
@@ -240,7 +241,7 @@ class RecordableObjectMixin(models.Model):
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
def set_unrecorded(self, user: User):
|
||||
def set_unrecorded(self, user):
|
||||
""" Perform unrecording
|
||||
|
||||
Args:
|
||||
@@ -249,6 +250,7 @@ class RecordableObjectMixin(models.Model):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
from user.models import UserActionLogEntry
|
||||
if not self.recorded:
|
||||
return None
|
||||
action = UserActionLogEntry.get_unrecorded_action(user)
|
||||
@@ -262,7 +264,7 @@ class RecordableObjectMixin(models.Model):
|
||||
|
||||
return action
|
||||
|
||||
def set_recorded(self, user: User):
|
||||
def set_recorded(self, user):
|
||||
""" Perform recording
|
||||
|
||||
Args:
|
||||
@@ -271,6 +273,7 @@ class RecordableObjectMixin(models.Model):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
from user.models import UserActionLogEntry
|
||||
if self.recorded:
|
||||
return None
|
||||
action = UserActionLogEntry.get_recorded_action(user)
|
||||
@@ -284,7 +287,7 @@ class RecordableObjectMixin(models.Model):
|
||||
|
||||
return action
|
||||
|
||||
def unrecord(self, performing_user: User, request: HttpRequest = None):
|
||||
def unrecord(self, performing_user, request: HttpRequest = None):
|
||||
""" Unrecords a dataset
|
||||
|
||||
Args:
|
||||
@@ -318,7 +321,7 @@ class RecordableObjectMixin(models.Model):
|
||||
class CheckableObjectMixin(models.Model):
|
||||
# Checks - Refers to "Genehmigen" but optional
|
||||
checked = models.OneToOneField(
|
||||
UserActionLogEntry,
|
||||
"user.UserActionLogEntry",
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
@@ -346,7 +349,7 @@ class CheckableObjectMixin(models.Model):
|
||||
self.save()
|
||||
return None
|
||||
|
||||
def set_checked(self, user: User) -> UserActionLogEntry:
|
||||
def set_checked(self, user):
|
||||
""" Perform checking
|
||||
|
||||
Args:
|
||||
@@ -355,6 +358,7 @@ class CheckableObjectMixin(models.Model):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
from user.models import UserActionLogEntry
|
||||
if self.checked:
|
||||
# Nothing to do
|
||||
return
|
||||
@@ -373,7 +377,7 @@ class CheckableObjectMixin(models.Model):
|
||||
|
||||
class ShareableObjectMixin(models.Model):
|
||||
# Users having access on this object
|
||||
users = models.ManyToManyField(User, help_text="Users having access (data shared with)")
|
||||
users = models.ManyToManyField("user.User", help_text="Users having access (data shared with)")
|
||||
access_token = models.CharField(
|
||||
max_length=255,
|
||||
null=True,
|
||||
@@ -420,7 +424,7 @@ class ShareableObjectMixin(models.Model):
|
||||
self.access_token = token
|
||||
self.save()
|
||||
|
||||
def is_shared_with(self, user: User):
|
||||
def is_shared_with(self, user):
|
||||
""" Access check
|
||||
|
||||
Checks whether a given user has access to this object
|
||||
@@ -433,7 +437,7 @@ class ShareableObjectMixin(models.Model):
|
||||
"""
|
||||
return self.users.filter(id=user.id)
|
||||
|
||||
def share_with(self, user: User):
|
||||
def share_with(self, user):
|
||||
""" Adds user to list of shared access users
|
||||
|
||||
Args:
|
||||
@@ -465,6 +469,7 @@ class ShareableObjectMixin(models.Model):
|
||||
Returns:
|
||||
|
||||
"""
|
||||
from user.models import User
|
||||
form_data = form.cleaned_data
|
||||
|
||||
keep_accessing_users = form_data["users"]
|
||||
|
||||
Reference in New Issue
Block a user