add aufsicht calc
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user