diff --git a/aleksis/apps/paweljong/templates/paweljong/event/detail.html b/aleksis/apps/paweljong/templates/paweljong/event/detail.html new file mode 100644 index 0000000000000000000000000000000000000000..2820c52e7fac9064fb2253f0011c647d373fdca3 --- /dev/null +++ b/aleksis/apps/paweljong/templates/paweljong/event/detail.html @@ -0,0 +1,41 @@ +{# -*- engine:django -*- #} + +{% extends "core/base.html" %} + +{% load i18n static rules material_form %} +{% load render_table from django_tables2 %} + +{% block browser_title %}{{ event }}{% endblock %} + +{% block content %} + <h4>{{ event }}</h4> + + {% has_perm 'paweljong.manage_event' user event as can_manage_event %} + {% has_perm 'paweljong.delete_event' user event as can_delete_event %} + {% has_perm 'paweljong.send_notification_mail' user event as can_send_notification %} + {% has_perm 'tezor.view_invoice_rule' user event as can_view_invoice %} + {% has_perm 'core.edit_person_rule' user person as can_change_person %} + + {% if can_manage_event or can_manage_event_preferences or can_delete_event or can_send_notification %} + <p> + {% if can_manage_event %} + <a href="{% url 'edit_event_by_pk' event.pk %}" class="btn waves-effect waves-light"> + <i class="material-icons left iconify" data-icon="mdi:edit"></i> + {% trans "Edit" %} + </a> + {% endif %} + + {% if can_delete_event %} + <a href="{% url 'delete_event_by_pk' event.pk %}" class="btn waves-effect waves-light red"> + <i class="material-icons left iconify" data-icon="mdi:delete"></i> + {% trans "Delete" %} + </a> + {% endif %} + + </p> + {% endif %} + + <h5>{% blocktrans %}Registrations</h5> + {% render_table registrations_table %} + +{% endblock %} diff --git a/aleksis/apps/paweljong/urls.py b/aleksis/apps/paweljong/urls.py index 5568600668fe34105b8ceb8f5df8b8f51ef1d0b0..d2dddb9288a406d34884f8f4a04bf940ad51f1ee 100644 --- a/aleksis/apps/paweljong/urls.py +++ b/aleksis/apps/paweljong/urls.py @@ -43,6 +43,7 @@ urlpatterns = [ name="register_event_by_slug", ), 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>/start", views.RegisterEventStart.as_view(), diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py index a16c8f8f8ab446cadd4d5e4d3172900ac0a0a86f..2127f80b5752dc4b7f5510ca2d7b3a0c0f3e207f 100644 --- a/aleksis/apps/paweljong/views.py +++ b/aleksis/apps/paweljong/views.py @@ -899,3 +899,28 @@ class RegistrationStateEditView(PermissionRequiredMixin, AdvancedEditView): template_name = "paweljong/registration_state/edit.html" success_url = reverse_lazy("registration_states") success_message = _("The term has been saved.") + + +class EventDetailView(PermissionRequiredMixin, DetailView): + """Detail view for an event instance.""" + + context_object_name = "event" + permission_required = "paweljong.view_event_rule" + template_name = "paweljong/event/detail.html" + model = Event + slug_field = "slug" + + def get_queryset(self): + return Event.objects.all() + + def get_context_data(self, **kwargs): + + context = super().get_context_data(**kwargs) + + # Build table + registrations = EventRegistration.objects.filter(event=self.object) + registrations_table = EventRegistrationsTable(registrations) + RequestConfig(request).configure(registrations_table) + context["registrations_table"] = registrations_table + + return context