diff --git a/dav_events/models.py b/dav_events/models.py index c8def85..0696c1e 100644 --- a/dav_events/models.py +++ b/dav_events/models.py @@ -1,5 +1,7 @@ import os from babel.dates import format_date +from django.conf import settings +from django.contrib.auth import get_user_model from django.db import models from django.template.loader import get_template from django.utils import timezone @@ -11,8 +13,16 @@ from . import config CHOICE_FIELD_MAX_LENGTH = 25 +def get_ghost_user(): + return get_user_model().objects.get_or_create(username='deleted')[0] + + class Event(models.Model): # Meta + owner = models.ForeignKey(settings.AUTH_USER_MODEL, + null=True, + on_delete=models.SET(get_ghost_user), + related_name='events') created_at = models.DateTimeField(auto_now_add=True) accepted = models.BooleanField(default=False) accepted_at = models.DateTimeField(null=True) @@ -130,6 +140,18 @@ class Event(models.Model): if not self.id: if notify is None: notify = True + user_model = get_user_model() + try: + owner = user_model.objects.get(username=self.trainer_email) + except user_model.DoesNotExist: + owner = user_model(username=self.trainer_email, + first_name=self.trainer_firstname, + last_name=self.trainer_familyname, + email=self.trainer_email, + ) + owner.save() + self.owner = owner + super(Event, self).save(**kwargs) if notify: self.send_notification() @@ -173,8 +195,9 @@ class Event(models.Model): else: return None - def render_as_html(self): + def _get_context(self): context = { + 'event': self, 'mode': self.mode, 'sport': self.sport, 'title': self.title, @@ -222,8 +245,10 @@ class Event(models.Model): 'trainer_email': self.trainer_email, 'trainer_phone': self.trainer_phone, 'trainer_2_fullname': self.trainer_2_fullname, - 'event': self, } + return context + + def render_as_html(self): template_name = os.path.join('dav_events', 'event.html') template = get_template(template_name) - return template.render(context) + return template.render(self._get_context()) diff --git a/dav_events/static/dav_events/css/local.css b/dav_events/static/dav_events/css/local.css index fd65298..1e75c4d 100644 --- a/dav_events/static/dav_events/css/local.css +++ b/dav_events/static/dav_events/css/local.css @@ -44,6 +44,10 @@ thead input { font-weight: bold; } +#page-header #login-widget { + float: right; +} + #page-body { padding-top: 2rem; padding-bottom: 6rem; diff --git a/dav_events/templates/dav_events/base.html b/dav_events/templates/dav_events/base.html index 3e5b2aa..e61b129 100644 --- a/dav_events/templates/dav_events/base.html +++ b/dav_events/templates/dav_events/base.html @@ -30,7 +30,8 @@