Skip to content
Snippets Groups Projects
Commit d51d8ac6 authored by Frank Poetzsch-Heffter's avatar Frank Poetzsch-Heffter
Browse files

AUB: Antragsverwaltung vervollständigt.

parent d6e34c35
No related branches found
No related tags found
1 merge request!86Merge school-apps
......@@ -4,10 +4,8 @@ from django.utils import timezone
class ApplyForAUBForm(forms.Form):
from_date = forms.DateField(help_text='Bitte geben Sie den Anfangszeitpunkt der gewünschten Befreiung an.',
initial='')
to_date = forms.DateField(help_text='Bitte geben Sie den Endpunkt der gewünschten Befreiung an.',
initial='')
from_date = forms.DateField(initial='')
to_date = forms.DateField(initial='')
from_time = forms.TimeField(initial='')
to_time = forms.TimeField(initial='')
......@@ -19,9 +17,9 @@ class ApplyForAUBForm(forms.Form):
def clean_from_date(self):
data = self.cleaned_data['from_date']
print(data,timezone.datetime.time(timezone.now()) )
if data < timezone.datetime.date(timezone.now()):
raise ValidationError('Die Befreiung kann nur zukünftig durchgeführt werden.')
raise ValidationError('Die Befreiung kann nur zukünftig durchgeführt werden (Datumsfehler).')
return data
......@@ -35,9 +33,9 @@ class ApplyForAUBForm(forms.Form):
def clean_from_time(self):
data = self.cleaned_data['from_time']
if data < timezone.datetime.time(timezone.now()):
raise ValidationError('Die Befreiung kann nur zukünftig durchgeführt werden.')
raise ValidationError('Die Befreiung kann nur zukünftig durchgeführt werden (Zeitfehler).')
return data
......
{% include 'partials/header.html' %}
<main>
<h5>Antrag auf Unterrichtsbefreiung stellen</h5>
<h5>Antrag auf Unterrichtsbefreiung</h5>
Hiermit beantrage ich die Freistellung vom Unterricht wie folgt.
<form action="" method="post">
{% csrf_token %}
<div class="flow-text red-text">
......@@ -13,11 +13,15 @@
<div class="col s12 m6">
<h6>Beginn der Befreiung:</h6>
<div class="red-text">{{ form.from_date.errors }}</div>
<div class="red-text">{{ form.from_time.errors }}</div>
<div class="input-field col s8">
<div class="col s2">
Von:
</div>
<div class="input-field col s6">
<input id="{{ form.from_date.id_for_label }}" type="text"
required name="{{ form.from_date.html_name }}"
class="datepicker" value="{{ form.from_date.value }}">
......@@ -39,11 +43,13 @@
<div class="col s12 m6">
<h6>Ende der Befreiung:</h6>
<div class="red-text">{{ form.to_date.errors }}</div>
<div class="red-text">{{ form.to_time.errors }}</div>
<div class="input-field col s8">
<div class="col s2">
Bis:
</div>
<div class="input-field col s6">
<input id="{{ form.to_date.id_for_label }}" type="text"
required name="{{ form.to_date.html_name }}"
class="datepicker" value="{{ form.to_date.value }}">
......
{% include 'partials/header.html' %}
<main>
<h5>Ausstehende Anträge</h5>
<ul class="collection">
{% for aub in aubs %}
<li class="collection-item">
<div class="row">
<div class="col s12 m8">
<p class="title">
<i class="material-icons left">access_time</i>
{{ aub.from_dt }} bis {{ aub.to_dt }}
</p>
<p><a href="{% url 'aub_details' aub.id %}">{{ aub.description }}</a></p>
</div>
<div class="col s12 m4">
<p>
<form action="" method="POST" class="right">
{% csrf_token %}
<input type="hidden" value="{{ aub.id }}" name="aub-id">
<button type="submit" name="allow" class="waves-effect waves-light btn-flat btn-flat-large">
<i class="material-icons center green-text">check_circle</i>
</button>
<button type="submit" name="deny" class="waves-effect waves-light btn-flat btn-flat-large">
<i class="material-icons center red-text">cancel</i>
</button>
</form>
</p>
</div>
</div>
</li>
{% endfor %}
</ul>
</main>
{% include 'partials/footer.html' %}
......@@ -6,5 +6,6 @@ urlpatterns = [
path('', views.index, name='aub_index'),
path('details/<int:aub_id>/', views.details, name='aub_details'),
path('apply_for', views.apply_for, name='aub_apply_for'),
path('applied_for', views.applied_for, name='aub_applied_for')
path('applied_for', views.applied_for, name='aub_applied_for'),
path('check', views.check, name='aub_check'),
]
......@@ -6,9 +6,9 @@ from django.utils import timezone
from .forms import ApplyForAUBForm
from .models import Aub, Status
IN_PROCESSING_STATUS = Status.objects.get_or_create(name='In Bearbeitung', style_classes='orange')
ALLOWED_STATUS = Status.objects.get_or_create(name='Genehmigt', style_classes='green')
NOT_ALLOWED_STATUS = Status.objects.get_or_create(name='Abgelehnt', style_classes='red')
IN_PROCESSING_STATUS = Status.objects.get_or_create(name='In Bearbeitung', style_classes='orange')[0]
ALLOWED_STATUS = Status.objects.get_or_create(name='Genehmigt', style_classes='green')[0]
NOT_ALLOWED_STATUS = Status.objects.get_or_create(name='Abgelehnt', style_classes='red')[0]
@login_required
......@@ -66,3 +66,20 @@ def applied_for(request):
}
return render(request, 'aub/applied_for.html', context)
@login_required
@permission_required('aub.check_aub')
def check(request):
if request.method == 'POST':
if 'aub-id' in request.POST:
aub_id = request.POST['aub-id']
if 'allow' in request.POST:
Aub.objects.filter(id=aub_id).update(status=ALLOWED_STATUS)
elif 'deny' in request.POST:
Aub.objects.filter(id=aub_id).update(status=NOT_ALLOWED_STATUS)
aubs = Aub.objects.filter(status=IN_PROCESSING_STATUS)
context = {
'aubs': aubs
}
return render(request, 'aub/check.html', context)
......@@ -114,4 +114,13 @@ span.badge.new::after {
.timetable-title-card .card-content {
padding: 10px;
text-align: center;
}
\ No newline at end of file
}
/***************/
.btn-flat-large {
line-height: 60px;
height: 60px;
}
.btn-flat-large i {
font-size: 4rem;
}
\ No newline at end of file
......@@ -105,6 +105,7 @@
</li>
<li><a class="subheader">Lehrerfunktionen</a></li>
<li><a href="{% url 'aub_index' %}">Antrag auf Unterrichtsbefreiung</a></li>
<li><a href="{% url 'aub_check' %}">Anträge genehmigen</a></li>
<li>
<div class="divider"></div>
</li>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment