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