diff --git a/aleksis/apps/paweljong/predicates.py b/aleksis/apps/paweljong/predicates.py index d6c92084f9743934805cd25f213c2c6a9701c98d..9fe8dfb38d03ca12589be0778cb1b85dfee33ba1 100644 --- a/aleksis/apps/paweljong/predicates.py +++ b/aleksis/apps/paweljong/predicates.py @@ -38,3 +38,9 @@ def is_organiser(user: User, obj: Union[Event, EventRegistration]) -> bool: def is_event_published(user: User, obj: EventRegistration) -> bool: """Predicate which checks if the event is published.""" return obj.published + + +@predicate +def is_participant(user: User, obj: Event) -> bool: + """Predicate which checks if the user is member of the event.""" + return user in obj.linked_group.members.all() diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py index 7683d6d479fcd50828862598e6cab76d1fdd83b6..fa4f9e55e310e2b329b4e8c449dc254ea39545a6 100644 --- a/aleksis/apps/paweljong/rules.py +++ b/aleksis/apps/paweljong/rules.py @@ -8,7 +8,7 @@ from aleksis.core.util.predicates import ( ) from .models import Event, EventRegistration, Terms, Voucher -from .predicates import is_event_published, is_organiser, is_own_registration, is_own_voucher +from .predicates import is_event_published, is_organiser, is_own_registration, is_own_voucher, is_participant ## Vouchers @@ -231,3 +231,6 @@ rules.add_perm("paweljong.view_menu", can_view_menu_predicate) can_retract_registration_predicate = has_person & (is_organiser) rules.add_perm("paweljong.can_retract_registration_rule", can_retract_registration_predicate) + +can_view_tos_predicate = has_person & (is_participant) +rules.add_perm("paweljong.can_view_tos_rule", can_view_tos_predicate) diff --git a/aleksis/apps/paweljong/templates/paweljong/event/tos.html b/aleksis/apps/paweljong/templates/paweljong/event/tos.html new file mode 100644 index 0000000000000000000000000000000000000000..9d63b8f417f2f45ffc252dd966e83671ee0b7925 --- /dev/null +++ b/aleksis/apps/paweljong/templates/paweljong/event/tos.html @@ -0,0 +1,13 @@ +{% extends "core/base.html" %} +{% load material_form i18n any_js %} + +{% block page_title %}{% blocktrans %}Terms and conditions{% endblocktrans %}{% endblock %} +{% block browser_title %}{% blocktrans %}Terms and conditions{% endblocktrans %}{% endblock %} + +{% block content %} + + {% for term in obj.terms.all %} + {{ term }} + {% endfor %} + +{% endblock %} diff --git a/aleksis/apps/paweljong/urls.py b/aleksis/apps/paweljong/urls.py index d046e0506d6be8905b11e3b530bf83bf01b15e70..6935adeca3e8e536242624166b857dd2673f1cf8 100644 --- a/aleksis/apps/paweljong/urls.py +++ b/aleksis/apps/paweljong/urls.py @@ -37,6 +37,7 @@ account_conditions = { urlpatterns = [ path("event/<slug:slug>/edit", views.EditEventView.as_view(), name="edit_event_by_slug"), + path("event/<slug:slug>/tos", views.ViewToS.as_view(), name="view_event_tos_by_slug"), path( "event/<slug:slug>/register", views.RegisterEventWizardView.as_view(register_forms, condition_dict=condition_dict), diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py index 7065c2aeb253fcc1ed5b8e9f75d7788631a24506..9c8ae2455bcda36b32b3bd6a9f4a52af44a6bea2 100644 --- a/aleksis/apps/paweljong/views.py +++ b/aleksis/apps/paweljong/views.py @@ -952,3 +952,13 @@ class PersonGroupView(PermissionRequiredMixin, FormView): def get_success_url(self): return reverse("add_persons_to_group", kwargs={"pk": self.kwargs["pk"]}) + +class ViewToS(PermissionRequiredMixin, FormView): + + template_name = "paweljong/event/tos.html" + permission_required = "paweljong.can_view_tos_rule" + model = Event + slug_field = "slug" + + def get_queryset(self): + return Event.objects.all()