Skip to content
Snippets Groups Projects
Commit 6387f4ed authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Merge branch '18-add-persons-to-group-by-username' into '13-event-detail-page'

Resolve "Add persons to group by username"

See merge request !21
parents 63645218 463b0a49
No related branches found
No related tags found
2 merge requests!23Resolve "Event detail page",!21Resolve "Add persons to group by username"
Pipeline #75140 failed
...@@ -489,3 +489,15 @@ class RegistrationStatesForm(forms.ModelForm): ...@@ -489,3 +489,15 @@ class RegistrationStatesForm(forms.ModelForm):
class Meta: class Meta:
model = RegistrationState model = RegistrationState
exclude = [] exclude = []
class PersonGroupFormPerson(forms.Form):
layout = Layout("username")
username = forms.CharField(
required=True,
label=_("Person"),
widget=forms.TextInput(attrs={"autofocus": "", "autocomplete": "off"}),
help_text=_("Please enter a username."),
)
...@@ -134,3 +134,27 @@ class RegistrationStatesTable(tables.Table): ...@@ -134,3 +134,27 @@ 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"),
)
class AdditionalFieldsTable(tables.Table):
class Meta:
attrs = {"class": "highlight"}
title = tables.LinkColumn("edit_additional_field_by_id", args=[A("id")])
...@@ -77,11 +77,16 @@ ...@@ -77,11 +77,16 @@
</div> </div>
</div> </div>
<h5>{% blocktrans %}Additional fields{% endblocktrans %}</h5> <div class="row">
{% render_table additional_fields_table %} <div class="col s3">
<h5>{% blocktrans %}Additional fields{% endblocktrans %}</h5>
<h5>{% blocktrans %}Child groups{% endblocktrans%}</h5> {% render_table additional_fields_table %}
{% render_table child_groups_table %} </div>
<div class="col s9">
<h5>{% blocktrans %}Child groups{% endblocktrans%}</h5>
{% render_table child_groups_table %}
</div>
</div>
<h5>{% blocktrans %}Registrations{% endblocktrans %}</h5> <h5>{% blocktrans %}Registrations{% endblocktrans %}</h5>
{% render_table registrations_table %} {% render_table registrations_table %}
......
{% 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 %}
...@@ -42,6 +42,11 @@ urlpatterns = [ ...@@ -42,6 +42,11 @@ urlpatterns = [
views.RegisterEventWizardView.as_view(register_forms, condition_dict=condition_dict), views.RegisterEventWizardView.as_view(register_forms, condition_dict=condition_dict),
name="register_event_by_slug", name="register_event_by_slug",
), ),
path(
"group_persons/<int:pk>/add",
views.PersonGroupView.as_view(),
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"),
path("event/<slug:slug>/detail", views.EventDetailView.as_view(), name="event_detail_by_name"), path("event/<slug:slug>/detail", views.EventDetailView.as_view(), name="event_detail_by_name"),
path( path(
......
...@@ -24,8 +24,7 @@ from templated_email import send_templated_mail ...@@ -24,8 +24,7 @@ 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.models import Activity, Person from aleksis.core.models import Activity, Group, Person
from aleksis.core.tables import AdditionalFieldsTable, GroupsTable
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 +36,14 @@ from .forms import ( ...@@ -37,11 +36,14 @@ 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 (
AdditionalFieldsTable,
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
...@@ -914,3 +916,26 @@ class EventDetailView(PermissionRequiredMixin, DetailView): ...@@ -914,3 +916,26 @@ class EventDetailView(PermissionRequiredMixin, DetailView):
context["additional_fields_table"] = additional_fields_table context["additional_fields_table"] = additional_fields_table
return context return context
class PersonGroupView(PermissionRequiredMixin, FormView):
template_name = "paweljong/event/persons_group.html"
permission_required = "paweljong.add_persons_to_group_rule"
form_class = PersonGroupFormPerson
def form_valid(self, form):
group = Group.objects.get(id=self.kwargs["pk"])
try:
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!"))
return super().form_valid(self)
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