瀏覽代碼

make email optional and add angestellte

master
erichhasl 7 年之前
父節點
當前提交
45709819d4
共有 2 個文件被更改,包括 96 次插入3 次删除
  1. +55
    -2
      web_dev/sas_web/meingoethopia/admin.py
  2. +41
    -1
      web_dev/sas_web/meingoethopia/models.py

+ 55
- 2
web_dev/sas_web/meingoethopia/admin.py 查看文件

@@ -1,9 +1,52 @@
from django.contrib import admin
from .models import Betrieb, Partei, PresidentCandidate, Question
from .models import Betrieb, Partei, PresidentCandidate, Question, Angestellter
from startpage.models import Banned
from django.contrib.admin import helpers
from django.shortcuts import render
from django.template.defaulttags import register
from django.db import models
from django import forms


class ZugeteiltFilter(admin.SimpleListFilter):
title = 'Zugeteilt'
parameter_name = 'zugeteilt'
default_value = ('Alle', None)

def lookups(self, request, model_admin):
return (
('Alle', 'Alle'),
('True', 'Zugeteilt'),
('False', 'Nicht zugeteilt'),
)

def queryset(self, request, queryset):
if self.value() == 'True':
print("filter auf true")
return queryset.filter(betriebe__gt=0)
elif self.value() == 'False':
print("filter auf false")
return queryset.filter(betriebe__exact=None)
elif self.value() is None:
if self.default_value[1] is None:
return queryset
else:
return [x for x in queryset if x.zugeteilt() == self.default_value[1]]
elif self.value() == 'All':
return queryset

def choices(self, cl):
for lookup, title in self.lookup_choices:
yield {
'selected':
self.value() == lookup or
(self.value() is None and lookup == self.default_value[0]),
'query_string': cl.get_query_string({
self.parameter_name:
lookup,
}, []),
'display': title
}


@register.filter
@@ -46,11 +89,15 @@ create_overview.short_description = "Übersicht erstellen"
# Register your models here.
class BetriebAdmin(admin.ModelAdmin):
list_display = ('name', 'manager', 'aufsicht', 'raum',
'arbeitnehmerzahl_kurz', 'confirmed',
'arbeitnehmerzahl_kurz', 'punkt',
'approved')
list_filter = ('confirmed', 'approved', 'raum')
search_fields = ('name', 'manager', 'raum', 'aufsicht')
formfield_overrides = {
models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple},
}
actions = [ban_ip, create_overview]
filter_horizontal = ('angestellte',)


class ParteiAdmin(admin.ModelAdmin):
@@ -71,7 +118,13 @@ class QuestionAdmin(admin.ModelAdmin):
list_filter = ('answered',)
actions = [ban_ip]


class AngestellterAdmin(admin.ModelAdmin):
list_display = ('name', 'klasse', 'is_teacher', 'show_betriebe', 'zugeteilt')
list_filter = (ZugeteiltFilter,)

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)

+ 41
- 1
web_dev/sas_web/meingoethopia/models.py 查看文件

@@ -1,11 +1,36 @@
from django.db import models


class Angestellter(models.Model):
name = models.CharField('Name', max_length=100)
klasse = models.CharField('Klasse', max_length=10)
is_teacher = models.BooleanField('Ist Lehrer?', default=False)

def __str__(self):
return "{} ({})".format(self.name, self.klasse)

def show_betriebe(self):
return ",".join([str(b) for b in self.betriebe.all()])
show_betriebe.short_description = "Betriebe"

def zugeteilt(self):
return self.betriebe.all().count() > 0
zugeteilt.boolean = True

def ist_klein(self):
return self.klasse[0] in ['5', '6', '7']
ist_klein.boolean = True

class Meta:
verbose_name = 'Angestellter'
verbose_name_plural = 'Angestellte'


# 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')
email = models.EmailField('Kontakt Email', blank=True)
arbeitnehmerzahl = models.IntegerField('Anzahl Arbeitnehmer',
default=0,
help_text='Gesamtzahl aller angestellten '
@@ -21,11 +46,26 @@ class Betrieb(models.Model):
ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
confirmed = models.BooleanField('Bestätigt', default=False)
approved = models.BooleanField('Zugelassen', default=False)
angestellte = models.ManyToManyField(Angestellter,
verbose_name='Angestellte',
blank=True,
related_name='betriebe')

def arbeitnehmerzahl_kurz(self):
return self.arbeitnehmerzahl
arbeitnehmerzahl_kurz.short_description = 'Stellen'

def punkt(self):
kleine_angestellte = [a for a in self.angestellte.all() if a.ist_klein()]
max_angestellte = self.angestellte.all().count()
if len(kleine_angestellte) == 0:
return 0
elif len(kleine_angestellte) < (max_angestellte / 2):
return 0.5
else:
return 1
punkt.short_description = 'Punkt'

def __str__(self):
return str(self.name)



Loading…
取消
儲存