add fields to the betrieb model and add an overview action

This commit is contained in:
erichhasl
2018-05-17 19:05:49 +02:00
parent 5dbf329579
commit a6b467a93f
5 changed files with 93 additions and 19 deletions
+36 -3
View File
@@ -1,6 +1,14 @@
from django.contrib import admin from django.contrib import admin
from .models import Betrieb, Partei, PresidentCandidate, Question from .models import Betrieb, Partei, PresidentCandidate, Question
from startpage.models import Banned from startpage.models import Banned
from django.contrib.admin import helpers
from django.shortcuts import render
from django.template.defaulttags import register
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
def ban_ip(modeladmin, request, queryset): def ban_ip(modeladmin, request, queryset):
@@ -12,11 +20,36 @@ def ban_ip(modeladmin, request, queryset):
ban_ip.short_description = "Urheber ausgewählter Eintrage verbannen" ban_ip.short_description = "Urheber ausgewählter Eintrage verbannen"
def create_overview(modeladmin, request, queryset):
if request.POST.get('back'):
pass
else:
raummap = {}
for b in queryset:
if b.raum in raummap:
raummap[b.raum]["anzahl"] += 1
raummap[b.raum]["belegung"] += b.raumforderung
else:
raummap[b.raum] = {"anzahl": 1, "belegung": b.raumforderung}
context = {'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME,
'betriebe': queryset,
'arbeitnehmer_gesamt': sum([b.arbeitnehmerzahl for b in
queryset]),
'raummap': raummap,
'title': "Betriebsübersicht"}
return render(request, 'meingoethopia/betriebe_overview.html', context)
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', 'confirmed', 'approved') list_display = ('name', 'manager', 'aufsicht', 'raum',
list_filter = ('confirmed', 'approved') 'arbeitnehmerzahl_kurz', 'confirmed',
actions = [ban_ip] 'approved')
list_filter = ('confirmed', 'approved', 'raum')
search_fields = ('name', 'manager', 'raum', 'aufsicht')
actions = [ban_ip, create_overview]
class ParteiAdmin(admin.ModelAdmin): class ParteiAdmin(admin.ModelAdmin):
+15
View File
@@ -6,11 +6,26 @@ 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')
arbeitnehmerzahl = models.IntegerField('Anzahl Arbeitnehmer',
default=0,
help_text='Gesamtzahl aller angestellten '
'Arbeitnehmer/-innen inklusive Betriebsleiter/-innen')
arbeitnehmerzahl.short_description = 'Stellen'
raumforderung = models.FloatField('Raumanforderung', default=0,
help_text='In Zahlen ausgedrückter '
'Raumwunsch (halber Raum = 0,5)')
raum = models.IntegerField('Raum', default=102)
aufsicht = models.CharField('Aufsicht', max_length=100, default='keine')
kredit = models.IntegerField('Kreditwunsch', default=0)
business_idea = models.TextField('Idee') business_idea = models.TextField('Idee')
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)
def arbeitnehmerzahl_kurz(self):
return self.arbeitnehmerzahl
arbeitnehmerzahl_kurz.short_description = 'Stellen'
def __str__(self): def __str__(self):
return str(self.name) return str(self.name)
@@ -0,0 +1,36 @@
{% extends "admin/base_site.html" %}
{% block content %}
<h2>Arbeitnehmer</h2>
<p>Insgesamt sind {{ arbeitnehmer_gesamt }} Schüler durch {{ betriebe.count }} Betriebe versorgt.</p>
<h2>Räume</h2>
<table>
<tr>
<th>Raumnummer</th>
<th>Anzahl an Betrieben</th>
<th>Theoretische Belegung</th>
</tr>
{% for raum, data in raummap.items %}
<tr>
<td>{{ raum }}</td>
<td>{{ data|get_item:"anzahl" }}</td>
<td>
<font {% if data|get_item:"belegung" > 1 %} color="red"{% endif %}>
{{ data|get_item:"belegung" }}
</font>
</td>
</tr>
{% endfor %}
</table>
<form action="" method="post">
{% csrf_token %}
<input type="submit" value="Zurück">
</form>
{% endblock %}
+4
View File
@@ -19,6 +19,10 @@ from django.conf import settings
from .views import error_400, error_403, error_404, error_500 from .views import error_400, error_403, error_404, error_500
admin.site.site_header = "Goethopia"
admin.site.site_title = "Goethopia"
admin.site.index_title = "Verwaltung"
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += [ urlpatterns += [
@@ -9,22 +9,8 @@
<!--<ul class="dates_ul">--> <!--<ul class="dates_ul">-->
<!--</ul>--> <!--</ul>-->
<h1 class="red" id="termine">Wichtiges</h1> <h1 class="red" id="termine">Wichtiges</h1>
<p> <p>Nach den Pfingstferien könnt ihr euch in die Listen der Betriebe eintragen, um
<b>Bitte gründet noch Betriebe: Formulare hängen im SMV-Schaukasten unter dem euch dort als Arbeitnehmer/-innen zu bewerben.</p>
Vertretungsplan. Ihr könnt auch schon
<a href="{% url "meingoethopia:index" %}">hier</a> euren Betrieb anmelden.</b>
<br>
<br>
Momentan beschließen die Ausschüsse über die Personalfrage, ihr werdet persönlich benachrichtigt werden, falls ihr einen Beamtenposten erhalten haben solltet.
</p>
<h1 class="red" id="ziele">Ziele</h1>
<ul>
<li>Raumplanung entwerfen</li>
<li>Elektronik Umgang damit Organisieren: Ort / Zeit</li>
<li>Liste der Polizisten und Beamten aushängen</li>
</ul>
<h1 class="red" id="wahlergebnis">Das Wahlergebnis</h1> <h1 class="red" id="wahlergebnis">Das Wahlergebnis</h1>
Die Bürger Goethopias haben gewählt. <b>David Schwarz</b> ist der neue Präsident und die <b>Liberalen Sozialdemokraten</b> werden die stärkste Partei im Parlament: Die Bürger Goethopias haben gewählt. <b>David Schwarz</b> ist der neue Präsident und die <b>Liberalen Sozialdemokraten</b> werden die stärkste Partei im Parlament:
<br> <br>