diff --git a/schoolapps/aub/admin.py b/schoolapps/aub/admin.py index 71d2503d76705d334c8bddd17ed18091c6e4980d..c2ddf8b0d068c82a9b3ab0db58e214cea07391ac 100755 --- a/schoolapps/aub/admin.py +++ b/schoolapps/aub/admin.py @@ -1,6 +1,4 @@ from django.contrib import admin -from .models import Aub, Status +from .models import Aub -# Register your models here. admin.site.register(Aub) -admin.site.register(Status) diff --git a/schoolapps/aub/filters.py b/schoolapps/aub/filters.py index cc5f5f0c2f8de9861e1c39ef23046b5b41e88764..c6a74a1dda8b4e6eef83c5b62124484aa893c415 100644 --- a/schoolapps/aub/filters.py +++ b/schoolapps/aub/filters.py @@ -1,7 +1,7 @@ from django import forms from django.contrib.auth.models import User import django_filters -from .models import Aub, Status +from .models import Aub class AUBFilter(django_filters.FilterSet): @@ -12,20 +12,9 @@ class AUBFilter(django_filters.FilterSet): user_ids = [(str(user.id),user.username) for user in users] return user_ids - def get_status_choices(): - status_values = list(Status.objects.values_list('name')) - status_ids = [(i+1,name[0]) for i,name in enumerate(status_values)] - return status_ids - #print('status_values:', get_status_choices()) - print('users', getAUBUsers()) - #timerangechoices = [('today','Heute'),('thisWeek','Diese Woche'), ('thisMonth','Dieser Monat')] - #timerange = django_filters.ChoiceFilter(label='Zeitumfang', choices=timerangechoices) created_by = django_filters.ChoiceFilter(label='Von', choices=getAUBUsers()) - #status_choices = [('1','In Bearbeitung 1'),('2','In Bearbeitung 2'),('3','Genehmigt'),('4','Abgelehnt')] - #status = django_filters.ChoiceFilter(label='Status', choices=get_status_choices(), initial='In Bearbeitung 1') + class Meta: model = Aub fields = ['created_by',] - #fields = ['created_by', 'status'] - #ordering = 'status' diff --git a/schoolapps/aub/models.py b/schoolapps/aub/models.py index e2d196f3287f6eb114ddd19e6e56722bb96693a7..67012928052cf240af3e7708ee474579ec3d1ddf 100755 --- a/schoolapps/aub/models.py +++ b/schoolapps/aub/models.py @@ -9,19 +9,29 @@ def get_default_user(): return user.id -class Status(models.Model): - name = models.CharField(max_length=100) - style_classes = models.CharField(max_length=200) +class Status(): + def __init__(self, name, style_class): + self.name = name + self.style_class = style_class def __str__(self): return self.name +status_list = [ + Status(name='In Bearbeitung 1', style_class='orange'), + Status(name='In Bearbeitung 2', style_class='yellow'), + Status(name='Genehmigt', style_class='green'), + Status(name='Abgelehnt', style_class='red'), + ] +print("status_list[0].name :", status_list[0].name) -def get_default_status(): - status, created = Status.objects.get_or_create(name='In Bearbeitung 1', style_classes='orange') - return status.id +# def get_default_status(): +# status, created = Status.objects.get_or_create(name='In Bearbeitung 1', style_classes='orange') +# return status.id +# + class Aub(models.Model): # Time from_date = models.DateField(default=date.today) @@ -31,13 +41,22 @@ class Aub(models.Model): # Information description = models.TextField() - status = models.ForeignKey(Status, related_name='aubs', on_delete=models.SET(get_default_status()), - default=get_default_status()) +# status = models.ForeignKey(Status, related_name='aubs', on_delete=models.SET(get_default_status()), +# default=get_default_status()) +# status_choices = [(IN_PROCESSING_STATUS.id, IN_PROCESSING_STATUS.name), +# (SEMI_ALLOWED_STATUS.id, SEMI_ALLOWED_STATUS.name), +# (ALLOWED_STATUS.id, ALLOWED_STATUS.name), +# (NOT_ALLOWED_STATUS.id, NOT_ALLOWED_STATUS.name)] + status = models.IntegerField(default=0) + # Meta created_by = models.ForeignKey(User, related_name='aubs', on_delete=models.SET(get_default_user()), default=get_default_user()) created_at = models.DateTimeField(default=timezone.now) + def getStatus(self): + return status_list[self.status] + def __str__(self): return self.description diff --git a/schoolapps/aub/templates/aub/archive.html b/schoolapps/aub/templates/aub/archive.html index 6688c3af4336934d7ffaa5eaf0e52f4cd18f600e..7a2b4972a45988710078469b65daf53c1b997488 100755 --- a/schoolapps/aub/templates/aub/archive.html +++ b/schoolapps/aub/templates/aub/archive.html @@ -5,7 +5,7 @@ <form method="GET"> {{ filter.form.as_p }} - <button type="submit" class="waves-effect waves-light btn"> + <button type="submit" class="waves-effect waves-light btn green"> <i class="material-icons left">refresh</i> Filter aktualisieren </button> </form> @@ -36,13 +36,13 @@ <form action="" method="POST" class="right"> {% csrf_token %} <input type="hidden" value="{{ aub.id }}" name="aub-id"> - {% if aub.status_id != 3 %} + {% if aub.status != 2 %} <button type="submit" name="allow" class="waves-effect waves-light btn-flat btn-flat-large" title="Annehmen"> <i class="material-icons center green-text">check_circle</i> </button> {% endif %} - {% if aub.status_id != 4 %} + {% if aub.status != 3 %} <button type="submit" name="deny" class="waves-effect waves-light btn-flat btn-flat-large" title="Ablehnen"> <i class="material-icons center red-text">not_interested</i> @@ -53,7 +53,7 @@ </div--> <div class="col s12 m2"> <p> - <span class="badge new {{ aub.status.style_classes }}">{{ aub.status.name }}</span> + <span class="badge new {{ aub.getStatus.style_class }}">{{ aub.getStatus.name }}</span> </p> </div> </div> diff --git a/schoolapps/aub/templates/aub/check.html b/schoolapps/aub/templates/aub/check.html index cf0c57424e0826aac3016722d18c7c6223c8c62c..270dd1eb4412fa4f339142ab272ca36bd7e5fb2d 100755 --- a/schoolapps/aub/templates/aub/check.html +++ b/schoolapps/aub/templates/aub/check.html @@ -28,13 +28,13 @@ <form action="" method="POST" class="right"> {% csrf_token %} <input type="hidden" value="{{ aub.id }}" name="aub-id"> - {% if aub.status_id != 3 %} + {% if aub.status.id != 2 %} <button type="submit" name="allow" class="waves-effect waves-light btn-flat btn-flat-large" title="Annehmen"> <i class="material-icons center green-text">check_circle</i> </button> {% endif %} - {% if aub.status_id != 4 %} + {% if aub.status.id != 3 %} <button type="submit" name="deny" class="waves-effect waves-light btn-flat btn-flat-large" title="Ablehnen"> <i class="material-icons center red-text">not_interested</i> @@ -44,7 +44,7 @@ </div> <div class="col s12 m2"> <p> - <span class="badge new {{ aub.status.style_classes }}">{{ aub.status.name }}</span> + <span class="badge new {{ aub.getStatus.style_class }}">{{ aub.getStatus.name }}</span> </p> </div> </div> diff --git a/schoolapps/aub/templates/aub/details.html b/schoolapps/aub/templates/aub/details.html index 01fbad0975cbdc6920b721bb42afbd87ed18f6cc..d75a517f021f673292dbcea28eea791642034bcf 100755 --- a/schoolapps/aub/templates/aub/details.html +++ b/schoolapps/aub/templates/aub/details.html @@ -6,9 +6,12 @@ </strong> <h5>{{ aub.from_date }}, {{ aub.from_time }} Uhr bis <br /> {{ aub.to_date }}, {{ aub.to_time }} Uhr </h5> - <p><strong>Status: <span class="badge new {{ aub.status.style_classes }}">{{ aub.status.name }}</span></strong></p> + <p><strong>Status: <span class="badge new no-float {{ aub.getStatus.style_class }}">{{ aub.getStatus.name }}</span></strong></p> <p><strong>Beschreibung:</strong> {{ aub.description }}</p> - <hr> + + <a href="{% url 'aub_index' %}" class="waves-effect waves-light btn green"> + <i class="material-icons left">home</i> + Zurück zur Übersicht</a> </main> {% include 'partials/footer.html' %} \ No newline at end of file diff --git a/schoolapps/aub/templates/aub/index.html b/schoolapps/aub/templates/aub/index.html index 87199d4606e7ec955352756d2b8cf1aeba9ee2ac..4c254276114aa40e6693dfb6b5d94f5835729968 100755 --- a/schoolapps/aub/templates/aub/index.html +++ b/schoolapps/aub/templates/aub/index.html @@ -32,7 +32,7 @@ </div> <div class="col s12 m4"> <p> - {% if aub.status_id == 1 %} + {% if aub.status == 0 %} <form action="{% url 'aub_edit' aub.id %}" class="right"> {% csrf_token %} <button type="submit" name="edit" class="waves-effect waves-light btn-flat btn-flat-medium" title="Bearbeiten"> @@ -40,7 +40,7 @@ </button> </form> {% endif %} - {% if aub.status_id == 1 or aub.status_id == 2 %} + {% if aub.status == 0 or aub.status == 1 %} <form action="" method="POST" class="right"> {% csrf_token %} <input type="hidden" value="{{ aub.id }}" name="aub-id"> @@ -53,7 +53,7 @@ </div> <div class="col s12 m2"> - <p><span class="badge new {{ aub.status.style_classes }}">{{ aub.status.name }}</span></p> + <p><span class="badge new {{ aub.getStatus.style_class }}">{{ aub.getStatus.name }}</span></p> </div> </div> diff --git a/schoolapps/aub/views.py b/schoolapps/aub/views.py index 500fde3f3762302400a00e40dfe859e0db518ab5..669d206481dc72fe251939a33ae3a9f2bbd3050a 100755 --- a/schoolapps/aub/views.py +++ b/schoolapps/aub/views.py @@ -12,15 +12,10 @@ from django.core.exceptions import ValidationError from .apps import AubConfig from dashboard.models import Activity, register_notification from .forms import ApplyForAUBForm -from .models import Aub, Status +from .models import Aub, status_list from .filters import AUBFilter from .decorators import check_own_aub -IN_PROCESSING_STATUS = Status.objects.get_or_create(name='In Bearbeitung 1', style_classes='orange')[0] -SEMI_ALLOWED_STATUS = Status.objects.get_or_create(name='In Bearbeitung 2', style_classes='yellow')[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 @permission_required('aub.apply_for_aub') @@ -131,9 +126,9 @@ def check1(request): aub_id = request.POST['aub-id'] aub = Aub.objects.get(id=aub_id) if 'allow' in request.POST: - Aub.objects.filter(id=aub_id).update(status=SEMI_ALLOWED_STATUS) + Aub.objects.filter(id=aub_id).update(status=1) elif 'deny' in request.POST: - Aub.objects.filter(id=aub_id).update(status=NOT_ALLOWED_STATUS) + Aub.objects.filter(id=aub_id).update(status=3) # Notify user register_notification(title="Ihr Antrag auf Unterrichtsbefreiung wurde abgelehnt", description="Ihr Antrag auf Unterrichtsbefreiung vom {}, {} Uhr bis {}, {} Uhr wurde von der " @@ -147,7 +142,7 @@ def check1(request): link=request.build_absolute_uri(reverse('aub_details', args=[aub.id])) ) - aub_list = Aub.objects.filter(status=IN_PROCESSING_STATUS).order_by('created_at') + aub_list = Aub.objects.filter(status=0).order_by('created_at') aubs = AUBFilter(request.GET, queryset=aub_list) return render(request, 'aub/check.html', {'filter': aubs}) @@ -161,7 +156,7 @@ def check2(request): aub = Aub.objects.get(id=aub_id) if 'allow' in request.POST: # Update status - Aub.objects.filter(id=aub_id).update(status=ALLOWED_STATUS) + Aub.objects.filter(id=aub_id).update(status=2) # Notify user register_notification(title="Ihr Antrag auf Unterrichtsbefreiung wurde genehmigt", @@ -176,7 +171,7 @@ def check2(request): ) elif 'deny' in request.POST: # Update status - Aub.objects.filter(id=aub_id).update(status=NOT_ALLOWED_STATUS) + Aub.objects.filter(id=aub_id).update(status=4) # Notify user register_notification(title="Ihr Antrag auf Unterrichtsbefreiung wurde abgelehnt", @@ -191,7 +186,7 @@ def check2(request): link=request.build_absolute_uri(reverse('aub_details', args=[aub.id])) ) - aub_list = Aub.objects.filter(status=SEMI_ALLOWED_STATUS).order_by('created_at') + aub_list = Aub.objects.filter(status=1).order_by('created_at') aubs = AUBFilter(request.GET, queryset=aub_list) return render(request, 'aub/check.html', {'filter': aubs}) @@ -202,8 +197,8 @@ def archive(request): order_crit = '-from_date' if 'created_by' in request.GET: item = int(request.GET['created_by']) - aub_list = Aub.objects.filter((Q(status__exact=ALLOWED_STATUS) | Q(status__exact=NOT_ALLOWED_STATUS)) & Q(created_by=item)).order_by(order_crit) + aub_list = Aub.objects.filter((Q(status__exact=2) | Q(status__exact=3)) & Q(created_by=item)).order_by(order_crit) else: - aub_list = Aub.objects.filter(Q(status__exact=ALLOWED_STATUS) | Q(status__exact=NOT_ALLOWED_STATUS)).order_by(order_crit) + aub_list = Aub.objects.filter(Q(status__exact=2) | Q(status__exact=3)).order_by(order_crit) aub_filter = AUBFilter(request.GET, queryset=aub_list) return render(request, 'aub/archive.html', {'filter': aub_filter}) diff --git a/schoolapps/dashboard/migrations/0002_auto_20190102_1724.py b/schoolapps/dashboard/migrations/0002_auto_20190102_1724.py deleted file mode 100644 index d417792e428a0b1edf1efd4325e1cb57dc5bba46..0000000000000000000000000000000000000000 --- a/schoolapps/dashboard/migrations/0002_auto_20190102_1724.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 2.1.4 on 2019-01-02 16:24 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('dashboard', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='activity', - name='user', - ), - migrations.RemoveField( - model_name='notification', - name='user', - ), - ] diff --git a/schoolapps/dashboard/models.py b/schoolapps/dashboard/models.py index 07630ea6c702c64dbfe20a0f9f4ae2980e09e8ff..d1d4651264b00bc90e07177d1d01b4b6f734a69d 100755 --- a/schoolapps/dashboard/models.py +++ b/schoolapps/dashboard/models.py @@ -13,7 +13,7 @@ def get_default_user(): # Create your models here. class Activity(models.Model): - user = models.ForeignKey(User, models.CASCADE, default=get_default_user()) + user = models.ForeignKey(to=User, on_delete=models.CASCADE, default=get_default_user()) title = models.CharField(max_length=200) description = models.TextField(max_length=500) @@ -28,7 +28,7 @@ class Activity(models.Model): class Notification(models.Model): # to = models.ManyToManyField(User, related_name='notifications') - user = models.ForeignKey(User, on_delete=models.CASCADE, default=get_default_user(), related_name="notifications") + user = models.ForeignKey(to=User, on_delete=models.CASCADE, default=get_default_user(), related_name="notifications") title = models.CharField(max_length=200) description = models.TextField(max_length=500) link = models.URLField(blank=True) diff --git a/schoolapps/static/common/style.css b/schoolapps/static/common/style.css index 8d0691cf52315f3165236910d2faabdeafdfa2b3..52b54d1feff41cb1e1b3cae216d445ffae9f9529 100755 --- a/schoolapps/static/common/style.css +++ b/schoolapps/static/common/style.css @@ -103,6 +103,9 @@ span.badge.new { height: 26px; } +span.badge.no-float { + float: none; +} /*span.badge {*/ /*width: 9em;*/ /*line-height: 4ex;*/