| @@ -1,5 +1,6 @@ | |||
| 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 django.contrib.admin import helpers | |||
| from django.shortcuts import render | |||
| @@ -84,11 +85,16 @@ def create_overview(modeladmin, request, queryset): | |||
| create_overview.short_description = "Übersicht erstellen" | |||
| class AufsichtInline(admin.TabularInline): | |||
| model = Betriebsaufsicht | |||
| extra = 0 | |||
| # Register your models here. | |||
| class BetriebAdmin(admin.ModelAdmin): | |||
| list_display = ('name', 'manager', 'aufsicht', 'raum', | |||
| 'arbeiter_effektiv', 'punkt', | |||
| 'approved') | |||
| 'approved', 'beaufsichtigt') | |||
| list_filter = ('confirmed', 'approved', 'raum') | |||
| search_fields = ('name', 'manager', 'raum', 'aufsicht') | |||
| formfield_overrides = { | |||
| @@ -96,6 +102,7 @@ class BetriebAdmin(admin.ModelAdmin): | |||
| } | |||
| actions = [ban_ip, create_overview] | |||
| filter_horizontal = ('angestellte',) | |||
| inlines = [AufsichtInline] | |||
| class ParteiAdmin(admin.ModelAdmin): | |||
| @@ -122,8 +129,14 @@ class AngestellterAdmin(admin.ModelAdmin): | |||
| list_filter = (ZugeteiltFilter,) | |||
| search_fields = ('name', 'klasse') | |||
| class AufsichtAdmin(admin.ModelAdmin): | |||
| list_display = ('name', 'show_stunden') | |||
| search_fields = ('name',) | |||
| admin.site.register(Betrieb, BetriebAdmin) | |||
| admin.site.register(Partei, ParteiAdmin) | |||
| admin.site.register(PresidentCandidate, PresidentAdmin) | |||
| admin.site.register(Question, QuestionAdmin) | |||
| admin.site.register(Angestellter, AngestellterAdmin) | |||
| admin.site.register(Aufsicht, AufsichtAdmin) | |||
| @@ -26,14 +26,33 @@ class Angestellter(models.Model): | |||
| 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. | |||
| class Betrieb(models.Model): | |||
| name = models.CharField('Name', max_length=100) | |||
| manager = models.CharField('Betriebsleiter', max_length=200) | |||
| email = models.EmailField('Kontakt Email', blank=True) | |||
| arbeitnehmerzahl = models.IntegerField('Anzahl Arbeitnehmer', | |||
| default=0, | |||
| help_text='Gesamtzahl aller angestellten ' | |||
| default=0, help_text='Gesamtzahl aller angestellten ' | |||
| 'Arbeitnehmer/-innen inklusive Betriebsleiter/-innen') | |||
| arbeitnehmerzahl.short_description = 'Stellen' | |||
| raumforderung = models.FloatField('Raumanforderung', default=0, | |||
| @@ -71,6 +90,14 @@ class Betrieb(models.Model): | |||
| self.arbeitnehmerzahl) | |||
| 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): | |||
| return str(self.name) | |||
| @@ -79,6 +106,15 @@ class Betrieb(models.Model): | |||
| 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): | |||
| name = models.CharField('Name', max_length=100) | |||
| abbreviation = models.CharField('Abkürzung', max_length=5) | |||