add aufsicht calc
This commit is contained in:
@@ -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,
|
default=0, help_text='Gesamtzahl aller angestellten '
|
||||||
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user