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

@@ -3,16 +3,11 @@
<div class="panel panel-default">
<div class="panel-heading">
<div class="pull-right">
{% if status == 'expired' %}
<span class="label label-info">{% trans 'Ausgelaufen' %}</span>
{% elif status == 'published' %}
<span class="label label-success">{% trans 'Veröffentlicht' %}</span>
{% elif status == 'publishing' %}
<span class="label label-warning">{% trans 'Veröffentlichung' %}: {{ event.planned_publication_date|date:'d.m.Y' }}</span>
{% elif status == 'accepted' %}
<span class="label label-warning">{% trans 'Freigegeben' %}</span>
{% elif status == 'submitted' %}
<span class="label label-danger">{% trans 'Eingereicht' %}</span>
{% if status.code != 'void' %}
{{ status.get_bootstrap_label|safe }}
{% if status.code == 'publishing' %}
<span class="label label-{{ status.bootstrap_context|default:'default' }}">{{ planned_publication_date|date:'d.m.Y' }}</span>
{% endif %}
{% endif %}
</div>
<span class="panel-title">{{ number }} - {{ title }}</span>

View File

@@ -28,9 +28,9 @@
{% endblock form-fields-visible %}
{% block form-buttons %}
{% buttons %}
<button type="submit" class="btn btn-success">
<button type="submit" name="submit" class="btn btn-success">
{% bootstrap_icon 'ok' %}&thinsp;
{% trans 'Einsenden' %}
{% trans 'Speichern und Einsenden' %}
</button>
<a class="btn btn-warning" href="?back">
{% bootstrap_icon 'repeat' %}&thinsp;
@@ -40,5 +40,9 @@
{% bootstrap_icon 'remove' %}&thinsp;
{% trans 'Abbrechen' %}
</a>
<button type="submit" name="save" class="btn btn-info">
{% bootstrap_icon 'hdd' %}&thinsp;
{% trans 'Als Entwurf speichern' %}
</button>
{% endbuttons %}
{% endblock form-buttons %}

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>

View File

@@ -64,18 +64,9 @@
{{ event.get_numeric_date }}
</td>
<td>
{% if event.get_status == 'expired' %}
<span class="label label-info">{% trans 'Ausgelaufen' %}</span>
{% elif event.get_status == 'published' %}
<span class="label label-success">{% trans 'Veröffentlicht' %}</span>
{% elif event.get_status == 'publishing' %}
<span class="label label-warning">{% trans 'Veröffentlichung' %}: {{ event.planned_publication_date|date:'d.m.Y' }}</span>
{% elif event.get_status == 'accepted' %}
<span class="label label-warning">{% trans 'Freigegeben' %}</span>
{% elif event.get_status == 'submitted' %}
<span class="label label-danger">{% trans 'Eingereicht' %}</span>
{% else %}
<span class="label label-default">{% trans 'Kaputt' %} ({{ event.get_status }})</span>
{{ event.get_status.get_bootstrap_label|safe }}
{% if event.get_status.code == 'publishing' %}
<span class="label label-{{ event.get_status.bootstrap_context|default:'default' }}">{{ event.planned_publication_date|date:'d.m.Y' }}</span>
{% endif %}
</td>
</tr>

View File

@@ -21,18 +21,18 @@
<form action="" method="post">
{% csrf_token %}
{% if event.get_status == 'expired' %}
{% if 'expired' in event.get_status_codes %}
<div class="alert alert-info alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
{% trans 'Diese Veranstaltung ist bereits ausgelaufen.' %}
</div>
{% elif event.get_status == 'published' or event.get_status == 'publishing' %}
{% elif 'publishing' in event.get_status_codes or 'published' in event.get_status_codes %}
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<strong>{% trans 'Achtung!' %}</strong> {% trans 'Diese Veranstaltung wird/wurde bereits veröffentlicht.' %}
{% trans 'Änderungen müssen mit allen Beteiligten abgesprochen werden.' %}
</div>
{% elif event.get_status == 'accepted' %}
{% elif 'accepted' in event.get_status_codes %}
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<strong>{% trans 'Achtung!' %}</strong> {% trans 'Diese Veranstaltung wurde bereits freigegeben.' %}