UPD: dav_events: decoupled event model and eventflag model.

This commit is contained in:
2019-02-18 15:57:09 +01:00
parent a62d573b98
commit 6e1a07f3f6
5 changed files with 96 additions and 86 deletions

View File

@@ -11,26 +11,22 @@ from django.contrib.auth import get_user_model
from django.core.urlresolvers import reverse
from django.db import models
from django.template.loader import get_template
from django.utils import timezone
from django.utils.translation import get_language, ugettext_lazy as _
from django_countries.fields import CountryField
from .. import choices
from .. import config
from .. import signals
from ..utils import get_ghost_user, get_system_user
from ..utils import get_ghost_user
from ..workflow import DefaultWorkflow
from .eventflag import EventFlag
from .eventstatus import EventStatus, get_or_create_event_status
logger = logging.getLogger(__name__)
def get_system_user_id():
return get_system_user().id
class Event(models.Model):
# Metadata
owner = models.ForeignKey(settings.AUTH_USER_MODEL,
@@ -314,17 +310,6 @@ class Event(models.Model):
logger.info('Event updated: %s', self)
signals.event_updated.send(sender=self.__class__, event=self, diff=diff_lines, user=self.editor)
# TODO: move this into workflow
def set_flag(self, status, **kwargs):
if not isinstance(status, EventStatus):
status = get_or_create_event_status(status)
kwargs['event'] = self
kwargs['status'] = status
flag = EventFlag(**kwargs)
flag.save()
logger.info('Flagging status \'%s\' for %s', status.code, self)
return flag
def get_number(self):
return self.workflow.get_number()
@@ -495,26 +480,3 @@ class Event(models.Model):
template_name = os.path.join('dav_events', 'event', 'default.html')
template = get_template(template_name)
return template.render(self.get_template_context())
# TODO: can we put this into a separated file?
class EventFlag(models.Model):
event = models.ForeignKey(Event, related_name='flags')
status = models.ForeignKey(EventStatus,
on_delete=models.PROTECT,
related_name='+')
timestamp = models.DateTimeField(default=timezone.now)
user = models.ForeignKey(settings.AUTH_USER_MODEL,
default=get_system_user_id,
on_delete=models.SET(get_ghost_user),
related_name='+')
class Meta:
ordering = ['event', 'timestamp', 'status']
def __unicode__(self):
s = u'{status} - {timestamp}'
if self.user:
s += u' by user {user}'
return s.format(status=self.status, timestamp=self.timestamp.strftime('%d.%m.%Y %H:%M:%S'),
user=self.user)