From 1f674125ec94d70ff66ee6bd26b104d265ba59d6 Mon Sep 17 00:00:00 2001 From: heinzel Date: Fri, 18 Dec 2020 14:30:17 +0100 Subject: [PATCH] UPD: dav_events: enable save as draft --- .../dav_events/event_create/SummaryForm.html | 2 -- dav_events/views/events.py | 28 ++++++++++++++++++- dav_events/workflow.py | 5 ++-- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/dav_events/templates/dav_events/event_create/SummaryForm.html b/dav_events/templates/dav_events/event_create/SummaryForm.html index 4c925a4..7bf5704 100644 --- a/dav_events/templates/dav_events/event_create/SummaryForm.html +++ b/dav_events/templates/dav_events/event_create/SummaryForm.html @@ -40,11 +40,9 @@ {% bootstrap_icon 'remove' %}  {% trans 'Abbrechen' %} - {% endbuttons %} {% endblock form-buttons %} diff --git a/dav_events/views/events.py b/dav_events/views/events.py index e98196e..ee68873 100644 --- a/dav_events/views/events.py +++ b/dav_events/views/events.py @@ -543,6 +543,18 @@ class EventUpdateStatusView(EventPermissionMixin, generic.DetailView): messages.error(request, message) return HttpResponseRedirect(event.get_absolute_url()) + if not event.workflow.has_reached_status('publishing*') and not event.workflow.has_reached_status('published*'): + cur_pub_date = event.planned_publication_date + real_pub_date, real_pub_issue = event.workflow.plan_publication(event.first_day, event.deadline) + if cur_pub_date != real_pub_date: + if real_pub_date is None: + real_pub_str = _(u'Unverzüglich') + else: + real_pub_str = u'%s (%s)' % (real_pub_date.strftime('%d.%m.%Y'), real_pub_issue) + event.planned_publication_date = real_pub_date + event.save() + messages.warning(request, _(u'Veröffentlichungsdatum wurde angepasst: %s') % real_pub_str) + event.workflow.update_status(status, request.user) if status.startswith('submit'): @@ -602,7 +614,21 @@ class EventUpdateView(EventPermissionMixin, generic.UpdateView): def form_valid(self, form): form.instance.editor = self.request.user - self.object = form.save() + event = form.save() + self.object = event + + if not event.workflow.has_reached_status('publishing*') and not event.workflow.has_reached_status('published*'): + cur_pub_date = event.planned_publication_date + real_pub_date, real_pub_issue = event.workflow.plan_publication(event.first_day, event.deadline) + if cur_pub_date != real_pub_date: + if real_pub_date is None: + real_pub_str = _(u'Unverzüglich') + else: + real_pub_str = u'%s (%s)' % (real_pub_date.strftime('%d.%m.%Y'), real_pub_issue) + event.planned_publication_date = real_pub_date + event.save() + messages.warning(self.request, _(u'Veröffentlichungsdatum wurde angepasst: %s') % real_pub_str) + return HttpResponseRedirect(self.get_success_url()) @method_decorator(login_required) diff --git a/dav_events/workflow.py b/dav_events/workflow.py index 1856480..499b09b 100644 --- a/dav_events/workflow.py +++ b/dav_events/workflow.py @@ -489,9 +489,8 @@ class BasicWorkflow(object): # # Misc logic # - # TODO: is a class method a good idea? - @classmethod - def plan_publication(cls, first_day, deadline=None): + @staticmethod + def plan_publication(first_day, deadline=None): app_config = apps.get_containing_app_config(__package__) if deadline: