Added a model for event state (including data migration, signal based

notifications, etc.)
This commit is contained in:
2018-07-04 16:56:13 +02:00
parent 0e7c14ace9
commit 3c7ef05099
27 changed files with 712 additions and 355 deletions

View File

@@ -5,6 +5,36 @@
{% block head-title %}{{ event }} - {{ block.super }}{% endblock head-title %}
{% block modals %}
<div id="modal-submit-dialog" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">{% trans 'Veranstaltung einreichen?' %}</h4>
</div>
<div class="modal-body">
<p class="text-center">
<strong>{{ event }}</strong>
</p>
<p>
Die Veranstaltungsdaten werden an die Tourenreferenten und zuständigen Fachbereichsleiter
zur Freigabe weitergeleitet.<br />
Nach dem Einreichen können die Veranstaltungsdaten nicht mehr von dir geändert werden.
</p>
</div>
<div class="modal-footer">
<a class="btn btn-success" href="{% url 'dav_events:event_confirmstatus' event.pk 'submitted' %}">
{% bootstrap_icon 'ok' %}&thinsp;
{% trans 'Ja, alles klar!' %}
</a>
<button type="button" class="btn btn-danger" data-dismiss="modal">
{% bootstrap_icon 'remove' %}&thinsp;
{% trans 'Abbrechen' %}
</button>
</div>
</div>
</div>
</div>
<div id="modal-accept-dialog" class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
@@ -16,11 +46,14 @@
<p class="text-center">
<strong>{{ event }}</strong>
</p>
<p>
Die Veranstaltungsdaten werden an die Redaktion zur Veröffentlichung weitergeleitet.
</p>
</div>
<div class="modal-footer">
<a class="btn btn-success" href="{% url 'dav_events:event_accept' event.pk %}">
<a class="btn btn-success" href="{% url 'dav_events:event_confirmstatus' event.pk 'accepted' %}">
{% bootstrap_icon 'ok' %}&thinsp;
{% trans 'Ja, mach schon!' %}
{% trans 'Ja, passt schon!' %}
</a>
<button type="button" class="btn btn-danger" data-dismiss="modal">
{% bootstrap_icon 'remove' %}&thinsp;
@@ -41,9 +74,17 @@
<p class="text-center">
<strong>{{ event }}</strong>
</p>
<p class="text-center">
<strong>{% trans 'Zeitpunkt der Veröffentlichung' %}:</strong>
{% if event.planned_publication_date %}
{{ event.planned_publication_date|date:'l, d. F Y' }}
{% else %}
{% trans 'Unverzüglich' %}
{% endif %}
</p>
</div>
<div class="modal-footer">
<a class="btn btn-success" href="{% url 'dav_events:event_confirmpublication' event.pk %}">
<a class="btn btn-success" href="{% if event.planned_publication_date %}{% url 'dav_events:event_confirmstatus' event.pk 'publishing' %}{% else %}{% url 'dav_events:event_confirmstatus' event.pk 'published' %}{% endif %}">
{% bootstrap_icon 'ok' %}&thinsp;
{% trans 'Ja' %}
</a>
@@ -60,10 +101,21 @@
{% block page-container-fluid %}
<div class="action-tabs">
<div class="pull-right">
{% if has_permission_submit %}
<a class="btn {% if event.get_status.code == 'draft' %}btn-success{% else %}btn-default disabled{% endif %}"
data-toggle="modal" data-target="#modal-submit-dialog">
{% if 'submitted' in event.get_status_codes %}
{% bootstrap_icon 'check' %}&thinsp;
{% else %}
{% bootstrap_icon 'unchecked' %}&thinsp;
{% endif %}
{% trans 'Einreichen' %}
</a>
{% endif %}
{% if has_permission_accept %}
<a class="btn {% if event.get_status == 'submitted' %}btn-success{% else %}btn-default disabled{% endif %}"
<a class="btn {% if event.get_status.code == 'submitted' %}btn-success{% else %}btn-default disabled{% endif %}"
data-toggle="modal" data-target="#modal-accept-dialog">
{% if event.accepted %}
{% if 'accepted' in event.get_status_codes %}
{% bootstrap_icon 'check' %}&thinsp;
{% else %}
{% bootstrap_icon 'unchecked' %}&thinsp;
@@ -72,9 +124,9 @@
</a>
{% endif %}
{% if has_permission_publish %}
<a class="btn {% if event.get_status == 'accepted' %}btn-success{% else %}btn-default disabled{% endif %}"
<a class="btn {% if event.get_status.code == 'accepted' %}btn-success{% else %}btn-default disabled{% endif %}"
data-toggle="modal" data-target="#modal-confirmpublication-dialog">
{% if event.publication_confirmed %}
{% if 'publishing' in event.get_status_codes or 'published' in event.get_status_codes %}
{% bootstrap_icon 'check' %}&thinsp;
{% else %}
{% bootstrap_icon 'unchecked' %}&thinsp;
@@ -112,55 +164,22 @@
<div class="panel-body">
<div class="row">
<div class="col-sm-5">
<h5>Status-Log</h5>
{% for flag in event.flags.all %}
<div class="row">
<div class="col-sm-4">
<span class="text-danger">{% bootstrap_icon 'check' %}</span>
&thinsp;<strong>{% trans 'Eingereicht' %}:</strong>
<div class="col-sm-5">
<span class="text-{{ flag.status.bootstrap_context|default:'default' }}">{% bootstrap_icon 'check' %}</span>
<strong>{{ flag.status.label }}:</strong>
</div>
<div class="col-sm-8">
{{ event.created_at|date:'l, d. F Y, H:i' }} {% trans 'Uhr' %}<br />
{% trans 'von' %} {{ event.owner.get_full_name }}
</div>
</div>
<div class="row">
<div class="col-sm-4">
{% if event.accepted %}
<span class="text-warning">{% bootstrap_icon 'check' %}</span>
{% else %}
{% bootstrap_icon 'unchecked' %}
{% endif %}
&thinsp;<strong>{% trans 'Freigegeben' %}:</strong>
</div>
<div class="col-sm-8">
{% if event.accepted %}
{{ event.accepted_at|date:'l, d. F Y, H:i' }} {% trans 'Uhr' %}<br />
{% trans 'von' %} {{ event.accepted_by.get_full_name }}
{% else %}
<br /><br />
{% endif %}
</div>
</div>
<div class="row">
<div class="col-sm-4">
{% if event.publication_confirmed %}
<span class="text-success">{% bootstrap_icon 'check' %}</span>
{% else %}
{% bootstrap_icon 'unchecked' %}
{% endif %}
&thinsp;<strong>{% trans 'Veröffentlicht' %}:</strong>
</div>
<div class="col-sm-8">
{% if event.publication_confirmed %}
{{ event.publication_confirmed_at|date:'l, d. F Y, H:i' }} {% trans 'Uhr' %}<br />
{% trans 'von' %} {{ event.publication_confirmed_by.get_full_name }}
{% else %}
<br /><br />
{% endif %}
<div class="col-sm-7">
{{ flag.timestamp|date:'l, d. F Y, H:i' }} {% trans 'Uhr' %}<br />
{% trans 'von' %} {{ flag.user.get_full_name|default:flag.user }}
</div>
</div>
{% endfor %}
</div>
<div class="col-sm-3">
<strong>{% trans 'Veröffentlichen' %}</strong><br />
<h5>{% trans 'Veröffentlichen' %}</h5>
{% if event.planned_publication_date %}
{{ event.planned_publication_date|date:'l, d. F Y' }}
{% else %}
@@ -169,7 +188,7 @@
</div>
<div class="col-sm-4">
{% if event.internal_note %}
<strong>{% trans 'Bearbeitungshinweis' %}</strong>
<h5>{% trans 'Bearbeitungshinweis' %}</h5>
<div class="well well-sm"><small>{{ event.internal_note|linebreaksbr }}</small></div>
{% endif %}
</div>