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

Merge branch '7-slug-for-event-must-not-be-the-short-name-of-the-group' into 'master'

Resolve "Slug for event must not be the short_name of the group"

Closes #7

See merge request !6
parents c96de14d 47636d17
No related branches found
No related tags found
1 merge request!6Resolve "Slug for event must not be the short_name of the group"
Pipeline #56309 canceled
...@@ -14,6 +14,7 @@ Added ...@@ -14,6 +14,7 @@ Added
* Add link to public page to events list * Add link to public page to events list
* Add RSS feed of upcoming events * Add RSS feed of upcoming events
* Add slug field to Event model
Changed Changed
~~~~~~~ ~~~~~~~
......
...@@ -43,7 +43,7 @@ class EditEventForm(ExtensibleForm): ...@@ -43,7 +43,7 @@ class EditEventForm(ExtensibleForm):
Fieldset( Fieldset(
_("Base data"), _("Base data"),
"linked_group", "linked_group",
Row("display_name", "description"), Row("display_name", "slug", "description"),
Row("place", "published"), Row("place", "published"),
Fieldset(_("Date data"), Row("date_event", "date_registration", "date_retraction")), Fieldset(_("Date data"), Row("date_event", "date_registration", "date_retraction")),
Fieldset(_("Event details"), Row("cost", "max_participants"), "information"), Fieldset(_("Event details"), Row("cost", "max_participants"), "information"),
...@@ -57,6 +57,7 @@ class EditEventForm(ExtensibleForm): ...@@ -57,6 +57,7 @@ class EditEventForm(ExtensibleForm):
"linked_group", "linked_group",
"display_name", "display_name",
"description", "description",
"slug",
"place", "place",
"published", "published",
"date_event", "date_event",
...@@ -378,7 +379,8 @@ class RegisterEventConsent(ExtensibleForm): ...@@ -378,7 +379,8 @@ class RegisterEventConsent(ExtensibleForm):
field_instance = forms.BooleanField( field_instance = forms.BooleanField(
required=True, required=True,
label=_( label=_(
"I confirm that the retraction of the registration is not possible anymore after {}" "I confirm that the retraction of the registration is not possible anymore "
"after {}"
).format(event.date_retraction), ).format(event.date_retraction),
) )
self.fields["retraction_deadline"] = field_instance self.fields["retraction_deadline"] = field_instance
......
# Generated by Django 3.2.12 on 2022-02-21 19:09
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('paweljong', '0011_registration_accepted_terms'),
]
operations = [
migrations.AddField(
model_name='event',
name='slug',
field=models.SlugField(max_length=255, verbose_name='Slug', blank=True),
preserve_default=False,
),
]
...@@ -2,6 +2,7 @@ from datetime import datetime ...@@ -2,6 +2,7 @@ from datetime import datetime
from django.db import models from django.db import models
from django.urls import reverse from django.urls import reverse
from django.utils.text import slugify
from django.utils.timezone import now from django.utils.timezone import now
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
...@@ -31,6 +32,7 @@ class Event(ExtensibleModel): ...@@ -31,6 +32,7 @@ class Event(ExtensibleModel):
description = models.CharField(max_length=500, verbose_name=_("Description")) description = models.CharField(max_length=500, verbose_name=_("Description"))
published = models.BooleanField(default=False, verbose_name=_("Publish")) published = models.BooleanField(default=False, verbose_name=_("Publish"))
place = models.CharField(max_length=50, verbose_name="Place") place = models.CharField(max_length=50, verbose_name="Place")
slug = models.SlugField(max_length=255, verbose_name=_("Slug"), blank=True)
# Date details # Date details
date_event = models.DateField(verbose_name=_("Date of event")) date_event = models.DateField(verbose_name=_("Date of event"))
...@@ -43,6 +45,15 @@ class Event(ExtensibleModel): ...@@ -43,6 +45,15 @@ class Event(ExtensibleModel):
information = RichTextField(verbose_name=_("Information about the event")) information = RichTextField(verbose_name=_("Information about the event"))
terms = models.ManyToManyField(Terms, verbose_name=_("Terms"), related_name="event", blank=True) terms = models.ManyToManyField(Terms, verbose_name=_("Terms"), related_name="event", blank=True)
def save(self, *args, **kwargs):
if not self.slug:
if self.linked_group.short_name:
self.slug = slugify(self.linked_group.short_name)
else:
self.slug = slugify(self.display_name)
return super().save(*args, **kwargs)
def __str__(self) -> str: def __str__(self) -> str:
return self.display_name return self.display_name
...@@ -70,7 +81,7 @@ class Event(ExtensibleModel): ...@@ -70,7 +81,7 @@ class Event(ExtensibleModel):
return self.date_event > now return self.date_event > now
def get_absolute_url(self): def get_absolute_url(self):
return reverse("event_by_name", kwargs={"slug": self.linked_group.short_name}) return reverse("event_by_name", kwargs={"slug": self.slug})
@property @property
def booked_percentage(self): def booked_percentage(self):
......
...@@ -15,13 +15,13 @@ class ManageEventsTable(tables.Table): ...@@ -15,13 +15,13 @@ class ManageEventsTable(tables.Table):
edit = tables.LinkColumn( edit = tables.LinkColumn(
"edit_event_by_slug", "edit_event_by_slug",
args=[A("linked_group__short_name")], args=[A("slug")],
verbose_name=_("Edit"), verbose_name=_("Edit"),
text=_("Edit"), text=_("Edit"),
) )
view = tables.LinkColumn( view = tables.LinkColumn(
"event_by_name", "event_by_name",
args=[A("linked_group__short_name")], args=[A("slug")],
verbose_name=_("View"), verbose_name=_("View"),
text=_("View"), text=_("View"),
) )
......
...@@ -61,9 +61,9 @@ ...@@ -61,9 +61,9 @@
</div> </div>
<div class="card-action"> <div class="card-action">
{% if can_register and not is_authenticated %} {% if can_register and not is_authenticated %}
<a href="{% url "register_event_by_slug_start" event.linked_group.short_name %}">{% trans "Register now" %}</a> <a href="{% url "register_event_by_slug_start" event.slug %}">{% trans "Register now" %}</a>
{% elif can_register and is_authenticated %} {% elif can_register and is_authenticated %}
<a href="{% url "register_event_by_slug" event.linked_group.short_name %}">{% trans "Register now" %}</a> <a href="{% url "register_event_by_slug" event.slug %}">{% trans "Register now" %}</a>
{% else %} {% else %}
<a href="#">{% trans "Not available" %}</a> <a href="#">{% trans "Not available" %}</a>
{% endif %} {% endif %}
......
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
or have problems logging in, please send us an e-mail. or have problems logging in, please send us an e-mail.
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<a href="{% url "login" %}?next=/app/paweljong/event/{{ event.linked_group.short_name }}/register">{% trans "Login" %}</a> <a href="{% url "login" %}?next=/app/paweljong/event/{{ event.slug }}/register">{% trans "Login" %}</a>
</div> </div>
<div id="with_email"> <div id="with_email">
<p> <p>
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
https://leopard.institute/pages/services.html</a> https://leopard.institute/pages/services.html</a>
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<a href="{% url "set_email_needed" event.linked_group.short_name %}">{% trans "Register now" %}</a> <a href="{% url "set_email_needed" event.slug %}">{% trans "Register now" %}</a>
</div> </div>
<div id="without_email"> <div id="without_email">
<p> <p>
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
a personal e-mail address, please choose the respective option instead! a personal e-mail address, please choose the respective option instead!
{% endblocktrans %} {% endblocktrans %}
</p> </p>
<a href="{% url "register_event_by_slug" event.linked_group.short_name %}">{% trans "Register now" %}</a> <a href="{% url "register_event_by_slug" event.slug %}">{% trans "Register now" %}</a>
</div> </div>
{% else %} {% else %}
<div id="not_possible"> <div id="not_possible">
......
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
<td> <td>
<i class="material-icons small">local_activity</a> <i class="material-icons small">local_activity</a>
</td> </td>
<td colspan="3"><a href="{% url 'edit_event_by_slug' registration.event.linked_group.short_name %}">{{ registration.event }}</a></td> <td colspan="3"><a href="{% url 'edit_event_by_slug' registration.event.slug %}">{{ registration.event }}</a></td>
</tr> </tr>
<tr> <tr>
<td> <td>
......
...@@ -53,7 +53,7 @@ class CreateEventView(PermissionRequiredMixin, AdvancedCreateView): ...@@ -53,7 +53,7 @@ class CreateEventView(PermissionRequiredMixin, AdvancedCreateView):
class EditEventView(PermissionRequiredMixin, RevisionMixin, AdvancedEditView): class EditEventView(PermissionRequiredMixin, RevisionMixin, AdvancedEditView):
form_class = EditEventForm form_class = EditEventForm
model = Event model = Event
slug_field = "linked_group__short_name" slug_field = "slug"
permission_required = "paweljong.change_event" permission_required = "paweljong.change_event"
context_object_name = "manage_events" context_object_name = "manage_events"
template_name = "paweljong/event/edit.html" template_name = "paweljong/event/edit.html"
...@@ -293,7 +293,7 @@ class RegisterEventWizardView(SessionWizardView): ...@@ -293,7 +293,7 @@ class RegisterEventWizardView(SessionWizardView):
def get_context_data(self, form, **kwargs): def get_context_data(self, form, **kwargs):
context = super().get_context_data(form, **kwargs) context = super().get_context_data(form, **kwargs)
context["event"] = Event.objects.get(linked_group__short_name=self.kwargs["slug"]) context["event"] = Event.objects.get(slug=self.kwargs["slug"])
if self.steps.current == "email": if self.steps.current == "email":
context["page_title"] = "" context["page_title"] = ""
...@@ -369,10 +369,10 @@ class RegisterEventWizardView(SessionWizardView): ...@@ -369,10 +369,10 @@ class RegisterEventWizardView(SessionWizardView):
if step == "email": if step == "email":
kwargs["request"] = self.request kwargs["request"] = self.request
if step == "additional": if step == "additional":
event = Event.objects.get(linked_group__short_name=self.kwargs["slug"]) event = Event.objects.get(slug=self.kwargs["slug"])
kwargs["event"] = event kwargs["event"] = event
if step == "consent": if step == "consent":
event = Event.objects.get(linked_group__short_name=self.kwargs["slug"]) event = Event.objects.get(slug=self.kwargs["slug"])
kwargs["event"] = event kwargs["event"] = event
return kwargs return kwargs
...@@ -439,7 +439,7 @@ class RegisterEventWizardView(SessionWizardView): ...@@ -439,7 +439,7 @@ class RegisterEventWizardView(SessionWizardView):
def done(self, form_list, **kwargs): def done(self, form_list, **kwargs):
event = Event.objects.get(linked_group__short_name=self.kwargs["slug"]) event = Event.objects.get(slug=self.kwargs["slug"])
cleaned_data_email = self.get_cleaned_data_for_step("email") cleaned_data_email = self.get_cleaned_data_for_step("email")
cleaned_data_contact_details = self.get_cleaned_data_for_step("contact_details") cleaned_data_contact_details = self.get_cleaned_data_for_step("contact_details")
cleaned_data_guardians = self.get_cleaned_data_for_step("guardians") cleaned_data_guardians = self.get_cleaned_data_for_step("guardians")
...@@ -610,7 +610,7 @@ class RegisterEventWizardView(SessionWizardView): ...@@ -610,7 +610,7 @@ class RegisterEventWizardView(SessionWizardView):
class EventFullView(DetailView): class EventFullView(DetailView):
model = Event model = Event
slug_field = "linked_group__short_name" slug_field = "slug"
template_name = "paweljong/event/full.html" template_name = "paweljong/event/full.html"
object_context_name = "event" object_context_name = "event"
...@@ -625,7 +625,7 @@ class EventFullView(DetailView): ...@@ -625,7 +625,7 @@ class EventFullView(DetailView):
class RegisterEventStart(DetailView): class RegisterEventStart(DetailView):
model = Event model = Event
slug_field = "linked_group__short_name" slug_field = "slug"
template_name = "paweljong/event/register_start.html" template_name = "paweljong/event/register_start.html"
object_context_name = "event" object_context_name = "event"
......
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