Просмотр исходного кода

make email optional and add angestellte

master
erichhasl 7 лет назад
Родитель
Сommit
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 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 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
from django.template.defaulttags import register 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 @register.filter
@@ -46,11 +89,15 @@ create_overview.short_description = "Übersicht erstellen"
# 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',
'arbeitnehmerzahl_kurz', 'confirmed',
'arbeitnehmerzahl_kurz', 'punkt',
'approved') 'approved')
list_filter = ('confirmed', 'approved', 'raum') list_filter = ('confirmed', 'approved', 'raum')
search_fields = ('name', 'manager', 'raum', 'aufsicht') search_fields = ('name', 'manager', 'raum', 'aufsicht')
formfield_overrides = {
models.ManyToManyField: {'widget': forms.CheckboxSelectMultiple},
}
actions = [ban_ip, create_overview] actions = [ban_ip, create_overview]
filter_horizontal = ('angestellte',)




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

+ 41
- 1
web_dev/sas_web/meingoethopia/models.py Просмотреть файл

@@ -1,11 +1,36 @@
from django.db import models 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. # 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')
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 '
@@ -21,11 +46,26 @@ class Betrieb(models.Model):
ip_address = models.CharField('IP Adresse', max_length=50, blank=True) ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
confirmed = models.BooleanField('Bestätigt', default=False) confirmed = models.BooleanField('Bestätigt', default=False)
approved = models.BooleanField('Zugelassen', default=False) approved = models.BooleanField('Zugelassen', default=False)
angestellte = models.ManyToManyField(Angestellter,
verbose_name='Angestellte',
blank=True,
related_name='betriebe')


def arbeitnehmerzahl_kurz(self): def arbeitnehmerzahl_kurz(self):
return self.arbeitnehmerzahl return self.arbeitnehmerzahl
arbeitnehmerzahl_kurz.short_description = 'Stellen' 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): def __str__(self):
return str(self.name) return str(self.name)




Загрузка…
Отмена
Сохранить