Skip to content

Commit e1a094c

Browse files
committed
fix event placeholders
1 parent 3452da5 commit e1a094c

8 files changed

Lines changed: 75 additions & 32 deletions

File tree

website/committees/templates/committees/committee_detail.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
{% render_placeholder object.description %}
2222
{% if user.is_authenticated %}
2323
<p class="fw-bold fs-6 mb-0">
24-
<a href="mailto:{{ object.email }}" class="link-dark stretched-link">
24+
<a href="mailto:{{ object.email }}" class="link-dark">
2525
<i class="fa-regular fa-envelope pe-2 fs-6"></i>{{ object.email }}
2626
</a>
2727
</p>

website/events/admin.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from cms.admin.placeholderadmin import PlaceholderAdminMixin
1+
from cms.admin.placeholderadmin import PlaceholderAdminMixin, FrontendEditableAdminMixin
22
from django.contrib.admin import ModelAdmin, register, StackedInline, TabularInline
33

44
from events.models import Event, Registration
@@ -12,7 +12,7 @@ class RegistrationInline(TabularInline):
1212

1313

1414
@register(Event)
15-
class EventAdmin(PlaceholderAdminMixin, TranslatedModelAdmin):
15+
class EventAdmin(FrontendEditableAdminMixin, TranslatedModelAdmin):
1616
"""The admin off events"""
1717

1818
inlines = [RegistrationInline]

website/events/cms_config.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from cms.app_base import CMSAppConfig
2+
from events.models import Event
3+
from events.views import event_detail_endpoint_view
4+
5+
6+
class EventConfig(CMSAppConfig):
7+
cms_enabled = True
8+
cms_toolbar_enabled_models = [(Event, event_detail_endpoint_view)]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Generated by Django 4.2.23 on 2025-10-18 09:02
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("events", "0014_remove_event_cost_event_cost_en_event_cost_nl"),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name="event",
15+
name="description",
16+
),
17+
]

website/events/models.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
from cms.models import PlaceholderField
1+
from cms.admin.placeholderadmin import FrontendEditableAdminMixin
2+
from cms.models import PlaceholderRelationField
3+
from cms.utils.placeholder import get_placeholder_from_slot
24
from django.contrib.auth.models import User
35
from django.core.exceptions import ValidationError
46
from django.core.validators import RegexValidator
@@ -11,9 +13,9 @@
1113
BooleanField,
1214
ForeignKey,
1315
SET_NULL,
14-
DecimalField,
1516
)
1617
from django.urls import reverse
18+
from django.utils.functional import cached_property
1719
from django.utils.timezone import now
1820
from django.utils.translation import gettext_lazy as _
1921
from filer.fields.image import FilerImageField
@@ -31,7 +33,7 @@ class Event(Model, metaclass=ModelTranslateMeta):
3133
start_date = DateTimeField(verbose_name=_("start date"))
3234
end_date = DateTimeField(verbose_name=_("end date"))
3335
location = CharField(max_length=255, verbose_name=_("location"))
34-
description = PlaceholderField("description", verbose_name=_("description"))
36+
description = PlaceholderRelationField()
3537

3638
limit = IntegerField(null=True, blank=True, verbose_name=_("participant limit"))
3739
private_registrations = BooleanField(
@@ -62,6 +64,13 @@ class Event(Model, metaclass=ModelTranslateMeta):
6264
],
6365
)
6466

67+
@cached_property
68+
def description_placeholder(self):
69+
return get_placeholder_from_slot(self.description, "description")
70+
71+
def get_template(self):
72+
return "events/event_structure.html"
73+
6574
def clean(self) -> None:
6675
if (self.registration_start is None) != (self.registration_end is None):
6776
raise ValidationError(

website/events/templates/events/event_detail.html

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,35 +17,37 @@ <h4 class="text-center">
1717
{% endblock pagetitle %}
1818

1919
{% block content %}
20-
<div class="row mb-3">
21-
<div class="w-100">
22-
<img src="{{ object.image.url }}" class="img-fluid w-100">
23-
</div>
24-
</div>
25-
<div class="row mb-3">
26-
<div class="col-4 d-flex align-items-center">
27-
<i class="fa-regular fa-clock pe-2 fs-3"></i>
28-
<p class="fw-bold fst-italic fs-6 m-0">
29-
{% if object.show_end_date %}
30-
{% datetimerange object.start_date object.end_date %}
31-
{% else %}
32-
{{ object.start_date|date:"G:i" }}
33-
{% endif %}
34-
</p>
35-
</div>
36-
<div class="col-4 d-flex align-items-center">
37-
<i class="fa-solid fa-location-dot pe-2 fs-3"></i>
38-
<p class="fw-bold fst-italic fs-6 m-0">{{ object.location }}</p>
20+
{% render_model_block object %}
21+
<div class="row mb-3">
22+
<div class="w-100">
23+
<img src="{{ instance.image.url }}" class="img-fluid w-100">
24+
</div>
3925
</div>
40-
<div class="col-4 d-flex align-items-center">
41-
<i class="fa-solid fa-euro-sign pe-2 fs-3"></i>
42-
<p class="fw-bold fst-italic fs-6 m-0">
43-
{% if object.cost %}{{ object.cost }}{% else %}{% trans "free"|capfirst %}{% endif %}
44-
</p>
26+
<div class="row mb-3">
27+
<div class="col-4 d-flex align-items-center">
28+
<i class="fa-regular fa-clock pe-2 fs-3"></i>
29+
<p class="fw-bold fst-italic fs-6 m-0">
30+
{% if instance.show_end_date %}
31+
{% datetimerange instance.start_date instance.end_date %}
32+
{% else %}
33+
{{ instance.start_date|date:"G:i" }}
34+
{% endif %}
35+
</p>
36+
</div>
37+
<div class="col-4 d-flex align-items-center">
38+
<i class="fa-solid fa-location-dot pe-2 fs-3"></i>
39+
<p class="fw-bold fst-italic fs-6 m-0">{{ instance.location }}</p>
40+
</div>
41+
<div class="col-4 d-flex align-items-center">
42+
<i class="fa-solid fa-euro-sign pe-2 fs-3"></i>
43+
<p class="fw-bold fst-italic fs-6 m-0">
44+
{% if instance.cost %}{{ instance.cost }}{% else %}{% trans "free"|capfirst %}{% endif %}
45+
</p>
46+
</div>
4547
</div>
46-
</div>
48+
{% endrender_model_block %}
4749
<div class="row ms-0 me-1 mb-3">
48-
<div class="rounded event-description">{% render_placeholder object.description %}</div>
50+
<div class="rounded event-description">{% render_placeholder object.description_placeholder %}</div>
4951
</div>
5052
<div class="row mb-3">
5153
{% if user.is_authenticated and object.registration_start %}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{% load cms_tags %}
2+
{% placeholder "description" %}

website/events/views.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class EventDetailView(DetailView):
4040

4141
def get_context_data(self, **kwargs):
4242
context = super().get_context_data(**kwargs)
43+
self.request.toolbar.set_object(self.object)
4344

4445
context["now"] = timezone.now()
4546

@@ -54,6 +55,10 @@ def get_context_data(self, **kwargs):
5455
return context
5556

5657

58+
def event_detail_endpoint_view(request, event):
59+
return EventDetailView.as_view()(request, pk=event.pk)
60+
61+
5762
class EventRegisterView(LoginRequiredMixin, View):
5863
http_method_names = ["post"]
5964

0 commit comments

Comments
 (0)