| @@ -1,14 +1,26 @@ | |||||
| from django.contrib import admin | 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): | class ParteiWerbungAdmin(admin.ModelAdmin): | ||||
| list_display = ('partei',) | list_display = ('partei',) | ||||
| inlines = [ParteiAnhangInline] | |||||
| class PraesidentWerbungAdmin(admin.ModelAdmin): | class PraesidentWerbungAdmin(admin.ModelAdmin): | ||||
| list_display = ('praesident',) | list_display = ('praesident',) | ||||
| inlines = [PraesidentAnhangInline] | |||||
| admin.site.register(ParteiWerbung, ParteiWerbungAdmin) | admin.site.register(ParteiWerbung, ParteiWerbungAdmin) | ||||
| admin.site.register(PraesidentWerbung, PraesidentWerbungAdmin) | admin.site.register(PraesidentWerbung, PraesidentWerbungAdmin) | ||||
| @@ -19,13 +19,44 @@ class ParteiWerbung(models.Model): | |||||
| verbose_name_plural = 'Parteienwerbung' | 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): | class PraesidentWerbung(models.Model): | ||||
| praesident = models.ForeignKey('meingoethopia.PresidentCandidate') | praesident = models.ForeignKey('meingoethopia.PresidentCandidate') | ||||
| image = models.ImageField('Bild', upload_to='praesident_bilder') | 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): | def __str__(self): | ||||
| return str(self.partei) | |||||
| return str(self.praesident) | |||||
| class Meta: | class Meta: | ||||
| verbose_name = 'Präsidentwerbung' | verbose_name = 'Präsidentwerbung' | ||||
| verbose_name_plural = 'Präsidentenwerbung' | 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 { | #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> | ||||
| <tr class="trnews"> | <tr class="trnews"> | ||||
| <td class="tdnews" colspan="3"> | <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> | </td> | ||||
| </tr> | </tr> | ||||
| {% if rows|length == 0 %} | |||||
| {% if parteien|length == 0 %} | |||||
| <tr> | <tr> | ||||
| <td class="tdnews" colspan="3"> | <td class="tdnews" colspan="3"> | ||||
| <p id="description"> | <p id="description"> | ||||
| @@ -28,7 +25,7 @@ | |||||
| </td> | </td> | ||||
| </tr> | </tr> | ||||
| {% endif %} | {% endif %} | ||||
| {% for row in rows %} | |||||
| {% for row in parteien %} | |||||
| <tr class="trnews"> | <tr class="trnews"> | ||||
| {% for entry in row %} | {% for entry in row %} | ||||
| <td class="tdnews" align="{% cycle "left" "center" "right" %}"> | <td class="tdnews" align="{% cycle "left" "center" "right" %}"> | ||||
| @@ -46,4 +43,45 @@ | |||||
| {% endfor %} | {% endfor %} | ||||
| </table> | </table> | ||||
| </div> | </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 %} | {% endblock %} | ||||
| @@ -5,33 +5,53 @@ | |||||
| <link rel="stylesheet" type="text/css" href="{% static "news/css/partei.css"%}"> | <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> | <tr> | ||||
| <th style="width:20%"/> | |||||
| <th style="width:80%"/> | |||||
| </tr> | |||||
| <tr class="trpartei"> | |||||
| <td> | <td> | ||||
| <p>Name</p> | |||||
| <p><b>Name</b></p> | |||||
| </td> | </td> | ||||
| <td> | <td> | ||||
| <p>{{ entry.partei.name }} ({{ entry.partei.abbreviation }})</p> | <p>{{ entry.partei.name }} ({{ entry.partei.abbreviation }})</p> | ||||
| </td> | </td> | ||||
| </tr> | </tr> | ||||
| <tr> | |||||
| <tr class="trpartei"> | |||||
| <td> | <td> | ||||
| <p>Vorsitzende(r)</p> | |||||
| <p><b>Vorsitzende(r)</b></p> | |||||
| </td> | </td> | ||||
| <td> | <td> | ||||
| <p>{{ entry.partei.chef }}</p> | <p>{{ entry.partei.chef }}</p> | ||||
| </td> | </td> | ||||
| </tr> | </tr> | ||||
| <tr> | |||||
| <tr class="trpartei"> | |||||
| <td> | <td> | ||||
| <p>Wahlprogramm</p> | |||||
| <p><b>Wahlprogramm</b></p> | |||||
| </td> | </td> | ||||
| <td> | <td> | ||||
| <p>{{ entry.wahlprogramm }}</p> | <p>{{ entry.wahlprogramm }}</p> | ||||
| </td> | </td> | ||||
| </tr> | </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> | </table> | ||||
| <p><a href="{% url "news:index" %}">Zurück zur Übersicht</a></p> | |||||
| {% endblock %} | {% 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 = [ | urlpatterns = [ | ||||
| url(r'^$', views.index, name='index'), | url(r'^$', views.index, name='index'), | ||||
| url(r'^partei/(?P<partei_id>[0-9]+)', views.partei, name='partei'), | 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. | # Create your views here. | ||||
| def index(request): | 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): | def partei(request, partei_id): | ||||