diff --git a/web_dev/sas_web/meingoethopia/admin.py b/web_dev/sas_web/meingoethopia/admin.py index 96bc9c0..2d5e9b6 100644 --- a/web_dev/sas_web/meingoethopia/admin.py +++ b/web_dev/sas_web/meingoethopia/admin.py @@ -1,6 +1,14 @@ from django.contrib import admin from .models import Betrieb, Partei, PresidentCandidate, Question from startpage.models import Banned +from django.contrib.admin import helpers +from django.shortcuts import render +from django.template.defaulttags import register + + +@register.filter +def get_item(dictionary, key): + return dictionary.get(key) def ban_ip(modeladmin, request, queryset): @@ -12,11 +20,36 @@ def ban_ip(modeladmin, request, queryset): ban_ip.short_description = "Urheber ausgewählter Eintrage verbannen" +def create_overview(modeladmin, request, queryset): + if request.POST.get('back'): + pass + else: + raummap = {} + for b in queryset: + if b.raum in raummap: + raummap[b.raum]["anzahl"] += 1 + raummap[b.raum]["belegung"] += b.raumforderung + else: + raummap[b.raum] = {"anzahl": 1, "belegung": b.raumforderung} + context = {'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, + 'betriebe': queryset, + 'arbeitnehmer_gesamt': sum([b.arbeitnehmerzahl for b in + queryset]), + 'raummap': raummap, + 'title': "Betriebsübersicht"} + return render(request, 'meingoethopia/betriebe_overview.html', context) + +create_overview.short_description = "Übersicht erstellen" + + # Register your models here. class BetriebAdmin(admin.ModelAdmin): - list_display = ('name', 'manager', 'confirmed', 'approved') - list_filter = ('confirmed', 'approved') - actions = [ban_ip] + list_display = ('name', 'manager', 'aufsicht', 'raum', + 'arbeitnehmerzahl_kurz', 'confirmed', + 'approved') + list_filter = ('confirmed', 'approved', 'raum') + search_fields = ('name', 'manager', 'raum', 'aufsicht') + actions = [ban_ip, create_overview] class ParteiAdmin(admin.ModelAdmin): diff --git a/web_dev/sas_web/meingoethopia/models.py b/web_dev/sas_web/meingoethopia/models.py index 990217e..5e2afd0 100644 --- a/web_dev/sas_web/meingoethopia/models.py +++ b/web_dev/sas_web/meingoethopia/models.py @@ -6,11 +6,26 @@ class Betrieb(models.Model): name = models.CharField('Name', max_length=100) manager = models.CharField('Betriebsleiter', max_length=200) email = models.EmailField('Kontakt Email') + arbeitnehmerzahl = models.IntegerField('Anzahl Arbeitnehmer', + default=0, + help_text='Gesamtzahl aller angestellten ' + 'Arbeitnehmer/-innen inklusive Betriebsleiter/-innen') + arbeitnehmerzahl.short_description = 'Stellen' + raumforderung = models.FloatField('Raumanforderung', default=0, + help_text='In Zahlen ausgedrückter ' + 'Raumwunsch (halber Raum = 0,5)') + raum = models.IntegerField('Raum', default=102) + aufsicht = models.CharField('Aufsicht', max_length=100, default='keine') + kredit = models.IntegerField('Kreditwunsch', default=0) business_idea = models.TextField('Idee') ip_address = models.CharField('IP Adresse', max_length=50, blank=True) confirmed = models.BooleanField('Bestätigt', default=False) approved = models.BooleanField('Zugelassen', default=False) + def arbeitnehmerzahl_kurz(self): + return self.arbeitnehmerzahl + arbeitnehmerzahl_kurz.short_description = 'Stellen' + def __str__(self): return str(self.name) diff --git a/web_dev/sas_web/meingoethopia/templates/meingoethopia/betriebe_overview.html b/web_dev/sas_web/meingoethopia/templates/meingoethopia/betriebe_overview.html new file mode 100644 index 0000000..572d58f --- /dev/null +++ b/web_dev/sas_web/meingoethopia/templates/meingoethopia/betriebe_overview.html @@ -0,0 +1,36 @@ +{% extends "admin/base_site.html" %} + +{% block content %} + +
Insgesamt sind {{ arbeitnehmer_gesamt }} Schüler durch {{ betriebe.count }} Betriebe versorgt.
+ +| Raumnummer | +Anzahl an Betrieben | +Theoretische Belegung | +
|---|---|---|
| {{ raum }} | +{{ data|get_item:"anzahl" }} | + ++ 1 %} color="red"{% endif %}> + {{ data|get_item:"belegung" }} + + | +
- Bitte gründet noch Betriebe: Formulare hängen im SMV-Schaukasten unter dem
- Vertretungsplan. Ihr könnt auch schon
- hier euren Betrieb anmelden.
-
-
- Momentan beschließen die Ausschüsse über die Personalfrage, ihr werdet persönlich benachrichtigt werden, falls ihr einen Beamtenposten erhalten haben solltet.
-
-
-
Nach den Pfingstferien könnt ihr euch in die Listen der Betriebe eintragen, um + euch dort als Arbeitnehmer/-innen zu bewerben.