add fields to the betrieb model and add an overview action
This commit is contained in:
@@ -1,6 +1,14 @@
|
||||
from django.contrib import admin
|
||||
from .models import Betrieb, Partei, PresidentCandidate, Question
|
||||
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):
|
||||
@@ -12,11 +20,36 @@ def ban_ip(modeladmin, request, queryset):
|
||||
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.
|
||||
class BetriebAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'manager', 'confirmed', 'approved')
|
||||
list_filter = ('confirmed', 'approved')
|
||||
actions = [ban_ip]
|
||||
list_display = ('name', 'manager', 'aufsicht', 'raum',
|
||||
'arbeitnehmerzahl_kurz', 'confirmed',
|
||||
'approved')
|
||||
list_filter = ('confirmed', 'approved', 'raum')
|
||||
search_fields = ('name', 'manager', 'raum', 'aufsicht')
|
||||
actions = [ban_ip, create_overview]
|
||||
|
||||
|
||||
class ParteiAdmin(admin.ModelAdmin):
|
||||
|
||||
@@ -6,11 +6,26 @@ class Betrieb(models.Model):
|
||||
name = models.CharField('Name', max_length=100)
|
||||
manager = models.CharField('Betriebsleiter', max_length=200)
|
||||
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')
|
||||
ip_address = models.CharField('IP Adresse', max_length=50, blank=True)
|
||||
confirmed = models.BooleanField('Bestätigt', default=False)
|
||||
approved = models.BooleanField('Zugelassen', default=False)
|
||||
|
||||
def arbeitnehmerzahl_kurz(self):
|
||||
return self.arbeitnehmerzahl
|
||||
arbeitnehmerzahl_kurz.short_description = 'Stellen'
|
||||
|
||||
def __str__(self):
|
||||
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 %}
|
||||
@@ -19,6 +19,10 @@ from django.conf import settings
|
||||
|
||||
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 += [
|
||||
|
||||
@@ -9,22 +9,8 @@
|
||||
<!--<ul class="dates_ul">-->
|
||||
<!--</ul>-->
|
||||
<h1 class="red" id="termine">Wichtiges</h1>
|
||||
<p>
|
||||
<b>Bitte gründet noch Betriebe: Formulare hängen im SMV-Schaukasten unter dem
|
||||
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>
|
||||
<p>Nach den Pfingstferien könnt ihr euch in die Listen der Betriebe eintragen, um
|
||||
euch dort als Arbeitnehmer/-innen zu bewerben.</p>
|
||||
<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:
|
||||
<br>
|
||||
|
||||
Reference in New Issue
Block a user