Procházet zdrojové kódy

add aufsicht calc

master
erichhasl před 7 roky
rodič
revize
0afd8cb3f9
2 změnil soubory, kde provedl 53 přidání a 4 odebrání
  1. +15
    -2
      web_dev/sas_web/meingoethopia/admin.py
  2. +38
    -2
      web_dev/sas_web/meingoethopia/models.py

+ 15
- 2
web_dev/sas_web/meingoethopia/admin.py Zobrazit soubor

@@ -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)

+ 38
- 2
web_dev/sas_web/meingoethopia/models.py Zobrazit soubor

@@ -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)


Načítá se…
Zrušit
Uložit