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)
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):
return self.workflow.get_number()

View File

@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
import logging
from django import forms
from django.utils.translation import ugettext, ugettext_lazy as _
from django.utils.translation import ugettext
from .models import Registration
@@ -37,7 +37,7 @@ class RegistrationForm(forms.ModelForm):
if not val and self.instance.privacy_policy:
raise forms.ValidationError(
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',
)
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
import datetime
import logging
import uuid
from django.db import models
from django.urls import reverse
from django.utils import timezone
@@ -21,6 +22,7 @@ one_day = datetime.timedelta(1)
@python_2_unicode_compatible
class Registration(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
event = models.ForeignKey(Event, related_name='registrations')
created_at = models.DateTimeField(auto_now_add=True)
@@ -108,7 +110,7 @@ class Registration(models.Model):
elif event.last_day:
last_day = event.last_day
elif event.alt_first_day:
last_day = event.alt_fisrt_day
last_day = event.alt_first_day
else:
last_day = event.first_day
return timezone.make_aware(datetime.datetime.combine(last_day + one_day * 7, midnight))

View File

@@ -98,7 +98,11 @@
{% endif %}
<br />
{% 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.mode == 'training' %}
<strong>{% trans 'Ausbildungsteam' %}:</strong>

View File

@@ -4,6 +4,17 @@
{% 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 %}
<div class="row">
<div class="col-sm-12">
@@ -26,7 +37,17 @@
{% render_event_facts event %}
</li>
<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>
</li>
</ul>

View File

@@ -5,7 +5,7 @@
{% block page-container-fluid %}
<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">
<thead>
<tr>
@@ -24,7 +24,12 @@
</a>
</div>
<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 class="pull-left" style="margin-right: 12px;">
{% with event.sport as sport %}
@@ -53,9 +58,11 @@
<li class="list-group-item">
{% render_event_facts event %}
</li>
{% if not event.is_deadline_expired %}
<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>
{% endif %}
</ul>
</div>
</div>

View File

@@ -37,7 +37,7 @@ class EventListView(generic.ListView):
'published', 'published_web', 'published_facebook'))
filter &= Q(planned_publication_date__isnull=True) | Q(planned_publication_date__lte=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()
@@ -55,7 +55,7 @@ class EventDetailView(generic.DetailView):
'published', 'published_web', 'published_facebook'))
filter &= Q(planned_publication_date__isnull=True) | Q(planned_publication_date__lte=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()