Skip to content
Snippets Groups Projects
Commit ea40274f authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Include time fields (see #4) | Include detail view (see #5) [AUB]

parent c016b2c0
No related branches found
No related tags found
1 merge request!86Merge school-apps
......@@ -4,29 +4,48 @@ from django.utils import timezone
class ApplyForAUBForm(forms.Form):
from_dt = forms.DateTimeField(help_text="Bitte geben Sie den Anfangszeitpunkt der gewünschten Befreiung an.")
to_dt = forms.DateTimeField(help_text="Bitte geben Sie den Endpunkt der gewünschten Befreiung an.")
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='')
description = forms.CharField()
from_time = forms.TimeField(initial='')
to_time = forms.TimeField(initial='')
def clean_from_dt(self):
data = self.cleaned_data['from_dt']
description = forms.CharField(initial='')
if data < timezone.now():
raise ValidationError("Die Befreiung kann nur zukünftig durchgeführt werden.")
def clean(self):
cleaned_data = super().clean()
def clean_from_date(self):
data = self.cleaned_data['from_date']
if data < timezone.datetime.date(timezone.now()):
raise ValidationError('Die Befreiung kann nur zukünftig durchgeführt werden.')
return data
def clean_to_dt(self):
data = self.cleaned_data['to_dt']
# from_dt = self.cleaned_data['from_dt']
def clean_to_date(self):
data = self.cleaned_data['to_date']
# if data < timezone.datetime.date(timezone.now()):
# raise ValidationError('Die Befreiung kann nur zukünftig durchgeführt werden.')
return data
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.')
return data
if data < timezone.now():
raise ValidationError("Die Befreiung kann nur zukünftig durchgeführt werden.")
def clean_to_time(self):
data = self.cleaned_data['to_time']
# if from_dt > data:
# raise ValidationError("Die Befreiung kann nicht an einem Datum enden, " +
# "dass zum Beginn der Befreiung schon in der Vergangenheit liegt.")
# if data < timezone.datetime.time(timezone.now()):
# raise ValidationError('Die Befreiung kann nur zukünftig durchgeführt werden.')
return data
......@@ -34,6 +53,6 @@ class ApplyForAUBForm(forms.Form):
data = self.cleaned_data['description']
if len(data) < 10:
raise ValidationError("Bitte teilen Sie uns etwas mehr über Ihren Befreiungswunsch mit.")
raise ValidationError('Bitte teilen Sie uns etwas mehr über Ihren Befreiungswunsch mit.')
return data
# Generated by Django 2.0 on 2018-01-01 16:22
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('aub', '0010_auto_20180101_1634'),
]
operations = [
migrations.RemoveField(
model_name='aub',
name='from_dt',
),
migrations.RemoveField(
model_name='aub',
name='to_dt',
),
migrations.AddField(
model_name='aub',
name='from_date',
field=models.DateField(default=django.utils.timezone.now),
),
migrations.AddField(
model_name='aub',
name='from_time',
field=models.TimeField(default=django.utils.timezone.now),
),
migrations.AddField(
model_name='aub',
name='to_date',
field=models.DateField(default=django.utils.timezone.now),
),
migrations.AddField(
model_name='aub',
name='to_time',
field=models.TimeField(default=django.utils.timezone.now),
),
]
# Generated by Django 2.0 on 2018-01-01 16:48
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('aub', '0011_auto_20180101_1722'),
]
operations = [
migrations.RemoveField(
model_name='aub',
name='from_date',
),
migrations.RemoveField(
model_name='aub',
name='from_time',
),
migrations.RemoveField(
model_name='aub',
name='to_date',
),
migrations.RemoveField(
model_name='aub',
name='to_time',
),
migrations.AddField(
model_name='aub',
name='from_dt',
field=models.DateTimeField(default=django.utils.timezone.now),
),
migrations.AddField(
model_name='aub',
name='to_dt',
field=models.DateTimeField(default=django.utils.timezone.now),
),
]
......@@ -11,26 +11,54 @@
<div class="row">
<!-- From date and time -->
<div class="col s12 m6">
<div class="red-text">{{ form.from_dt.errors }}</div>
<div class="input-field">
<input id="{{ form.from_dt.id_for_label }}" type="text" required name="{{ form.from_dt.html_name }}"
class="datepicker" value="{{ form.from_dt.value }}">
<label for="{{ form.from_dt.id_for_label }}">Beginn der Befreiung</label>
<span>{{ form.from_dt.help_text }}</span>
<h6>Beginn der Befreiung:</h6>
<div class="red-text">{{ form.from_ate.errors }}</div>
<div class="red-text">{{ form.from_time.errors }}</div>
<div class="input-field col s8">
<input id="{{ form.from_date.id_for_label }}" type="text"
required name="{{ form.from_date.html_name }}"
class="datepicker" value="{{ form.from_date.value }}">
<label for="{{ form.from_date.id_for_label }}">Datum</label>
</div>
<div class="input-field col s4">
<input id="{{ form.from_time.id_for_label }}" type="text"
required name="{{ form.from_time.html_name }}"
class="timepicker" value="{{ form.from_time.value }}">
<label for="{{ form.from_time.id_for_label }}">Uhrzeit</label>
</div>
<span>{{ form.from_date.help_text }}</span>
<span>{{ form.from_time.help_text }}</span>
</div>
<!-- To date and time -->
<div class="col s12 m6">
<div class="red-text">{{ form.to_dt.errors }}</div>
<div class="input-field">
<input id="{{ form.to_dt.id_for_label }}" type="text" required name="{{ form.to_dt.html_name }}"
class="datepicker" value="{{ form.to_dt.value }}">
<label for="{{ form.to_dt.id_for_label }}">Ende der Befreiung</label>
<span>{{ form.to_dt.help_text }}</span>
<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">
<input id="{{ form.to_date.id_for_label }}" type="text"
required name="{{ form.to_date.html_name }}"
class="datepicker" value="{{ form.to_date.value }}">
<label for="{{ form.to_date.id_for_label }}">Datum</label>
</div>
<div class="input-field col s4">
<input id="{{ form.to_time.id_for_label }}" type="text"
required name="{{ form.to_time.html_name }}"
class="timepicker" value="{{ form.to_time.value }}">
<label for="{{ form.to_time.id_for_label }}">Uhrzeit</label>
</div>
<span>{{ form.to_date.help_text }}</span>
<span>{{ form.to_time.help_text }}</span>
</div>
</div>
......
{% include 'partials/header.html' %}
<main>
<h1>{{todo.title}}</h1>
<p>{{todo.text}}</p>
<hr />
<b>
created at: {{todo.created_at}}
</b>
<h5>{{ aub.from_dt }} bis {{ aub.to_dt }}</h5>
<p><strong>Status: <span class="badge new {{ aub.status.style_classes }}">{{ aub.status.name }}</span></strong></p>
<p>{{ aub.description }}</p>
<hr>
<strong>
Eingereicht am {{ aub.created_at.date }}
von {{ aub.created_by.first_name }} {{ aub.created_by.last_name }}
</strong>
</main>
{% include 'partials/footer.html' %}
\ No newline at end of file
from django.contrib.auth.decorators import login_required, permission_required
from django.http import HttpResponseRedirect
from django.shortcuts import render, redirect
from django.shortcuts import render, redirect, get_object_or_404
from django.urls import reverse
from django.utils import timezone
from .forms import ApplyForAUBForm
from .models import Aub, Status
......@@ -10,6 +10,7 @@ IN_PROCESSING_STATUS = Status.objects.get_or_create(name='In Bearbeitung', style
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')
@login_required
@permission_required('aub.apply_for_aub')
def index(request):
......@@ -23,8 +24,8 @@ def index(request):
@login_required
@permission_required('aub.apply_for_aub')
def details(request, todo_id):
todo = Aub.objects.get(id=todo_id)
def details(request, aub_id):
aub = get_object_or_404(Aub, id=aub_id)
context = {
'aub': aub
}
......@@ -38,8 +39,8 @@ def apply_for(request):
form = ApplyForAUBForm(request.POST)
if form.is_valid():
from_dt = form.cleaned_data['from_dt']
to_dt = form.cleaned_data['to_dt']
from_dt = timezone.datetime.combine(form.cleaned_data['from_date'], form.cleaned_data['from_time'])
to_dt = timezone.datetime.combine(form.cleaned_data['to_date'], form.cleaned_data['to_time'])
description = form.cleaned_data['description']
aub = Aub(from_dt=from_dt, to_dt=to_dt, description=description, created_by=request.user)
......
......@@ -44,7 +44,17 @@
},
// Set monday as first day of week
firstDay: 1
firstDay: 1,
//autoClose: true
});
// Initialize timepicker [MAT]
$('.timepicker').timepicker({
twelveHour: false,
//autoClose: true,
cancelText: 'Abbrechen',
clearText: 'Löschen',
doneText: 'OK'
});
});
......
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