Skip to content
Snippets Groups Projects
Commit 93d76ac4 authored by Benjamin Hättasch's avatar Benjamin Hättasch
Browse files

Improve AK creation workflow

Introduce existing owner select field and dispatching views for POST submitted owner id
Adapt redirection flows
Adapt submission overview template
Introduce Owner edit view
Fix prepopulation issue in AKWish creation view (caused by inheritance)
Adapt template name to role as create and update template
Fix context issue for AK creation view (missing owner attribute)
parent 94603976
No related branches found
No related tags found
No related merge requests found
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-23 22:25+0000\n" "POT-Creation-Date: 2019-10-23 23:56+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -22,7 +22,7 @@ msgstr "" ...@@ -22,7 +22,7 @@ msgstr ""
#: templates/AKSubmission/ak_detail.html:18 #: templates/AKSubmission/ak_detail.html:18
#: templates/AKSubmission/ak_list.html:8 templates/AKSubmission/ak_list.html:13 #: templates/AKSubmission/ak_list.html:8 templates/AKSubmission/ak_list.html:13
#: templates/AKSubmission/ak_list.html:18 #: templates/AKSubmission/ak_list.html:18
#: templates/AKSubmission/akowner_create_select.html:13 #: templates/AKSubmission/akowner_create_update.html:13
#: templates/AKSubmission/submission_overview.html:6 #: templates/AKSubmission/submission_overview.html:6
#: templates/AKSubmission/submission_overview.html:11 #: templates/AKSubmission/submission_overview.html:11
#: templates/AKSubmission/submission_overview.html:15 #: templates/AKSubmission/submission_overview.html:15
...@@ -92,61 +92,81 @@ msgstr "Diesen AK vorstellen" ...@@ -92,61 +92,81 @@ msgstr "Diesen AK vorstellen"
msgid "Reso" msgid "Reso"
msgstr "Reso" msgstr "Reso"
#: templates/AKSubmission/akowner_create_select.html:7 #: templates/AKSubmission/akowner_create_update.html:7
#: templates/AKSubmission/akowner_create_select.html:19 #: templates/AKSubmission/akowner_create_update.html:19
msgid "AK Owner" msgid "AK Owner"
msgstr "" msgstr "AK-Leitung"
#: templates/AKSubmission/akowner_create_select.html:25 #: templates/AKSubmission/akowner_create_update.html:25
#: templates/AKSubmission/submit_new.html:27 #: templates/AKSubmission/submit_new.html:27
msgid "Reset" msgid "Reset"
msgstr "Zurücksetzen" msgstr "Zurücksetzen"
#: templates/AKSubmission/akowner_create_select.html:29 #: templates/AKSubmission/akowner_create_update.html:29
#: templates/AKSubmission/submit_new.html:31 #: templates/AKSubmission/submit_new.html:31
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#: templates/AKSubmission/akowner_create_select.html:32 #: templates/AKSubmission/akowner_create_update.html:32
#: templates/AKSubmission/submit_new.html:34 #: templates/AKSubmission/submit_new.html:34
msgid "Submit" msgid "Submit"
msgstr "Eintragen" msgstr "Eintragen"
#: templates/AKSubmission/submission_overview.html:17 #: templates/AKSubmission/submission_overview.html:19
msgid "" msgid ""
"On this page you can see a list of current AKs, change them and add new ones." "On this page you can see a list of current AKs, change them and add new ones."
msgstr "" msgstr ""
"Auf dieser Seite kannst du eine Liste von aktuellen AKs sehen, diese " "Auf dieser Seite kannst du eine Liste von aktuellen AKs sehen, diese "
"bearbeiten und neue hinzufügen." "bearbeiten und neue hinzufügen."
#: templates/AKSubmission/submission_overview.html:20 #: templates/AKSubmission/submission_overview.html:25
#: templates/AKSubmission/submit_new_wish.html:5
#: templates/AKSubmission/submit_new_wish.html:11
#: templates/AKSubmission/submit_new_wish.html:15
msgid "New AK Wish"
msgstr "Neuer AK-Wunsch"
#: templates/AKSubmission/submission_overview.html:29
msgid "Who"
msgstr "Wer"
#: templates/AKSubmission/submission_overview.html:32
msgid "I do not own AKs yet"
msgstr "Ich leite bisher keine AKs"
#: templates/AKSubmission/submission_overview.html:40
#: templates/AKSubmission/submit_new.html:7 #: templates/AKSubmission/submit_new.html:7
#: templates/AKSubmission/submit_new.html:15 #: templates/AKSubmission/submit_new.html:15
#: templates/AKSubmission/submit_new.html:21 #: templates/AKSubmission/submit_new.html:21
msgid "New AK" msgid "New AK"
msgstr "Neuer AK" msgstr "Neuer AK"
#: templates/AKSubmission/submission_overview.html:21 #: templates/AKSubmission/submission_overview.html:46
#: templates/AKSubmission/submit_new_wish.html:5 msgid "Edit Person Info"
#: templates/AKSubmission/submit_new_wish.html:12 msgstr "Personen-Info bearbeiten"
#: templates/AKSubmission/submit_new_wish.html:16
msgid "New AK Wish"
msgstr "Neuer AK-Wunsch"
#: templates/AKSubmission/submission_overview.html:25 #: templates/AKSubmission/submission_overview.html:53
msgid "Current AKs" msgid "Current AKs"
msgstr "Aktuelle AKs" msgstr "Aktuelle AKs"
#: views.py:43 #: views.py:44
msgid "Wishes" msgid "Wishes"
msgstr "Wünsche" msgstr "Wünsche"
#: views.py:43 #: views.py:44
msgid "AKs one would like to have" msgid "AKs one would like to have"
msgstr "" msgstr ""
"AKs die sich gewünscht wurden, aber bei denen noch nicht klar ist, wer sie " "AKs die sich gewünscht wurden, aber bei denen noch nicht klar ist, wer sie "
"macht. Falls du dir das vorstellen kannst, trag dich einfach ein" "macht. Falls du dir das vorstellen kannst, trag dich einfach ein"
#: views.py:106 #: views.py:105
msgid "AK successfully created" msgid "AK successfully created"
msgstr "AK erfolgreich angelegt" msgstr "AK erfolgreich angelegt"
#: views.py:183
msgid "Person Info successfully updated"
msgstr "Personen-Info erfolgreich bearbeitet"
#: views.py:195
msgid "No user selected"
msgstr "Keine Person ausgewählt"
...@@ -14,11 +14,39 @@ ...@@ -14,11 +14,39 @@
{% block content %} {% block content %}
<h1>{{ event.name }}: {% trans "AK Submission" %}</h1> <h1>{{ event.name }}: {% trans "AK Submission" %}</h1>
{% include "AKSubmission/messages.html" %}
{% blocktrans %}On this page you can see a list of current AKs, change them and add new ones.{% endblocktrans %} {% blocktrans %}On this page you can see a list of current AKs, change them and add new ones.{% endblocktrans %}
<div class="jumbotron" style="margin-top:20px;"> <div class="jumbotron" style="margin-top:20px;">
<a href="{% url 'submit:akowner_select_create' event_slug=event.slug %}" class="btn btn-primary">{% trans "New AK" %}</a> <form method="POST" action="#" class="form-row">
<a href="{% url 'submit:submit_ak_wish' event_slug=event.slug %}" class="btn btn-info">{% trans "New AK Wish" %}</a> {% csrf_token %}
<a href="{% url 'submit:submit_ak_wish' event_slug=event.slug %}" class="btn btn-info">
{% trans "New AK Wish" %}
</a>
<span style="font-size: 1.5em">
&nbsp;&nbsp; | &nbsp;
<label for="selectOwnerId" class="align-middle d-inline">{% trans "Who" %}:</label>
</span>&nbsp;&nbsp;
<select name="owner_id" id="selectOwnerId" class="">
<option value="-1">{% trans "I do not own AKs yet" %}</option>
{% for owner in existingOwners %}
<option value="{{ owner.pk }}">{{ owner }}</option>
{% endfor %}
</select> &nbsp;&nbsp;
<input
type="submit"
class="btn btn-primary"
value="{% trans "New AK" %}"
formaction="{% url 'submit:akowner_select' event_slug=event.slug %}"
/>&nbsp;&nbsp;
<input
type="submit"
class="btn btn-success"
value="{% trans 'Edit Person Info' %}"
formaction="{% url 'submit:akowner_edit_dispatch' event_slug=event.slug %}"
/>
</form>
</div> </div>
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
<li class="breadcrumb-item"><a href="#">AKPlanning</a></li> <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="#">{{ event.slug }}</a></li>
<li class="breadcrumb-item"><a href="#">{% trans "AK Submission" %}</a></li> <li class="breadcrumb-item"><a href="#">{% trans "AK Submission" %}</a></li>
<li class="breadcrumb-item"><a href="#">{{ owner.slug }}</a></li>
<li class="breadcrumb-item active">{% trans "New AK Wish" %}</li> <li class="breadcrumb-item active">{% trans "New AK Wish" %}</li>
{% endblock %} {% endblock %}
......
...@@ -13,7 +13,10 @@ urlpatterns = [ ...@@ -13,7 +13,10 @@ urlpatterns = [
path('aks/', views.AKListView.as_view(), name='ak_list'), path('aks/', views.AKListView.as_view(), name='ak_list'),
path('aks/category/<int:category_pk>', views.AKListByCategoryView.as_view(), name='ak_list_by_category'), path('aks/category/<int:category_pk>', views.AKListByCategoryView.as_view(), name='ak_list_by_category'),
path('aks/tag/<int:tag_pk>', views.AKListByTagView.as_view(), name='ak_list_by_tag'), path('aks/tag/<int:tag_pk>', views.AKListByTagView.as_view(), name='ak_list_by_tag'),
path('owner/', views.AKOwnerSelectCreateView.as_view(), name='akowner_select_create'), path('owner/', views.AKOwnerCreateView.as_view(), name='akowner_create'),
path('new/', views.AKOwnerSelectDispatchView.as_view(), name='akowner_select'),
path('owner/edit/', views.AKOwnerEditDispatchView.as_view(), name='akowner_edit_dispatch'),
path('<slug:slug>/edit/', views.AKOwnerEditView.as_view(), name='akowner_edit'),
path('<slug:owner_slug>/new/', views.AKSubmissionView.as_view(), name='submit_ak'), path('<slug:owner_slug>/new/', views.AKSubmissionView.as_view(), name='submit_ak'),
path('new_wish/', views.AKWishSubmissionView.as_view(), name='submit_ak_wish'), path('new_wish/', views.AKWishSubmissionView.as_view(), name='submit_ak_wish'),
]) ])
......
from django.contrib import messages from django.contrib import messages
from django.http import Http404 from django.http import Http404, HttpResponseRedirect
from django.shortcuts import get_object_or_404
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views.generic import ListView, DetailView, CreateView from django.views import View
from django.views.generic import ListView, DetailView, CreateView, UpdateView
from AKModel.models import AK, AKCategory, AKTag, AKOwner from AKModel.models import AK, AKCategory, AKTag, AKOwner
from AKModel.models import Event from AKModel.models import Event
...@@ -42,6 +44,9 @@ class SubmissionOverviewView(FilterByEventSlugMixin, ListView): ...@@ -42,6 +44,9 @@ class SubmissionOverviewView(FilterByEventSlugMixin, ListView):
categories.append(({"name":_("Wishes"), "pk": "wish", "description": _("AKs one would like to have")}, ak_wishes)) categories.append(({"name":_("Wishes"), "pk": "wish", "description": _("AKs one would like to have")}, ak_wishes))
context["categories"] = categories context["categories"] = categories
# Get list of existing owners for event (for AK submission start)
context["existingOwners"] = AKOwner.objects.filter(event=self.event)
return context return context
...@@ -91,16 +96,11 @@ class AKListByTagView(AKListView): ...@@ -91,16 +96,11 @@ class AKListByTagView(AKListView):
return super().get_queryset().filter(tags=self.tag) return super().get_queryset().filter(tags=self.tag)
class AKSubmissionView(EventSlugMixin, CreateView): class AKAndAKWishSubmissionView(EventSlugMixin, CreateView):
model = AK model = AK
template_name = 'AKSubmission/submit_new.html' template_name = 'AKSubmission/submit_new.html'
form_class = AKForm form_class = AKForm
def get_initial(self):
initials = super(AKSubmissionView, self).get_initial()
initials['owners'] = [AKOwner.get_by_slug(self.kwargs['owner_slug'])]
return initials
def get_success_url(self): def get_success_url(self):
messages.add_message(self.request, messages.SUCCESS, _("AK successfully created")) messages.add_message(self.request, messages.SUCCESS, _("AK successfully created"))
return reverse_lazy('submit:ak_detail', kwargs={'event_slug': self.kwargs['event_slug'], 'pk': self.object.pk}) return reverse_lazy('submit:ak_detail', kwargs={'event_slug': self.kwargs['event_slug'], 'pk': self.object.pk})
...@@ -123,14 +123,26 @@ class AKSubmissionView(EventSlugMixin, CreateView): ...@@ -123,14 +123,26 @@ class AKSubmissionView(EventSlugMixin, CreateView):
return super().form_valid(form) return super().form_valid(form)
class AKWishSubmissionView(AKSubmissionView): class AKSubmissionView(AKAndAKWishSubmissionView):
def get_initial(self):
initials = super(AKAndAKWishSubmissionView, self).get_initial()
initials['owners'] = [AKOwner.get_by_slug(self.kwargs['owner_slug'])]
return initials
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(object_list=object_list, **kwargs)
context['owner'] = get_object_or_404(AKOwner, slug=self.kwargs['owner_slug'])
return context
class AKWishSubmissionView(AKAndAKWishSubmissionView):
template_name = 'AKSubmission/submit_new_wish.html' template_name = 'AKSubmission/submit_new_wish.html'
form_class = AKWishForm form_class = AKWishForm
class AKOwnerSelectCreateView(EventSlugMixin, CreateView): class AKOwnerCreateView(EventSlugMixin, CreateView):
model = AKOwner model = AKOwner
template_name = 'AKSubmission/akowner_create_select.html' template_name = 'AKSubmission/akowner_create_update.html'
form_class = AKOwnerForm form_class = AKOwnerForm
def get_success_url(self): def get_success_url(self):
...@@ -144,3 +156,46 @@ class AKOwnerSelectCreateView(EventSlugMixin, CreateView): ...@@ -144,3 +156,46 @@ class AKOwnerSelectCreateView(EventSlugMixin, CreateView):
instance.event = Event.get_by_slug(self.kwargs["event_slug"]) instance.event = Event.get_by_slug(self.kwargs["event_slug"])
return super().form_valid(form) return super().form_valid(form)
class AKOwnerSelectDispatchView(EventSlugMixin, View):
"""
This view only serves as redirect to prepopulate the owners field in submission create view
"""
def post(self, request, *args, **kwargs):
owner_id = request.POST["owner_id"]
if owner_id == "-1":
return HttpResponseRedirect(
reverse_lazy('submit:akowner_create', kwargs={'event_slug': kwargs['event_slug']}))
owner = get_object_or_404(AKOwner, pk=request.POST["owner_id"])
return HttpResponseRedirect(
reverse_lazy('submit:submit_ak', kwargs={'event_slug': kwargs['event_slug'], 'owner_slug': owner.slug}))
class AKOwnerEditView(EventSlugMixin, UpdateView):
model = AKOwner
template_name = "AKSubmission/akowner_create_update.html"
form_class = AKOwnerForm
def get_success_url(self):
messages.add_message(self.request, messages.SUCCESS, _("Person Info successfully updated"))
return reverse_lazy('submit:submission_overview', kwargs={'event_slug': self.kwargs['event_slug']})
class AKOwnerEditDispatchView(EventSlugMixin, View):
"""
This view only serves as redirect choose the correct edit view
"""
def post(self, request, *args, **kwargs):
owner_id = request.POST["owner_id"]
if owner_id == "-1":
messages.add_message(self.request, messages.WARNING, _("No user selected"))
return HttpResponseRedirect(
reverse_lazy('submit:submission_overview', kwargs={'event_slug': kwargs['event_slug']}))
owner = get_object_or_404(AKOwner, pk=request.POST["owner_id"])
return HttpResponseRedirect(
reverse_lazy('submit:akowner_edit', kwargs={'event_slug': kwargs['event_slug'], 'slug': owner.slug}))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment