Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/ephios/core/forms/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class EventForm(forms.ModelForm):

class Meta:
model = Event
fields = ["title", "type", "description", "location"]
fields = ["title", "type", "description", "location", "planner_note"]
widgets = {"description": MarkdownTextarea}

def __init__(self, **kwargs):
Expand Down
22 changes: 22 additions & 0 deletions src/ephios/core/migrations/0040_event_planner_note.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Generated by Django 5.2.12 on 2026-04-25 17:37

from django.db import migrations, models


class Migration(migrations.Migration):
dependencies = [
("core", "0039_alter_userprofile_disabled_notifications"),
]

operations = [
migrations.AddField(
model_name="event",
name="planner_note",
field=models.TextField(
blank=True,
help_text="Note only visible to responsibles of this event.",
null=True,
verbose_name="planner note",
),
),
]
6 changes: 6 additions & 0 deletions src/ephios/core/models/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,12 @@ class Event(Model):
description = TextField(_("description"), blank=True, null=True)
location = CharField(_("location"), max_length=254)
type = ForeignKey(EventType, on_delete=models.CASCADE, verbose_name=_("event type"))
planner_note = models.TextField(
_("planner note"),
blank=True,
null=True,
help_text=_("Note only visible to responsibles of this event."),
)
active = BooleanField(default=False, verbose_name=_("active"))
group_object_permission_set = GenericRelation(
GroupObjectPermission, object_id_field="object_pk"
Expand Down
141 changes: 96 additions & 45 deletions src/ephios/core/templates/core/event_form.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,53 +21,104 @@
{% render_alert unsaved_message|add:" ("|add:event.title|add:"). <a class='btn btn-light' href='"|add:event.get_absolute_url|add:"'>"|add:view_message|add:"</a>"|safe %}
{% endfor %}
{% endif %}
<div class="page-header">
{% if event.id %}
<h1>{% translate "Edit event" %}</h1>
{% else %}
<h1>
{% blocktranslate trimmed with title=eventtype.title %}
Create new {{ title }}
{% endblocktranslate %}
</h1>
{% endif %}
</div>
<form method="post" class="form">
{% csrf_token %}
{{ form.title|as_crispy_field }}
{% if form.type %}
{{ form.type|as_crispy_field }}
{% endif %}
{{ form.description|as_crispy_field }}
{{ form.location|as_crispy_field }}

<div class="card mb-3">
<div class="card-header collapsed" data-bs-toggle="collapse" data-bs-target="#advancedSettings">
<a href="#">{% translate "Permissions" %}</a>
<div class="row">
<div class="col">
<div class="page-header">
{% if event.id %}
<h1>{% translate "Edit event" %}</h1>
{% else %}
<h1>
{% blocktranslate trimmed with title=eventtype.title %}
Create new {{ title }}
{% endblocktranslate %}
</h1>
{% endif %}
</div>
<div id="advancedSettings" class="collapse">
<div class="card-body">
{{ form.visible_for|as_crispy_field }}
{{ form.responsible_groups|as_crispy_field }}
{{ form.responsible_users|as_crispy_field }}
</div>
</div>
</div>
<form method="post" class="form">
{% csrf_token %}
<nav>
<ul class="nav nav-tabs" id="event-form-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="general-tab" data-bs-toggle="tab"
data-bs-target="#general-tab-pane"
type="button" role="tab" aria-controls="general-tab-pane" aria-selected="true">
{% translate "General" %}
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="permissions-tab" data-bs-toggle="tab"
data-bs-target="#permissions-tab-pane"
type="button" role="tab" aria-controls="permissions-tab-pane" aria-selected="false">
{% translate "Permissions" %}
</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="plugins-tab" data-bs-toggle="tab"
data-bs-target="#plugins-tab-pane"
type="button" role="tab" aria-controls="plugins-tab-pane" aria-selected="false">
{% translate "Functions" %}
</button>
</li>
</ul>
</nav>

{% for plugin_form in plugin_forms %}
{{ plugin_form }}
{% endfor %}
<div class="tab-content" id="event-form-panes">
<div class="tab-pane active" id="general-tab-pane" role="tabpanel" aria-labelledby="general-tab"
tabindex="0">
{{ form.title|as_crispy_field }}
{% if form.type %}
{{ form.type|as_crispy_field }}
{% endif %}
{{ form.description|as_crispy_field }}
{{ form.location|as_crispy_field }}
</div>

<div class="form-group">
{% if event.id %}
<a role="button" class="btn btn-secondary"
href="{{ event.get_absolute_url }}">{% translate "Back" %}</a>
<button type="submit" class="btn btn-primary float-end">{% translate "Save" %}</button>
{% else %}
<a role="button" class="btn btn-secondary"
href="{% url "core:event_list" %}">{% translate "Cancel" %}</a>
<button type="submit" class="btn btn-primary float-end">{% translate "Next" %}</button>
{% endif %}
<div class="tab-pane" id="permissions-tab-pane" role="tabpanel"
aria-labelledby="permissions-tab"
tabindex="0">
{{ form.visible_for|as_crispy_field }}
{{ form.responsible_groups|as_crispy_field }}
{{ form.responsible_users|as_crispy_field }}
{{ form.planner_note|as_crispy_field }}
</div>
<div class="tab-pane" id="plugins-tab-pane" role="tabpanel" aria-labelledby="plugins-tab"
tabindex="0">
{% for plugin_form in plugin_forms %}
{{ plugin_form }}
{% endfor %}
</div>
</div>

<div class="form-group mt-3">
{% if event.id %}
<a role="button" class="btn btn-secondary"
href="{{ event.get_absolute_url }}">{% translate "Back" %}</a>
<button type="submit" class="btn btn-primary float-end">{% translate "Save" %}</button>
{% else %}
<a role="button" class="btn btn-secondary"
href="{% url "core:event_list" %}">{% translate "Cancel" %}</a>
<button type="submit" class="btn btn-primary float-end">{% translate "Next" %}</button>
{% endif %}
</div>
</form>
</div>
</form>
{% if event.id %}
<div class="d-none d-lg-block col-3">
<div class="card mb-2 border-info">
<div class="card-body">
<h5 class="card-title">
{{ event.title }}
</h5>
<p class="card-text">
{% translate "Event type" %}: {{ event.type }}<br>
{% translate "Location" %}: {{ event.location }}
</p>
</div>
</div>
{% for shift in event.shifts.all %}
{% include "core/fragments/shift_box_small.html" with shift=shift editing_shift=None can_change=True %}
{% endfor %}
</div>
{% endif %}
</div>
{% endblock %}
6 changes: 5 additions & 1 deletion src/ephios/core/templates/core/fragments/shift_box_big.html
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,11 @@
{% shift_plugin_actions shift request as plugin_actions %}
{% for plugin_action in plugin_actions %}
<a href="{{ plugin_action.url }}"
class="btn btn-outline-info">{{ plugin_action.label }}</a>
class="btn btn-outline-info">
<span class="text-body">
{{ plugin_action.label }}
</span>
</a>
{% endfor %}
{% endif %}

Expand Down
Loading
Loading