Skip to content
Snippets Groups Projects
Commit e0977c43 authored by Tom Teichler's avatar Tom Teichler :beers:
Browse files

Rewrite view logic

parent d3bfbb95
No related branches found
No related tags found
2 merge requests!23Resolve "Event detail page",!21Resolve "Add persons to group by username"
Pipeline #69124 passed with warnings
...@@ -491,21 +491,6 @@ class RegistrationStatesForm(forms.ModelForm): ...@@ -491,21 +491,6 @@ class RegistrationStatesForm(forms.ModelForm):
exclude = [] exclude = []
class PersonGroupFormGroup(forms.Form):
layout = Layout("group")
group = forms.ModelChoiceField(
label=_("Group"),
queryset=Group.objects.all(),
required=True,
widget=ModelSelect2Widget(
search_fields=["name__icontains"],
attrs={"data-minimum-input-length": 0, "class": "browser-default"},
),
)
class PersonGroupFormPerson(forms.Form): class PersonGroupFormPerson(forms.Form):
layout = Layout("username") layout = Layout("username")
......
...@@ -126,3 +126,20 @@ class RegistrationStatesTable(tables.Table): ...@@ -126,3 +126,20 @@ class RegistrationStatesTable(tables.Table):
def render_name(self, value, record): def render_name(self, value, record):
context = dict(state=record) context = dict(state=record)
return render_to_string("paweljong/registration_state/chip.html", context) return render_to_string("paweljong/registration_state/chip.html", context)
class ChildGroupsTable(tables.Table):
"""Table to list groups."""
class Meta:
attrs = {"class": "highlight"}
name = tables.LinkColumn("group_by_id", args=[A("id")])
short_name = tables.LinkColumn("group_by_id", args=[A("id")])
add_persons = tables.LinkColumn(
"add_persons_to_group",
args=[A("id")],
verbose_name=_("Add persons"),
text=_("Add persons"),
)
{% extends "core/base.html" %}
{% load material_form i18n any_js %}
{% block page_title %}{% blocktrans %}Add person to group{% endblocktrans %}{% endblock %}
{% block browser_title %}{% blocktrans %}Add person to group{% endblocktrans %}{% endblock %}
{% block extra_head %}
{{ form.media.css }}
{% endblock %}
{% block content %}
<form method="post">
{% csrf_token %}
{% form form=form %}{% form %}
{% include "core/partials/save_button.html" %}
</form>
{{ form.media.js }}
{% endblock %}
{% extends "core/base.html" %}
{% load material_form i18n %}
{% block browser_title %}{% trans "Add person to group" %}{% endblock %}
{% block page_title %}{% trans "Add person to group" %}{% endblock %}
{% block content %}
<form method="post">
{% csrf_token %}
{{ wizard.form.media }}
{{ wizard.management_form }}
{% if wizard.form.forms %}
{{ wizard.form.management_form }}
{% for form in wizard.form.forms %}
{% form form=form %}{% endform %}
{% endfor %}
{% else %}
{% form form=wizard.form %}{% endform %}
{% endif %}
{% if wizard.steps.prev %}
<button type="submit" value="{{ wizard.steps.first }}" class="btn waves-effect waves-light color-primary" name="wizard_goto_step">
<i class="material-icons left">first_page</i>
{% trans "first step" %}
</button>
<button type="submit" value="{{ wizard.steps.prev }}" class="btn waves-effect waves-light color-secondary" name="wizard_goto_step">
<i class="material-icons left">arrow_back_ios</i>
{% trans "previous step" %}
</button>
{% endif %}
{% trans "Next" as caption %}
{% include "core/partials/save_button.html" with caption=caption icon="navigate_next" %}
</form>
{% endblock %}
...@@ -4,8 +4,6 @@ from aleksis.apps.postbuero.forms import MailAddForm ...@@ -4,8 +4,6 @@ from aleksis.apps.postbuero.forms import MailAddForm
from . import views from . import views
from .forms import ( from .forms import (
PersonGroupFormGroup,
PersonGroupFormPerson,
RegisterEventAccount, RegisterEventAccount,
RegisterEventAdditional, RegisterEventAdditional,
RegisterEventConsent, RegisterEventConsent,
...@@ -37,11 +35,6 @@ account_conditions = { ...@@ -37,11 +35,6 @@ account_conditions = {
"email": views.is_email_needed, "email": views.is_email_needed,
} }
add_persons_to_group_forms = [
("group", PersonGroupFormGroup),
("person", PersonGroupFormPerson),
]
urlpatterns = [ urlpatterns = [
path("event/<slug:slug>/edit", views.EditEventView.as_view(), name="edit_event_by_slug"), path("event/<slug:slug>/edit", views.EditEventView.as_view(), name="edit_event_by_slug"),
path( path(
...@@ -50,8 +43,8 @@ urlpatterns = [ ...@@ -50,8 +43,8 @@ urlpatterns = [
name="register_event_by_slug", name="register_event_by_slug",
), ),
path( path(
"group_persons/add", "group_persons/<int:pk>/add",
views.PersonGroupWizardView.as_view(add_persons_to_group_forms), views.PersonGroupView.as_view(),
name="add_persons_to_group", name="add_persons_to_group",
), ),
path("event/<slug:slug>", views.EventFullView.as_view(), name="event_by_name"), path("event/<slug:slug>", views.EventFullView.as_view(), name="event_by_name"),
......
...@@ -24,8 +24,8 @@ from templated_email import send_templated_mail ...@@ -24,8 +24,8 @@ from templated_email import send_templated_mail
from aleksis.apps.postbuero.models import MailAddress from aleksis.apps.postbuero.models import MailAddress
from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView
from aleksis.core.tables import AdditionalFieldsTable, GroupsTable from aleksis.core.models import Activity, Group, Person
from aleksis.core.models import Activity, Person, Group from aleksis.core.tables import AdditionalFieldsTable
from aleksis.core.util import messages from aleksis.core.util import messages
from aleksis.core.util.core_helpers import get_site_preferences, objectgetter_optional from aleksis.core.util.core_helpers import get_site_preferences, objectgetter_optional
...@@ -37,11 +37,13 @@ from .forms import ( ...@@ -37,11 +37,13 @@ from .forms import (
EditTermForm, EditTermForm,
EditVoucherForm, EditVoucherForm,
GenerateListForm, GenerateListForm,
PersonGroupFormPerson,
RegistrationNotificationForm, RegistrationNotificationForm,
RegistrationStatesForm, RegistrationStatesForm,
) )
from .models import Event, EventRegistration, InfoMailing, RegistrationState, Terms, Voucher from .models import Event, EventRegistration, InfoMailing, RegistrationState, Terms, Voucher
from .tables import ( from .tables import (
ChildGroupsTable,
EventRegistrationsTable, EventRegistrationsTable,
InfoMailingsTable, InfoMailingsTable,
ManageEventsTable, ManageEventsTable,
...@@ -903,7 +905,7 @@ class EventDetailView(PermissionRequiredMixin, DetailView): ...@@ -903,7 +905,7 @@ class EventDetailView(PermissionRequiredMixin, DetailView):
# Child groups table # Child groups table
child_groups = self.object.linked_group.child_groups.all() child_groups = self.object.linked_group.child_groups.all()
child_groups_table = GroupsTable(child_groups) child_groups_table = ChildGroupsTable(child_groups)
RequestConfig(self.request).configure(child_groups_table) RequestConfig(self.request).configure(child_groups_table)
context["child_groups_table"] = child_groups_table context["child_groups_table"] = child_groups_table
...@@ -916,34 +918,24 @@ class EventDetailView(PermissionRequiredMixin, DetailView): ...@@ -916,34 +918,24 @@ class EventDetailView(PermissionRequiredMixin, DetailView):
return context return context
class PersonGroupWizardView(SessionWizardView): class PersonGroupView(PermissionRequiredMixin, FormView):
template_name = "paweljong/person_group_wizard.html"
file_storage = settings.DEFAULT_FILE_STORAGE
def get_form_initial(self, step):
initial = self.initial_dict.get(step, {}) template_name = "paweljong/event/persons_group.html"
permission_required = "paweljong.add_persons_to_group_rule"
form_class = PersonGroupFormPerson
if step == "group": def form_valid(self, form):
if self.request.session["person_group_group"]:
group = Group.objects.get(id=self.request.session["person_group_group"])
initial.update(
{
"group": group,
}
)
return self.initial_dict.get(step, initial)
def done(self, form_list, **kwargs): group = Group.objects.get(id=self.kwargs["pk"])
cleaned_data_group = self.get_cleaned_data_for_step("group") try:
cleaned_data_person = self.get_cleaned_data_for_step("person") person = Person.objects.get(user__username=form.cleaned_data["username"])
group.members.add(person)
messages.success(self.request, _(f"Person {person} added successfully!"))
except Person.DoesNotExist:
messages.error(self.request, _("Person does not exist!"))
# Add person to group return super().form_valid(self)
group = cleaned_data_group["group"]
self.request.session["person_group_group"] = group.id
person = Person.objects.get(user__username=cleaned_data_person["username"])
group.members.add(person)
return redirect("add_persons_to_group") def get_success_url(self):
return reverse("add_persons_to_group", kwargs={"pk": self.kwargs["pk"]})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment