| @@ -1,14 +1,26 @@ | |||
| from django.contrib import admin | |||
| from .models import ParteiWerbung, PraesidentWerbung | |||
| from .models import ParteiWerbung, PraesidentWerbung, ParteiAnhang, \ | |||
| PraesidentAnhang | |||
| class ParteiAnhangInline(admin.TabularInline): | |||
| model = ParteiAnhang | |||
| extra = 0 | |||
| class PraesidentAnhangInline(admin.TabularInline): | |||
| model = PraesidentAnhang | |||
| extra = 0 | |||
| # Register your models here. | |||
| class ParteiWerbungAdmin(admin.ModelAdmin): | |||
| list_display = ('partei',) | |||
| inlines = [ParteiAnhangInline] | |||
| class PraesidentWerbungAdmin(admin.ModelAdmin): | |||
| list_display = ('praesident',) | |||
| inlines = [PraesidentAnhangInline] | |||
| admin.site.register(ParteiWerbung, ParteiWerbungAdmin) | |||
| admin.site.register(PraesidentWerbung, PraesidentWerbungAdmin) | |||
| @@ -19,13 +19,44 @@ class ParteiWerbung(models.Model): | |||
| verbose_name_plural = 'Parteienwerbung' | |||
| class ParteiAnhang(models.Model): | |||
| name = models.CharField('Name', max_length=100) | |||
| data = models.FileField('Datei') | |||
| partei = models.ForeignKey(ParteiWerbung) | |||
| def __str__(self): | |||
| return self.name | |||
| class Meta: | |||
| verbose_name = 'Anhang' | |||
| verbose_name_plural = 'Anhänge' | |||
| class PraesidentWerbung(models.Model): | |||
| praesident = models.ForeignKey('meingoethopia.PresidentCandidate') | |||
| image = models.ImageField('Bild', upload_to='praesident_bilder') | |||
| wahlprogramm = models.TextField('Wahlprogramm') | |||
| @property | |||
| def url(self): | |||
| return "/wahl/praesident/{}".format(self.pk) | |||
| def __str__(self): | |||
| return str(self.partei) | |||
| return str(self.praesident) | |||
| class Meta: | |||
| verbose_name = 'Präsidentwerbung' | |||
| verbose_name_plural = 'Präsidentenwerbung' | |||
| class PraesidentAnhang(models.Model): | |||
| name = models.CharField('Name', max_length=100) | |||
| data = models.FileField('Datei') | |||
| praesident = models.ForeignKey(PraesidentWerbung) | |||
| def __str__(self): | |||
| return self.name | |||
| class Meta: | |||
| verbose_name = 'Anhang' | |||
| verbose_name_plural = 'Anhänge' | |||
| @@ -1,3 +1,13 @@ | |||
| #partei_bild { | |||
| max-width: 20% | |||
| max-width: 50%; | |||
| margin-top: 20px; | |||
| margin-bottom: 50px; | |||
| } | |||
| .trpartei { | |||
| line-height: 25px; | |||
| } | |||
| .tablepartei { | |||
| width: 100%; | |||
| } | |||
| @@ -13,13 +13,10 @@ | |||
| </tr> | |||
| <tr class="trnews"> | |||
| <td class="tdnews" colspan="3"> | |||
| <p id="description"> | |||
| Bald wird gewählt in Goethopia! Hier erfährst du welche Parteien zur Wahl stehen | |||
| und wer als Präsidentin kandidiert! | |||
| </p> | |||
| <h3>Parteien</h3> | |||
| </td> | |||
| </tr> | |||
| {% if rows|length == 0 %} | |||
| {% if parteien|length == 0 %} | |||
| <tr> | |||
| <td class="tdnews" colspan="3"> | |||
| <p id="description"> | |||
| @@ -28,7 +25,7 @@ | |||
| </td> | |||
| </tr> | |||
| {% endif %} | |||
| {% for row in rows %} | |||
| {% for row in parteien %} | |||
| <tr class="trnews"> | |||
| {% for entry in row %} | |||
| <td class="tdnews" align="{% cycle "left" "center" "right" %}"> | |||
| @@ -46,4 +43,45 @@ | |||
| {% endfor %} | |||
| </table> | |||
| </div> | |||
| <!-- PRÄSIDENT --> | |||
| <div id="news_html"> | |||
| <table class="tablenews"> | |||
| <tr> | |||
| <th style="width:33%"/> | |||
| <th style="width:33%"/> | |||
| <th style="width:33%"/> | |||
| </tr> | |||
| <tr class="trnews"> | |||
| <td class="tdnews" colspan="3"> | |||
| <h3>Präsidentschaftskandidaten</h3> | |||
| </td> | |||
| </tr> | |||
| {% if praesidenten|length == 0 %} | |||
| <tr> | |||
| <td class="tdnews" colspan="3"> | |||
| <p id="description"> | |||
| <b>Keine Präsidenten gefunden</b> | |||
| </p> | |||
| </td> | |||
| </tr> | |||
| {% endif %} | |||
| {% for row in praesidenten %} | |||
| <tr class="trnews"> | |||
| {% for entry in row %} | |||
| <td class="tdnews" align="{% cycle "left" "center" "right" %}"> | |||
| <div class="polaroid"> | |||
| <a class="thumbnail" href="{{ entry.url }}"> | |||
| <img src="{{ entry.image.url }}" alt="Verfassung"> | |||
| </a> | |||
| <div class="container"> | |||
| <p>{{ entry.praesident.name }}</p> | |||
| </div> | |||
| </div> | |||
| </td> | |||
| {% endfor %} | |||
| </tr> | |||
| {% endfor %} | |||
| </table> | |||
| </div> | |||
| {% endblock %} | |||
| @@ -5,33 +5,53 @@ | |||
| <link rel="stylesheet" type="text/css" href="{% static "news/css/partei.css"%}"> | |||
| <img src="{{ entry.image.url }}" id="partei_bild"> | |||
| <p><a href="{% url "news:index" %}">Zurück zur Übersicht</a></p> | |||
| <table> | |||
| <div style="width:100%;"> | |||
| <img src="{{ entry.image.url }}" id="partei_bild"> | |||
| </div> | |||
| <table class="tablepartei"> | |||
| <tr> | |||
| <th style="width:20%"/> | |||
| <th style="width:80%"/> | |||
| </tr> | |||
| <tr class="trpartei"> | |||
| <td> | |||
| <p>Name</p> | |||
| <p><b>Name</b></p> | |||
| </td> | |||
| <td> | |||
| <p>{{ entry.partei.name }} ({{ entry.partei.abbreviation }})</p> | |||
| </td> | |||
| </tr> | |||
| <tr> | |||
| <tr class="trpartei"> | |||
| <td> | |||
| <p>Vorsitzende(r)</p> | |||
| <p><b>Vorsitzende(r)</b></p> | |||
| </td> | |||
| <td> | |||
| <p>{{ entry.partei.chef }}</p> | |||
| </td> | |||
| </tr> | |||
| <tr> | |||
| <tr class="trpartei"> | |||
| <td> | |||
| <p>Wahlprogramm</p> | |||
| <p><b>Wahlprogramm</b></p> | |||
| </td> | |||
| <td> | |||
| <p>{{ entry.wahlprogramm }}</p> | |||
| </td> | |||
| </tr> | |||
| <tr class="trpartei"> | |||
| <td> | |||
| <p><b>Weitere Informationen</b></p> | |||
| </td> | |||
| <td> | |||
| {% for attachment in entry.parteianhang_set.all %} | |||
| <a href="{{ attachment.data.url }}">{{ attachment.name }}</a><br> | |||
| {% endfor %} | |||
| </td> | |||
| </tr> | |||
| </table> | |||
| <p><a href="{% url "news:index" %}">Zurück zur Übersicht</a></p> | |||
| {% endblock %} | |||
| @@ -0,0 +1,47 @@ | |||
| {% extends "public/default.html" %} | |||
| {% load static %} | |||
| {% block content %} | |||
| <link rel="stylesheet" type="text/css" href="{% static "news/css/partei.css"%}"> | |||
| <div style="width:100%;"> | |||
| <img src="{{ entry.image.url }}" id="partei_bild"> | |||
| </div> | |||
| <table class="tablepartei"> | |||
| <tr> | |||
| <th style="width:20%"/> | |||
| <th style="width:80%"/> | |||
| </tr> | |||
| <tr class="trpartei"> | |||
| <td> | |||
| <p><b>Name</b></p> | |||
| </td> | |||
| <td> | |||
| <p>{{ entry.praesident.name }}</p> | |||
| </td> | |||
| </tr> | |||
| <tr class="trpartei"> | |||
| <td> | |||
| <p><b>Wahlprogramm</b></p> | |||
| </td> | |||
| <td> | |||
| <p>{{ entry.wahlprogramm }}</p> | |||
| </td> | |||
| </tr> | |||
| <tr class="trpartei"> | |||
| <td> | |||
| <p><b>Weitere Informationen</b></p> | |||
| </td> | |||
| <td> | |||
| {% for attachment in entry.praesidentanhang_set.all %} | |||
| <a href="{{ attachment.data.url }}">{{ attachment.name }}</a><br> | |||
| {% endfor %} | |||
| </td> | |||
| </tr> | |||
| </table> | |||
| <p><a href="{% url "news:index" %}">Zurück zur Übersicht</a></p> | |||
| {% endblock %} | |||
| @@ -5,5 +5,5 @@ from . import views | |||
| urlpatterns = [ | |||
| url(r'^$', views.index, name='index'), | |||
| url(r'^partei/(?P<partei_id>[0-9]+)', views.partei, name='partei'), | |||
| url(r'^partei/(?P<praesident_id>[0-9]+)', views.praesident, name='praesident') | |||
| url(r'^praesident/(?P<praesident_id>[0-9]+)', views.praesident, name='praesident') | |||
| ] | |||
| @@ -6,10 +6,13 @@ from .models import ParteiWerbung, PraesidentWerbung | |||
| # Create your views here. | |||
| def index(request): | |||
| objects = ParteiWerbung.objects.all() | |||
| rows = group(objects, 3) | |||
| return render(request, "news/index.html", {'rows': rows, | |||
| }) | |||
| partei_objs = ParteiWerbung.objects.all() | |||
| parteien = group(partei_objs, 3) | |||
| praesident_objs = PraesidentWerbung.objects.all() | |||
| praesidenten = group(praesident_objs, 3) | |||
| return render(request, "news/index.html", | |||
| {'parteien': parteien, 'praesidenten': praesidenten}) | |||
| def partei(request, partei_id): | |||