diff --git a/AKSubmission/locale/de_DE/LC_MESSAGES/django.po b/AKSubmission/locale/de_DE/LC_MESSAGES/django.po index 1a7d279c6dc22ae65f891d7d9c71c1cb76cb6d55..b89bab64633e17eee95c88896728e7fb6e4d4be2 100644 --- a/AKSubmission/locale/de_DE/LC_MESSAGES/django.po +++ b/AKSubmission/locale/de_DE/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-17 14:14+0000\n" +"POT-Creation-Date: 2019-10-17 23:30+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,27 +17,70 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: templates/AKSubmission/submission_overview.html:9 -#: templates/AKSubmission/submission_overview.html:13 +#: templates/AKSubmission/ak_detail.html:6 +#: templates/AKSubmission/ak_detail.html:11 +#: templates/AKSubmission/ak_detail.html:16 +#: templates/AKSubmission/ak_list.html:6 templates/AKSubmission/ak_list.html:11 +#: templates/AKSubmission/ak_list.html:16 +#: templates/AKSubmission/submission_overview.html:6 +#: templates/AKSubmission/submission_overview.html:11 +#: templates/AKSubmission/submission_overview.html:15 msgid "AK Submission" msgstr "AK-Eintragung" -#: templates/AKSubmission/submission_overview.html:18 -msgid "Submit" -msgstr "Eintragen" +#: templates/AKSubmission/ak_detail.html:28 +#: templates/AKSubmission/ak_list_table.html:6 +msgid "Who?" +msgstr "Wer?" -#: templates/AKSubmission/submission_overview.html:24 -msgid "Current AKs" -msgstr "Aktuelle AKs" +#: templates/AKSubmission/ak_detail.html:29 +#: templates/AKSubmission/ak_list_table.html:6 +msgid "Type" +msgstr "Typ" + +#: templates/AKSubmission/ak_detail.html:31 +#: templates/AKSubmission/ak_list_table.html:6 +msgid "Tags" +msgstr "Tags" + +#: templates/AKSubmission/ak_detail.html:39 +msgid "Reso?" +msgstr "Reso?" + +#: templates/AKSubmission/ak_detail.html:55 +msgid "When?" +msgstr "Wann?" + +#: templates/AKSubmission/ak_detail.html:56 +msgid "Duration" +msgstr "Dauer" + +#: templates/AKSubmission/ak_detail.html:57 +msgid "Room" +msgstr "Raum" -#: templates/AKSubmission/submission_overview.html:27 +#: templates/AKSubmission/ak_list.html:12 +msgid "AKs" +msgstr "AKs" + +#: templates/AKSubmission/ak_list_table.html:6 msgid "Name" msgstr "Name" -#: templates/AKSubmission/submission_overview.html:27 -msgid "Who?" -msgstr "Wer?" +#: templates/AKSubmission/ak_list_table.html:13 +#, fuzzy +#| msgid "Current AKs" +msgid "Present AK" +msgstr "Aktuelle AKs" -#: templates/AKSubmission/submission_overview.html:27 -msgid "Tags" -msgstr "Tags" +#: templates/AKSubmission/ak_list_table.html:15 +msgid "Reso" +msgstr "Reso" + +#: templates/AKSubmission/submission_overview.html:20 +msgid "Submit" +msgstr "Eintragen" + +#: templates/AKSubmission/submission_overview.html:26 +msgid "Current AKs" +msgstr "Aktuelle AKs" diff --git a/AKSubmission/templates/AKSubmission/ak_detail.html b/AKSubmission/templates/AKSubmission/ak_detail.html new file mode 100644 index 0000000000000000000000000000000000000000..3180e1fccbbf0b525f254be3d5d55e23b0700d51 --- /dev/null +++ b/AKSubmission/templates/AKSubmission/ak_detail.html @@ -0,0 +1,71 @@ +{% extends 'base.html' %} + +{% load i18n %} +{% load fontawesome %} + +{% block title %}{{ ak.event.slug }} - {% trans "AK Submission" %} - {{ ak.slug }}{% endblock %} + +{% block breadcrumbs %} + <li class="breadcrumb-item"><a href="#">AKPlanning</a></li> + <li class="breadcrumb-item"><a href="#">{{ ak.event.slug }}</a></li> + <li class="breadcrumb-item"><a href="{% url 'submit:submission_overview' event_slug=ak.event.slug %}">{% trans "AK Submission" %}</a></li> + <li class="breadcrumb-item active">{{ ak.name }}</li> +{% endblock %} + +{% block content %} + <h1 style="margin-bottom: 30px;">{{ ak.event.name }}: {% trans "AK Submission" %}</h1> + + <div class="float-right"> + {% if ak.link != "" %} + <a href="{{ ak.link }}" class="btn btn-info">{% fontawesome_icon 'external-link-alt' %}</a> + {% endif %} + <a href="#" class="btn btn-success">{% fontawesome_icon 'pencil-alt' %}</a> + </div> + + <h2>{{ ak.name }}</h2> + + <table class="table table-borderless"> + <tr><td>{% trans "Who?" %}</td><td>{{ ak.owners_list }}</td></tr> + <tr><td>{% trans "Type" %}</td><td><a href="{% url 'submit:ak_list_by_type' event_slug=ak.event.slug type_pk=ak.type.pk %}"><span class="badge badge-primary">{{ ak.type }}</span></a></td></tr> + <tr> + <td>{% trans "Tags" %}</td> + <td> + {% for tag in ak.tags.all %} + <a href="{% url 'submit:ak_list_by_tag' event_slug=ak.event.slug tag_pk=tag.pk %}"><span class="badge badge-info">{{ tag }}</span></a> + {% endfor %} + </td> + </tr> + <tr> + <td>{% trans "Reso?" %}</td> + <td> + {% if ak.reso %} + {% fontawesome_icon "check" %} + {% else %} + {% fontawesome_icon "times" %} + {% endif %} + </td> + </tr> + </table> + + <p style="margin-top: 30px;margin-bottom: 30px;">{{ ak.description }}</p> + + <table class="table"> + <thead> + <tr> + <th>{% trans "When?" %}</th> + <th>{% trans "Duration" %}</th> + <th>{% trans "Room" %}</th> + </tr> + </thead> + <tbody> + {% for slot in ak.akslot_set.all %} + <tr> + <td>{{ slot.start_simplified }}</td> + <td>{{ slot.duration }}</td> + <td>{{ slot.room }}</td> + </tr> + {% endfor %} + </tbody> + </table> + +{% endblock %} diff --git a/AKSubmission/templates/AKSubmission/ak_list.html b/AKSubmission/templates/AKSubmission/ak_list.html new file mode 100644 index 0000000000000000000000000000000000000000..ac86f6d49c3c0ecb9afce0faf0e79058fc380f41 --- /dev/null +++ b/AKSubmission/templates/AKSubmission/ak_list.html @@ -0,0 +1,38 @@ +{% extends 'base.html' %} + +{% load i18n %} +{% load fontawesome %} + +{% block title %}{{ event.slug }} - {% trans "AK Submission" %}{% endblock %} + +{% block breadcrumbs %} + <li class="breadcrumb-item"><a href="#">AKPlanning</a></li> + <li class="breadcrumb-item"><a href="#">{{ event.slug }}</a></li> + <li class="breadcrumb-item"><a href="{% url 'submit:submission_overview' event_slug=event.slug %}">{% trans "AK Submission" %}</a></li> + <li class="breadcrumb-item active">{% trans "AKs" %}</li> +{% endblock %} + +{% block content %} + <h1>{{ event.name }}: {% trans "AK Submission" %}</h1> + + <b>Types:</b> + {% for type in types %} + <a href="{% url 'submit:ak_list_by_type' event_slug=event.slug type_pk=type.pk %}"><span class="badge badge-primary">{{ type }}</span></a> + {% endfor %} + + <br><br> + + <b>Tags:</b> + {% for tag in tags.all %} + <a href="{% url 'submit:ak_list_by_tag' event_slug=event.slug tag_pk=tag.pk %}"><span class="badge badge-primary">{{ tag }}</span></a> + {% endfor %} + + <br><br> + + {% if filter_condition_string != "" %} + <h2 class="text-secondary">{{ filter_condition_string }}</h2> + {% endif %} + + {% include "AKSubmission/ak_list_table.html" %} + +{% endblock %} diff --git a/AKSubmission/templates/AKSubmission/ak_list_table.html b/AKSubmission/templates/AKSubmission/ak_list_table.html new file mode 100644 index 0000000000000000000000000000000000000000..b56d69bdfe8cde6a9c3840b8db81461de140f1e8 --- /dev/null +++ b/AKSubmission/templates/AKSubmission/ak_list_table.html @@ -0,0 +1,38 @@ +{% load i18n %} +{% load fontawesome %} + +<table id="akTable" class="table table-striped"> + <thead> + <tr><th>{% trans "Name" %}</th><th>{% trans "Who?" %}</th><th>{% trans "Type" %}</th><th>{% trans "Tags" %}</th><th></th></tr> + </thead> + <tbody> + {% for ak in AKs %} + <tr> + <td> + <b>{{ ak.name }}</b> + <span class="badge badge-dark badge-pill" title="{% trans 'Present AK' %}">{% fontawesome_icon "bullhorn" %}</span> + {% if ak.reso %} + <span class="badge badge-dark badge-pill" title="{% trans 'Reso' %}">{% fontawesome_icon "scroll" %}</span> + {% endif %} + </td> + <td>{{ ak.owners_list }}</td> + <td><a href="{% url 'submit:ak_list_by_type' event_slug=event.slug type_pk=ak.type.pk %}"><span class="badge badge-primary">{{ ak.type }}</span></a></td> + <td> + {% for tag in ak.tags.all %} + <a href="{% url 'submit:ak_list_by_tag' event_slug=event.slug tag_pk=tag.pk %}"><span class="badge badge-info">{{ tag }}</span></a> + {% endfor %} + </td> + <td class="text-right"> + <a href="{% url 'submit:ak_detail' event_slug=ak.event.slug pk=ak.pk %}" class="btn btn-primary">{% fontawesome_icon 'info' %}</a> + {% if ak.link != "" %} + <a href="{{ ak.link }}" class="btn btn-info">{% fontawesome_icon 'external-link-alt' %}</a> + {% endif %} + <a href="#" class="btn btn-success">{% fontawesome_icon 'pencil-alt' %}</a> + </td> + </tr> + <tr> + <td colspan="5" class="small">{{ ak.description }}</td> + </tr> + {% endfor %} + </tbody> +</table> diff --git a/AKSubmission/templates/AKSubmission/submission_overview.html b/AKSubmission/templates/AKSubmission/submission_overview.html index ca28640cbd3aa0fb74e89a61aaa3dd254f71cf9f..f9529bd2c69f892b0ad9720e1c4b44ae03b85ec1 100644 --- a/AKSubmission/templates/AKSubmission/submission_overview.html +++ b/AKSubmission/templates/AKSubmission/submission_overview.html @@ -3,6 +3,8 @@ {% load i18n %} {% load fontawesome %} +{% block title %}{{ event.slug }} - {% trans "AK Submission" %}{% endblock %} + {% block breadcrumbs %} <li class="breadcrumb-item"><a href="#">AKPlanning</a></li> <li class="breadcrumb-item"><a href="#">{{ event.slug }}</a></li> @@ -23,23 +25,6 @@ <h2>{% trans "Current AKs" %}</h2> - <table class="table table-striped"> - <tr><th>{% trans "Name" %}</th><th>{% trans "Who?" %}</th><th>{% trans "Tags" %}</th><th></th></tr> - - {% for ak in AKs %} - <tr> - <td>{{ ak.name }}</td> - <td>{{ ak.owners_list }}</td> - <td> - {% for tag in ak.tags.all %} - <span class="badge badge-info">{{ tag }}</span> - {% endfor %} - </td> - <td> - <a href="#" class="btn btn-primary">{% fontawesome_icon 'info' %}</a> - <a href="#" class="btn btn-success">{% fontawesome_icon 'edit' %}</a> - </td> - </tr> - {% endfor %} - </table> + {% include "AKSubmission/ak_list_table.html" %} + {% endblock %} diff --git a/AKSubmission/urls.py b/AKSubmission/urls.py index 000bcc51a8fb748e073a5d81dc07ade526a85ece..fc5352238794d34557d79e8da0ba6a1707635426 100644 --- a/AKSubmission/urls.py +++ b/AKSubmission/urls.py @@ -9,6 +9,10 @@ urlpatterns = [ '<slug:event_slug>/', include([ path('submission/', views.SubmissionOverviewView.as_view(), name='submission_overview'), + path('submission/ak/<int:pk>', views.AKDetailView.as_view(), name='ak_detail'), + path('submission/aks/', views.AKListView.as_view(), name='ak_list'), + path('submission/aks/type/<int:type_pk>', views.AKListByTypeView.as_view(), name='ak_list_by_type'), + path('submission/aks/tag/<int:tag_pk>', views.AKListByTagView.as_view(), name='ak_list_by_tag'), ]) ), ] diff --git a/AKSubmission/views.py b/AKSubmission/views.py index 634334d00f54d60a72862d9931cf126dbbfa2b93..08cf8ae22b7e326ae8157a892adbfbf4c3f46e5c 100644 --- a/AKSubmission/views.py +++ b/AKSubmission/views.py @@ -1,11 +1,60 @@ -from django.views.generic import ListView +from django.http import Http404 +from django.views.generic import ListView, DetailView -from AKModel.models import AK +from AKModel.models import AK, AKType, AKTag from AKModel.views import FilterByEventSlugMixin +from django.utils.translation import gettext_lazy as _ + class SubmissionOverviewView(FilterByEventSlugMixin, ListView): model = AK context_object_name = "AKs" template_name = "AKSubmission/submission_overview.html" ordering = ["type"] + + +class AKDetailView(DetailView): + model = AK + context_object_name = "ak" + template_name = "AKSubmission/ak_detail.html" + + +class AKListView(FilterByEventSlugMixin, ListView): + model = AK + context_object_name = "AKs" + template_name = "AKSubmission/ak_list.html" + filter_condition_string = "" + + def get_context_data(self, *, object_list=None, **kwargs): + context = super().get_context_data(object_list=object_list, **kwargs) + context["types"] = AKType.objects.all() + context["tags"] = AKTag.objects.all() + context["filter_condition_string"] = self.filter_condition_string + return context + + +class AKListByTypeView(AKListView): + type = None + + def get_queryset(self): + # Find type based on event slug + try: + self.type = AKType.objects.get(pk=self.kwargs['type_pk']) + self.filter_condition_string = f"{_('Type')} = {self.type.name}" + except AKType.DoesNotExist: + raise Http404 + return super().get_queryset().filter(type=self.type) + + +class AKListByTagView(AKListView): + tag = None + + def get_queryset(self): + # Find type based on event slug + try: + self.tag = AKTag.objects.get(pk=self.kwargs['tag_pk']) + self.filter_condition_string = f"{_('Tag')} = {self.tag.name}" + except AKTag.DoesNotExist: + raise Http404 + return super().get_queryset().filter(tags=self.tag) diff --git a/templates/base.html b/templates/base.html index 2fca29646ea54a3b4ef6a896be77bc565b14a1df..669bd80611e7bd53483c828ae4340198111d5c29 100644 --- a/templates/base.html +++ b/templates/base.html @@ -6,7 +6,7 @@ <html lang="en"> <head> <meta charset="UTF-8"> - <title>AKPlanning</title> + <title>{% block title %}AK Planning{% endblock %}</title> {# Load Bootstrap CSS and JavaScript as well as font awesome #} {% bootstrap_css %}