Create change log entry on status updates

This commit is contained in:
2020-09-29 22:19:43 +02:00
parent 96d6dc72fb
commit 5237d81551
6 changed files with 102 additions and 56 deletions

View File

@@ -306,11 +306,13 @@ class Event(models.Model):
signals.event_created.send(sender=self.__class__, event=self)
self.workflow.update_status('draft', self.editor)
else:
change = EventChange(event=self, user=self.editor, operation='update', content=self.diff(original))
change = EventChange(event=self, user=self.editor, operation=EventChange.UPDATE,
content=self.diff(original))
change.save()
if not implicit_update:
logger.info('Event updated: %s', self)
signals.event_updated.send(sender=self.__class__, event=self, diff=self.diff(original, fmt='human_readable'), user=self.editor)
signals.event_updated.send(sender=self.__class__, event=self, user=self.editor,
diff=self.diff(original, fmt='human_readable'))
def diff(self, event, fmt='json'):
if fmt == 'human_readable':
@@ -326,16 +328,14 @@ class Event(models.Model):
for field in fields:
field_name = field.name
from_value = getattr(event, field_name)
if (isinstance(from_value, datetime.datetime) or
isinstance(from_value, datetime.date) or
isinstance(from_value, datetime.time) or
isinstance(from_value, Country)):
try:
json.dumps(from_value)
except TypeError:
from_value = str(from_value)
to_value = getattr(self, field_name)
if (isinstance(to_value, datetime.datetime) or
isinstance(to_value, datetime.date) or
isinstance(to_value, datetime.time) or
isinstance(to_value, Country)):
try:
json.dumps(to_value)
except TypeError:
to_value = str(to_value)
if from_value != to_value:
change = {