MIGRATION: dav_registration: try to incoorporate feedback from trainers

This commit is contained in:
2019-04-01 16:50:34 +02:00
parent 0e1ec5c733
commit aa353ec6a5
8 changed files with 75 additions and 10 deletions

View File

@@ -310,6 +310,10 @@ class Event(models.Model):
logger.info('Event updated: %s', self) logger.info('Event updated: %s', self)
signals.event_updated.send(sender=self.__class__, event=self, diff=diff_lines, user=self.editor) signals.event_updated.send(sender=self.__class__, event=self, diff=diff_lines, user=self.editor)
def is_deadline_expired(self):
today = datetime.date.today()
return self.deadline and self.deadline < today
def get_number(self): def get_number(self):
return self.workflow.get_number() return self.workflow.get_number()

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import logging import logging
from django import forms from django import forms
from django.utils.translation import ugettext, ugettext_lazy as _ from django.utils.translation import ugettext
from .models import Registration from .models import Registration
@@ -37,7 +37,7 @@ class RegistrationForm(forms.ModelForm):
if not val and self.instance.privacy_policy: if not val and self.instance.privacy_policy:
raise forms.ValidationError( raise forms.ValidationError(
ugettext(u'Wir müssen deine Daten leider speichern können,' ugettext(u'Wir müssen deine Daten leider speichern können,'
u' damit wir wissen, dass du dich angemeldet hast.'), u' damit wir wissen, dass du teilnehmen möchtest.'),
code='privacy_policy_not_accepted', code='privacy_policy_not_accepted',
) )
return val return val

View File

@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-04-01 13:10
from __future__ import unicode_literals
import django.core.validators
from django.db import migrations, models
import uuid
class Migration(migrations.Migration):
dependencies = [
('dav_registration', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='registration',
name='dav_number',
field=models.CharField(help_text='Deine Mitgliedsnummer findest du unter dem Strichcode auf deinem DAV Ausweis.<br /> Beispiel: <tt>131/00/012345</tt> (der Teil bis zum ersten * genügt)', max_length=62, validators=[django.core.validators.RegexValidator('^([0-9]{1,10}/[0-9]{2,10}/)?[0-9]{1,10}(\\*[0-9]{1,10})?(\\*[0-9]{4}\\*[0-9]{4})?([* ][0-9]{8})?$', 'Ungültiges Format.')], verbose_name='DAV Mitgliednummer'),
),
migrations.AlterField(
model_name='registration',
name='id',
field=models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False),
),
]

View File

@@ -2,6 +2,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import datetime import datetime
import logging import logging
import uuid
from django.db import models from django.db import models
from django.urls import reverse from django.urls import reverse
from django.utils import timezone from django.utils import timezone
@@ -21,6 +22,7 @@ one_day = datetime.timedelta(1)
@python_2_unicode_compatible @python_2_unicode_compatible
class Registration(models.Model): class Registration(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
event = models.ForeignKey(Event, related_name='registrations') event = models.ForeignKey(Event, related_name='registrations')
created_at = models.DateTimeField(auto_now_add=True) created_at = models.DateTimeField(auto_now_add=True)
@@ -108,7 +110,7 @@ class Registration(models.Model):
elif event.last_day: elif event.last_day:
last_day = event.last_day last_day = event.last_day
elif event.alt_first_day: elif event.alt_first_day:
last_day = event.alt_fisrt_day last_day = event.alt_first_day
else: else:
last_day = event.first_day last_day = event.first_day
return timezone.make_aware(datetime.datetime.combine(last_day + one_day * 7, midnight)) return timezone.make_aware(datetime.datetime.combine(last_day + one_day * 7, midnight))

View File

@@ -98,7 +98,11 @@
{% endif %} {% endif %}
<br /> <br />
{% endif %} {% endif %}
{% if event.registration_required and event.deadline %}<strong>{% trans 'Anmeldeschluss' %}:</strong> {{ event.deadline|date:'l, d. F Y' }}<br />{% endif %} {% if event.registration_required and event.deadline %}
{% if event.is_deadline_expired %}<span class="text-danger">{% endif %}
<strong>{% trans 'Anmeldeschluss' %}:</strong> {{ event.deadline|date:'l, d. F Y' }}<br />
{% if event.is_deadline_expired %}</span>{% endif %}
{% endif %}
{% if event.trainer_2_fullname %} {% if event.trainer_2_fullname %}
{% if event.mode == 'training' %} {% if event.mode == 'training' %}
<strong>{% trans 'Ausbildungsteam' %}:</strong> <strong>{% trans 'Ausbildungsteam' %}:</strong>

View File

@@ -4,6 +4,17 @@
{% block head-title %}{{ event.number }} - {{ block.super }}{% endblock head-title %} {% block head-title %}{{ event.number }} - {{ block.super }}{% endblock head-title %}
{% block messages %}
{% if event.is_deadline_expired %}
<div class="container-fluid">
<div class="alert alert-danger">
Der Anmeldeschluss ist bereits abgelaufen!<br />
Eine Anmeldung ist nicht mehr möglich.
</div>
</div>
{% endif %}
{% endblock messages %}
{% block page-container-fluid %} {% block page-container-fluid %}
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
@@ -26,7 +37,17 @@
{% render_event_facts event %} {% render_event_facts event %}
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<a class="btn btn-primary" href="{% url 'dav_registration:register' event.pk %}">{% trans 'Anmelden' %}</a> {% if not event.registration_required %}
<div class="alert alert-info">
{% blocktrans %}
Zu dieser Veranstaltung ist keine Anmeldung notwendig.<br />
Du kannst das Anmeldeformular natürlich trotzdem ausfüllen.
{% endblocktrans %}
</div>
{% endif %}
{% if not event.is_deadline_expired %}
<a class="btn btn-primary" href="{% url 'dav_registration:register' event.pk %}">{% trans 'Anmeldung' %}</a>
{% endif %}
<a class="btn btn-danger" href="{% url 'dav_registration:events' %}">{% trans 'Zurück' %}</a> <a class="btn btn-danger" href="{% url 'dav_registration:events' %}">{% trans 'Zurück' %}</a>
</li> </li>
</ul> </ul>

View File

@@ -5,7 +5,7 @@
{% block page-container-fluid %} {% block page-container-fluid %}
<div> <div>
<h3 class="top-most">Touren & Kurse</h3> <h3 class="top-most">{% trans 'Touren & Kurse' %}</h3>
<table id="objects_table" class="table table-bordered table-hover"> <table id="objects_table" class="table table-bordered table-hover">
<thead> <thead>
<tr> <tr>
@@ -24,7 +24,12 @@
</a> </a>
</div> </div>
<div class="pull-right" style="margin-left: 1em;"> <div class="pull-right" style="margin-left: 1em;">
<a class="btn btn-primary" href="{% url 'dav_registration:event' event.pk %}">Details & Anmeldung</a> {% if event.is_deadline_expired %}
<span class="text-danger"><span class="glyphicon glyphicon-exclamation-sign"></span></span>
<span class="text-danger">{% trans 'Anmeldeschluss abgelaufen' %}</span>
{% else %}
<a class="btn btn-primary" href="{% url 'dav_registration:event' event.pk %}">{% trans 'Details & Anmeldung' %}</a>
{% endif %}
</div> </div>
<div class="pull-left" style="margin-right: 12px;"> <div class="pull-left" style="margin-right: 12px;">
{% with event.sport as sport %} {% with event.sport as sport %}
@@ -53,9 +58,11 @@
<li class="list-group-item"> <li class="list-group-item">
{% render_event_facts event %} {% render_event_facts event %}
</li> </li>
{% if not event.is_deadline_expired %}
<li class="list-group-item"> <li class="list-group-item">
<a class="btn btn-primary" href="{% url 'dav_registration:event' event.pk %}">zur Anmeldung</a> <a class="btn btn-primary" href="{% url 'dav_registration:event' event.pk %}">{% trans 'zur Anmeldung' %}</a>
</li> </li>
{% endif %}
</ul> </ul>
</div> </div>
</div> </div>

View File

@@ -37,7 +37,7 @@ class EventListView(generic.ListView):
'published', 'published_web', 'published_facebook')) 'published', 'published_web', 'published_facebook'))
filter &= Q(planned_publication_date__isnull=True) | Q(planned_publication_date__lte=today) filter &= Q(planned_publication_date__isnull=True) | Q(planned_publication_date__lte=today)
filter &= Q(first_day__gte=today) filter &= Q(first_day__gte=today)
filter &= Q(deadline__isnull=True) | Q(deadline__gte=today) # filter &= Q(deadline__isnull=True) | Q(deadline__gte=today)
qs = self.model.objects.filter(filter).order_by('first_day', 'number').distinct() qs = self.model.objects.filter(filter).order_by('first_day', 'number').distinct()
@@ -55,7 +55,7 @@ class EventDetailView(generic.DetailView):
'published', 'published_web', 'published_facebook')) 'published', 'published_web', 'published_facebook'))
filter &= Q(planned_publication_date__isnull=True) | Q(planned_publication_date__lte=today) filter &= Q(planned_publication_date__isnull=True) | Q(planned_publication_date__lte=today)
filter &= Q(first_day__gte=today) filter &= Q(first_day__gte=today)
filter &= Q(deadline__isnull=True) | Q(deadline__gte=today) # filter &= Q(deadline__isnull=True) | Q(deadline__gte=today)
qs = self.model.objects.filter(filter).distinct() qs = self.model.objects.filter(filter).distinct()