| @@ -1,5 +1,6 @@ | |||||
| from django.contrib import admin | from django.contrib import admin | ||||
| from .models import Betrieb, Partei, PresidentCandidate, Question, Angestellter | |||||
| from .models import Betrieb, Partei, PresidentCandidate, Question, Angestellter,\ | |||||
| Aufsicht, Betriebsaufsicht | |||||
| from startpage.models import Banned | from startpage.models import Banned | ||||
| from django.contrib.admin import helpers | from django.contrib.admin import helpers | ||||
| from django.shortcuts import render | from django.shortcuts import render | ||||
| @@ -84,11 +85,16 @@ def create_overview(modeladmin, request, queryset): | |||||
| create_overview.short_description = "Übersicht erstellen" | create_overview.short_description = "Übersicht erstellen" | ||||
| class AufsichtInline(admin.TabularInline): | |||||
| model = Betriebsaufsicht | |||||
| extra = 0 | |||||
| # Register your models here. | # Register your models here. | ||||
| class BetriebAdmin(admin.ModelAdmin): | class BetriebAdmin(admin.ModelAdmin): | ||||
| list_display = ('name', 'manager', 'aufsicht', 'raum', | list_display = ('name', 'manager', 'aufsicht', 'raum', | ||||
| 'arbeiter_effektiv', 'punkt', | 'arbeiter_effektiv', 'punkt', | ||||
| 'approved') | |||||
| 'approved', 'beaufsichtigt') | |||||
| list_filter = ('confirmed', 'approved', 'raum') | list_filter = ('confirmed', 'approved', 'raum') | ||||
| search_fields = ('name', 'manager', 'raum', 'aufsicht') | search_fields = ('name', 'manager', 'raum', 'aufsicht') | ||||
| formfield_overrides = { | formfield_overrides = { | ||||
| @@ -96,6 +102,7 @@ class BetriebAdmin(admin.ModelAdmin): | |||||
| } | } | ||||
| actions = [ban_ip, create_overview] | actions = [ban_ip, create_overview] | ||||
| filter_horizontal = ('angestellte',) | filter_horizontal = ('angestellte',) | ||||
| inlines = [AufsichtInline] | |||||
| class ParteiAdmin(admin.ModelAdmin): | class ParteiAdmin(admin.ModelAdmin): | ||||
| @@ -122,8 +129,14 @@ class AngestellterAdmin(admin.ModelAdmin): | |||||
| list_filter = (ZugeteiltFilter,) | list_filter = (ZugeteiltFilter,) | ||||
| search_fields = ('name', 'klasse') | search_fields = ('name', 'klasse') | ||||
| class AufsichtAdmin(admin.ModelAdmin): | |||||
| list_display = ('name', 'show_stunden') | |||||
| search_fields = ('name',) | |||||
| admin.site.register(Betrieb, BetriebAdmin) | admin.site.register(Betrieb, BetriebAdmin) | ||||
| admin.site.register(Partei, ParteiAdmin) | admin.site.register(Partei, ParteiAdmin) | ||||
| admin.site.register(PresidentCandidate, PresidentAdmin) | admin.site.register(PresidentCandidate, PresidentAdmin) | ||||
| admin.site.register(Question, QuestionAdmin) | admin.site.register(Question, QuestionAdmin) | ||||
| admin.site.register(Angestellter, AngestellterAdmin) | admin.site.register(Angestellter, AngestellterAdmin) | ||||
| admin.site.register(Aufsicht, AufsichtAdmin) | |||||
| @@ -26,14 +26,33 @@ class Angestellter(models.Model): | |||||
| verbose_name_plural = 'Angestellte' | verbose_name_plural = 'Angestellte' | ||||
| class Aufsicht(models.Model): | |||||
| name = models.CharField('Name', max_length=100) | |||||
| stunden = models.IntegerField('Deputatsstunden', default=25, | |||||
| help_text='Verfügbare Deputatsstunde (Dreiviertel Stunden) von Dienstag bis Freitag') | |||||
| def __str__(self): | |||||
| return self.name | |||||
| def stunden_geleistet(self): | |||||
| return sum([n.teilstunden for n in self.betriebsaufsicht_set.all()]) | |||||
| def show_stunden(self): | |||||
| return "{}/{}".format(self.stunden_geleistet(), self.stunden) | |||||
| show_stunden.short_description = "Deputatsstunden" | |||||
| class Meta: | |||||
| verbose_name = 'Aufsicht' | |||||
| verbose_name_plural = 'Aufsichten' | |||||
| # Create your models here. | # Create your models here. | ||||
| class Betrieb(models.Model): | class Betrieb(models.Model): | ||||
| name = models.CharField('Name', max_length=100) | name = models.CharField('Name', max_length=100) | ||||
| manager = models.CharField('Betriebsleiter', max_length=200) | manager = models.CharField('Betriebsleiter', max_length=200) | ||||
| email = models.EmailField('Kontakt Email', blank=True) | email = models.EmailField('Kontakt Email', blank=True) | ||||
| arbeitnehmerzahl = models.IntegerField('Anzahl Arbeitnehmer', | arbeitnehmerzahl = models.IntegerField('Anzahl Arbeitnehmer', | ||||
| default=0, | |||||
| help_text='Gesamtzahl aller angestellten ' | |||||
| default=0, help_text='Gesamtzahl aller angestellten ' | |||||
| 'Arbeitnehmer/-innen inklusive Betriebsleiter/-innen') | 'Arbeitnehmer/-innen inklusive Betriebsleiter/-innen') | ||||
| arbeitnehmerzahl.short_description = 'Stellen' | arbeitnehmerzahl.short_description = 'Stellen' | ||||
| raumforderung = models.FloatField('Raumanforderung', default=0, | raumforderung = models.FloatField('Raumanforderung', default=0, | ||||
| @@ -71,6 +90,14 @@ class Betrieb(models.Model): | |||||
| self.arbeitnehmerzahl) | self.arbeitnehmerzahl) | ||||
| arbeiter_effektiv.short_description = 'Stellen' | arbeiter_effektiv.short_description = 'Stellen' | ||||
| def beaufsichtigt(self): | |||||
| betriebe = Betrieb.objects.filter(raum=self.raum) | |||||
| stunden = sum([sum([n.teilstunden for n in | |||||
| b.betriebsaufsicht_set.all()]) for b in betriebe]) | |||||
| return stunden >= 32 * self.punkt() | |||||
| beaufsichtigt.boolean = True | |||||
| beaufsichtigt.short_description = 'Beaufsichtigt' | |||||
| def __str__(self): | def __str__(self): | ||||
| return str(self.name) | return str(self.name) | ||||
| @@ -79,6 +106,15 @@ class Betrieb(models.Model): | |||||
| verbose_name_plural = 'Betriebe' | verbose_name_plural = 'Betriebe' | ||||
| class Betriebsaufsicht(models.Model): | |||||
| aufsicht = models.ForeignKey(Aufsicht) | |||||
| betrieb = models.ForeignKey(Betrieb) | |||||
| teilstunden = models.IntegerField('Geleistete Deputatsstunden', default=16) | |||||
| def __str__(self): | |||||
| return self.aufsicht.name | |||||
| class Partei(models.Model): | class Partei(models.Model): | ||||
| name = models.CharField('Name', max_length=100) | name = models.CharField('Name', max_length=100) | ||||
| abbreviation = models.CharField('Abkürzung', max_length=5) | abbreviation = models.CharField('Abkürzung', max_length=5) | ||||