diff --git a/dav_events/forms/events.py b/dav_events/forms/events.py index 11983ef..1c1eb94 100644 --- a/dav_events/forms/events.py +++ b/dav_events/forms/events.py @@ -70,7 +70,8 @@ class EventUpdateForm(forms.ModelForm): class Meta: model = models.Event fields = '__all__' - exclude = ('accepted', 'accepted_at', 'accepted_by') + exclude = ('accepted', 'accepted_at', 'accepted_by', + 'published', 'published_at', 'published_by',) class EventCreateForm(ChainedForm): diff --git a/dav_events/migrations/0013_auto_20180224_1401.py b/dav_events/migrations/0013_auto_20180224_1401.py new file mode 100644 index 0000000..0701453 --- /dev/null +++ b/dav_events/migrations/0013_auto_20180224_1401.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.9 on 2018-02-24 14:01 +from __future__ import unicode_literals + +import dav_events.models +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('dav_events', '0012_event_registration_howto'), + ] + + operations = [ + migrations.AddField( + model_name='event', + name='published', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='event', + name='published_at', + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AddField( + model_name='event', + name='published_by', + field=models.ForeignKey(blank=True, null=True, on_delete=models.SET(dav_events.models.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/dav_events/models.py b/dav_events/models.py index a8539ea..439223d 100644 --- a/dav_events/models.py +++ b/dav_events/models.py @@ -46,6 +46,14 @@ class Event(models.Model): blank=True, null=True, default=None) + published = models.BooleanField(default=False) + published_at = models.DateTimeField(blank=True, + null=True) + published_by = models.ForeignKey(settings.AUTH_USER_MODEL, + blank=True, + null=True, + on_delete=models.SET(get_ghost_user), + related_name='+') # DescriptionForm title = models.CharField(max_length=config.TITLE_MAX_LENGTH) @@ -213,7 +221,7 @@ class Event(models.Model): if user: self.accepted_by = user else: - logger.error('Event.accept(): no user given! (Event: %s)', self.event) + logger.warning('Event.accept(): no user given! (Event: %s)', self.event) self.save() logger.info('Event is accepted: %s', self) @@ -229,6 +237,20 @@ class Event(models.Model): else: return None + def set_published(self, user=None): + if not self.accepted: + logger.warning('Event.set_published(): event is not accepted yet! (Event: %s)', self.event) + + if not self.published: + self.published = True + self.published_at = timezone.now() + if user: + self.published_by = user + else: + logger.warning('Event.set_published(): no user given! (Event: %s)', self.event) + self.save() + logger.info('Event is published: %s', self) + def get_status(self): now = datetime.date.today() if self.alt_last_day: @@ -242,7 +264,9 @@ class Event(models.Model): elif self.first_day and self.first_day < now: return 'expired' - if self.accepted: + if self.published: + return 'published' + elif self.accepted: return 'accepted' elif self.owner: return 'submitted' diff --git a/dav_events/templates/dav_events/event_detail.html b/dav_events/templates/dav_events/event_detail.html index db9f294..5055bb6 100644 --- a/dav_events/templates/dav_events/event_detail.html +++ b/dav_events/templates/dav_events/event_detail.html @@ -30,24 +30,64 @@ + {% endblock modals %} {% block page-container-fluid %}
- - {% bootstrap_icon 'check' %}  - {% trans 'Freigeben' %} - - + {% if has_permission_accept %} + + {% if event.accepted %} + {% bootstrap_icon 'check' %}  + {% else %} + {% bootstrap_icon 'unchecked' %}  + {% endif %} + {% trans 'Freigeben' %} + + {% endif %} + {% if has_permission_publish %} + + {% if event.published %} + {% bootstrap_icon 'check' %}  + {% else %} + {% bootstrap_icon 'unchecked' %}  + {% endif %} + {% trans 'Wird veröffentlicht' %} + + {% endif %}