diff --git a/src/backoffice/forms.py b/src/backoffice/forms.py index e4482cf688867b6917aceded0a62c0e0b0ee4599..555f2481a9cb0285a921dc6d3e68e7dcaaf97fe6 100644 --- a/src/backoffice/forms.py +++ b/src/backoffice/forms.py @@ -114,6 +114,9 @@ class AssemblyEditForm(TranslatedFieldsForm): 'assembly_location', 'registration_details', ] + widgets = { + 'assembly_location': forms.Textarea(attrs={'rows': 4}), + } def __init__(self, *args, staff_access: bool, staff_mode: bool, assembly_staff_access: bool, channel_staff_access: bool, **kwargs): super().__init__(*args, **kwargs) @@ -149,7 +152,7 @@ class AssemblyEditForm(TranslatedFieldsForm): self.fields['is_remote'].disabled = True tags = forms.CharField(required=False) - parent_id = forms.UUIDField(required=False) + parent_id = forms.UUIDField(required=False, help_text="The parent assembly's ID") def clean_tags(self): # try to detect people delimiting tags with space instead of comma diff --git a/src/backoffice/locale/de/LC_MESSAGES/django.po b/src/backoffice/locale/de/LC_MESSAGES/django.po index 67f12b5e089629e86c64a8985c5285d280ba798d..4290e78bfcb7cac481bdb7368860a35f5067b7cc 100644 --- a/src/backoffice/locale/de/LC_MESSAGES/django.po +++ b/src/backoffice/locale/de/LC_MESSAGES/django.po @@ -294,18 +294,6 @@ msgstr "Ja" msgid "no" msgstr "Nein" -# use translation from core -msgid "Assembly__is_physical__help" -msgstr "" - -# use translation from core -msgid "Assembly__is_virtual__help" -msgstr "" - -# use translation from core -msgid "Assembly__is_remote__help" -msgstr "" - # use translation from core msgid "Assembly__state_assembly" msgstr "" @@ -350,6 +338,9 @@ msgstr "Anmelde-Informationen" msgid "assembly_links" msgstr "Befreundete Assemblies" +msgid "Edit" +msgstr "Bearbeiten" + msgid "no_entries" msgstr "keine Einträge" @@ -410,6 +401,9 @@ msgstr "Bezug zu anderer Assembly herstellen" msgid "assemblyedit_links__intro" msgstr "Ihr fühlt euch einer anderen Assembly verbunden, möchtet eure Buddies in der Nähe haben? Lasst uns wissen wer sie sind!" +msgid "remove" +msgstr "entfernen" + msgid "Event-new" msgstr "Neue Veranstaltung" diff --git a/src/backoffice/locale/en/LC_MESSAGES/django.po b/src/backoffice/locale/en/LC_MESSAGES/django.po index f55f82ac8283574887740a9c5c873128dd7a5aa9..5553fbae5d1970a18b668839ecde2a77f88d515e 100644 --- a/src/backoffice/locale/en/LC_MESSAGES/django.po +++ b/src/backoffice/locale/en/LC_MESSAGES/django.po @@ -294,18 +294,6 @@ msgstr "Yes" msgid "no" msgstr "No" -# use translation from core -msgid "Assembly__is_physical__help" -msgstr "" - -# use translation from core -msgid "Assembly__is_virtual__help" -msgstr "" - -# use translation from core -msgid "Assembly__is_remote__help" -msgstr "" - msgid "Assembly__state_assembly" msgstr "assembly" @@ -348,6 +336,9 @@ msgstr "registration details" msgid "assembly_links" msgstr "related assemblies" +msgid "Edit" +msgstr "" + msgid "no_entries" msgstr "no entries" @@ -408,6 +399,9 @@ msgstr "Associate with another assembly" msgid "assemblyedit_links__intro" msgstr "You like to be close to your friends? Let us know who they are." +msgid "remove" +msgstr "remove" + msgid "Event-new" msgstr "new event" diff --git a/src/backoffice/templates/backoffice/assembly_badges.html b/src/backoffice/templates/backoffice/assembly_badges.html index 055cb24c9745afa95580f63fc88e993ceded85d3..1c2ffcfc65347ebc6dbf329b5c5cb75055ee99c3 100644 --- a/src/backoffice/templates/backoffice/assembly_badges.html +++ b/src/backoffice/templates/backoffice/assembly_badges.html @@ -17,7 +17,7 @@ {% trans "Badges" %} {% if can_manage %} <a href="{% url 'backoffice:assembly-create-badge' assembly=assembly.id %}" - class="btn btn-sm btn-primary float-right">+</a> + class="btn btn-sm btn-primary float-end">+</a> {% endif %} </div> <div class="card-body"> diff --git a/src/backoffice/templates/backoffice/assembly_basicdata.html b/src/backoffice/templates/backoffice/assembly_basicdata.html index f68d03bc125219fcc63115e4085ec439bd20eab3..4779b582fb8f1285464aff7c5eb3f2328486ba1e 100644 --- a/src/backoffice/templates/backoffice/assembly_basicdata.html +++ b/src/backoffice/templates/backoffice/assembly_basicdata.html @@ -1,117 +1,87 @@ -{% load c3assemblies %} {% load i18n %} -{% load widget_tweaks %} +{% load django_bootstrap5 %} -<div class="form-group row"> - <div class="col-sm-9"> - <label class="form-label" for="id_name" title="{{ form.name.help_text }}">{{ form.name.label_tag }}</label> - {% render_field form.name class+="form-control" title=form.name.help_text %} - </div> - <div class="col-sm-3"> - <label class="form-label" for="id_slug" title="{{ form.slug.help_text }}">{{ form.slug.label_tag }}</label> - {% render_field form.slug class+="form-control" title=form.slug.help_text %} - </div> +<div class="row"> + <div class="col-md-8">{% bootstrap_field form.name %}</div> + <div class="col-md-4">{% bootstrap_field form.slug %}</div> </div> -<div class="form-group row"> - {% with conference.get_single_supported_assembly_type as c_ssat %} - {% if c_ssat == None %} - <div class="col-sm-2"> - {% if conference.support_assembly_physical %} - <label class="form-label" for="id_is_physical">{{ form.is_physical.label_tag }}</label> - {% render_field form.is_physical class+="form-control" title=form.is_physical.help_text %} - {% endif %} - </div> - <div class="col-sm-2"> - {% if conference.support_assembly_virtual %} - <label class="form-label" for="id_is_virtual">{{ form.is_virtual.label_tag }}</label> - {% render_field form.is_virtual class+="form-control" title=form.is_virtual.help_text %} - {% endif %} - </div> - <div class="col-sm-2"> - {% if conference.support_assembly_remote %} - <label class="form-label" for="id_is_remote">{{ form.is_remote.label_tag }}</label> - {% render_field form.is_remote class+="form-control" title=form.is_remote.help_text %} +<div class="row"> + <div class="col"> + {% with conference.get_single_supported_assembly_type as conf_single_assembly_type %} + <div class="row"> + {% if conf_single_assembly_type == None %} + {% if conference.support_assembly_physical %} + <div class="col">{% bootstrap_field form.is_physical %}</div> + {% endif %} + {% if conference.support_assembly_virtual %} + <div class="col">{% bootstrap_field form.is_virtual %}</div> + {% endif %} + {% if conference.support_assembly_remote %} + <div class="col">{% bootstrap_field form.is_remote %}</div> + {% endif %} + {% else %} + <div class="col"> + {% if assembly.is_physical %} + <label class="form-label" for="is_physical">{{ form.is_physical.label }}</label> + <div class="form-text" id="is_physical">{{ form.is_physical.help_text }}</div> + {% endif %} + {% if assembly.is_virtual %} + <label class="form-label" for="is_virtual">{{ form.is_virtual.label }}</label> + <div class="form-text" id="is_virtual">{{ form.is_virtual.help_text }}</div> + {% endif %} + {% if assembly.is_remote %} + <label class="form-label" for="is_remote">{{ form.is_remote.label }}</label> + <div class="form-text" id="is_remote">{{ form.is_remote.help_text }}</div> + {% endif %} + </div> {% endif %} - </div> - {% else %} - <div class="col-sm-6 text-muted" - title=" {% if assembly.is_physical %}{% trans "Assembly__is_physical__help" %}{% endif %} {% if assembly.is_virtual %}{% trans "Assembly__is_virtual__help" %}{% endif %} {% if assembly.is_remote %}{% trans "Assembly__is_remote__help" %}{% endif %} "> - </div> - {% endif %} - {% endwith %} - <div class="col-sm-{% if conference.support_channels %}3{% else %}6{% endif %}"> + {% endwith %} + </div> + </div> + <div class="col-md-3"> <label class="form-label" for="id_state_assembly">{% trans "Assembly__state_assembly" %}</label> <div id="id_state_assembly">{{ form.instance.get_state_assembly_display }}</div> </div> {% if conference.support_channels %} - <div class="col-sm-3"> + <div class="col-md-3"> <label class="form-label" for="id_state_channel">{% trans "Assembly__state_channel" %}</label> <div id="id_state_channel">{{ form.instance.get_state_channel_display }}</div> </div> {% endif %} </div> -<div class="form-group row"> - <div class="col-sm-12"> - <label class="form-label" - for="id_banner_image" - title="{{ form.banner_image.help_text }}">{{ form.banner_image.label_tag }}</label> - {% render_field form.banner_image class+="form-control" title=form.banner_image.help_text %} +<div class="row"> + <div class="col"> + <div class="col">{% bootstrap_field form.banner_image %}</div> </div> </div> - -<div class="form-group row"> - <div class="col-sm-{% if conference.support_assembly_remote %}8{% else %}12{% endif %}"> - <label class="form-label" - for="id_assembly_link" - title="{{ form.assembly_link.help_text }}">{{ form.assembly_link.label_tag }}</label> - {% render_field form.assembly_link class+="form-control" title=form.assembly_link.help_text type="url" %} +<div class="row"> + <div class="col"> + <div class="col">{% bootstrap_field form.assembly_link %}</div> </div> {% if conference.support_assembly_remote %} - <div class="col-sm-4"> - <label class="form-label" - for="id_assembly_location" - title="{{ form.assembly_location.help_text }}">{{ form.assembly_location.label_tag }}</label> - {% render_field form.assembly_location class+="form-control" title=form.assembly_location.help_text rows=3 %} + <div class="col-md-4"> + <div class="col">{% bootstrap_field form.assembly_location %}</div> </div> {% endif %} </div> -<div class="form-group row"> - <div class="col-sm-6"> - <label class="form-label" for="id_description_de">{{ form.description_de.label_tag }}</label> - {% render_field form.description_de class+="form-control" %} - </div> - <div class="col-sm-6"> - <label class="form-label" for="id_description_en">{{ form.description_en.label_tag }}</label> - {% render_field form.description_en class+="form-control" %} - </div> +<div class="row"> + <div class="col-md">{% bootstrap_field form.description_de %}</div> + <div class="col-md">{% bootstrap_field form.description_en %}</div> </div> {% with handled_base_fields="name,slug,is_physical,is_virtual,is_remote,banner_image,assembly_link,assembly_location,description_de,description_en,registration_details"|split:"," %} {% for field in base_fields %} {% if field.name not in handled_base_fields %} - <div class="form-group row"> - <label class="col-sm-2 col-form-label" for="frm{{ field.name }}">{{ field.label_tag }}</label> - <div class="col-sm-10{% if field.disabled %} text-muted{% endif %}"> - {% if not field.disabled %} - {% render_field field class+="form-control" title=field.help_text %} - {% else %} - <input type="hidden" name="{{ field.name }}" value="{{ field.value }}"> - {% render_field field class+="form-control" disabled="disabled" %} - {% endif %} - {% if field.help_text %}<small class="form-text text-muted">{{ field.help_text }}</small>{% endif %} - {% for error in field.errors %}<div class="invalid-feedback">{{ error }}</div>{% endfor %} - </div> + <div class="row"> + <div class="col">{% bootstrap_field field %}</div> </div> {% endif %} {% endfor %} {% endwith %} -<div class="form-group row text-muted"> - <div class="col-sm-12"> - <label class="form-label" for="id_registration_details">{{ form.registration_details.label_tag }}</label> - {% render_field form.registration_details class+="form-control" title=form.registration_details.help_text %} - </div> +<div class="row text-muted"> + <div class="col">{% bootstrap_field form.registration_details %}</div> </div> diff --git a/src/backoffice/templates/backoffice/assembly_detail.html b/src/backoffice/templates/backoffice/assembly_detail.html index 4a5503cc67e4156a54b25351719068f47b0294ea..af23a6f1c85adce251871ce058e2d44e45154d93 100644 --- a/src/backoffice/templates/backoffice/assembly_detail.html +++ b/src/backoffice/templates/backoffice/assembly_detail.html @@ -10,13 +10,13 @@ <div class="col-md-10"> <div class="card border-primary"> <div class="card-header bg-primary text-white"> - {% if assembly.is_official %}<span class="badge badge-light float-right">official</span>{% endif %} + {% if assembly.is_official %}<span class="badge badge-light float-end">official</span>{% endif %} {% if can_manage %} - <span class="float-right"><a href="{% url 'backoffice:assembly-edit' pk=assembly.pk %}" + <span class="float-end"><a href="{% url 'backoffice:assembly-edit' pk=assembly.pk %}" class="btn btn-sm btn-light">{% trans "edit" %}</a></span> {% endif %} {% if assembly.is_public %} - <a class="float-right btn btn-sm btn-info me-2" + <a class="float-end btn btn-sm btn-info me-2" href="{% hub_absolute 'plainui:assembly' assembly_slug=assembly.slug %}">{% trans "public" %}</a> {% endif %} {{ assembly.name }} @@ -119,7 +119,13 @@ {% if assembly.hierarchy == 'regular' %} <div class="col-md-12"> <div class="card"> - <div class="card-header">{% trans "assembly_links" %}</div> + <div class="card-header"> + {% trans "assembly_links" %} + <a class="float-end btn btn-primary btn-sm" + href="{% url 'backoffice:assembly-editlinks' pk=assembly.pk %}" + target="_blank" + title="{% trans "Edit" %}">{% trans "Edit" %}</a> + </div> <div class="card-body"> {% with la=assembly.linked_assemblies %} {% if la|length > 0 %} diff --git a/src/backoffice/templates/backoffice/assembly_edit.html b/src/backoffice/templates/backoffice/assembly_edit.html index 1b5cead2dc6c4d41bbf5b420f6f48ff6ada7354f..84743ef972261c01dc1d86154f622b15cb09acde 100644 --- a/src/backoffice/templates/backoffice/assembly_edit.html +++ b/src/backoffice/templates/backoffice/assembly_edit.html @@ -1,7 +1,5 @@ {% extends "backoffice/base.html" %} {% load i18n %} -{% load static %} -{% load widget_tweaks %} {% block content %} {% include "backoffice/assembly_edit_header.html" %} @@ -61,9 +59,8 @@ <p>{% trans "assemblyedit_parent__intro" %}</p> <div class="input-group"> - <label class="form-label" for="assembly_parent">{% trans "assembly_parent" %}</label> - - <select id="assembly_parent" name="parent_id"> + <label class="input-group-text" for="assembly_parent">{% trans "assembly_parent" %}</label> + <select class="form-select" id="assembly_parent" name="parent_id"> <option value="" {% if assembly.parent is None %}selected="selected"{% endif %}> -- {% trans "none" %} -- @@ -89,18 +86,13 @@ <div class="col-md-6"> <div class="card"> {% if not assembly.is_cluster %} - <div class="card-header"> - {% trans "assemblyedit_links" %} - <a href="{% url 'backoffice:assembly-editlinks' pk=assembly.pk %}" - target="_blank" - title="{% trans "opensinnewpage" %}">({% trans "edit" %})</a> - </div> + <div class="card-header">{% trans "assemblyedit_links" %}</div> <div class="card-body"> {% with la=assembly.linked_assemblies %} {% if la|length > 0 %} - <ul> + <ul class="list-group"> {% for linked in la %} - <li> + <li class="list-group-item"> <a href="{% url 'backoffice:assembly' pk=linked.pk %}" target="_blank">{{ linked.name }}</a> </li> {% endfor %} @@ -110,6 +102,13 @@ {% endif %} {% endwith %} </div> + <div class="card-footer"> + + <a class="float-end btn btn-primary" + href="{% url 'backoffice:assembly-editlinks' pk=assembly.pk %}" + target="_blank" + title="{% trans "Edit" %}">{% trans "Edit" %} ({% trans "opensinnewpage" %})</a> + </div> {% else %} {# assembly.is_cluster #} <div class="card-header"> @@ -141,19 +140,25 @@ <div class="card-header">Tags</div> <div class="card-body"> <input id="tags" + class="form-control" type="text" name="tags" - value="{% for tag in assembly.sorted_tags %}{{ tag }}{% if not forloop.last %}, {% endif %}{% endfor %}"> - <small class="form-text text-muted">{% trans "Assembly__tags__splitwithcomma" %}</small> + value="{% for tag in assembly.sorted_tags %} {{ tag }} {% if not forloop.last %},{% endif %} {% endfor %}"> + <div for="tags" class="form-text">{% trans "Assembly__tags__splitwithcomma" %}</div> </div> </div> </div> </div> - <div class="row pb-5"> - <div class="col-md-12 text-right mb-5"> - <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button> + <div class="row pb-5 mt-3"> + <div class="col-md-12"> + <div class="card"> + <div class="card-footer text-end"> + <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button> + </div> + </div> </div> + </div> </form> {% endblock content %} diff --git a/src/backoffice/templates/backoffice/assembly_editlinks.html b/src/backoffice/templates/backoffice/assembly_editlinks.html index b08a37a0c1cdabbe2ac6bd7fa7ac02d3898adcc8..a9baba8428cde8781f30f665d17cd217ba41f5bf 100644 --- a/src/backoffice/templates/backoffice/assembly_editlinks.html +++ b/src/backoffice/templates/backoffice/assembly_editlinks.html @@ -24,14 +24,14 @@ <form action="{% url 'backoffice:assembly-editlinks' pk=assembly.id %}" method="post"> {% csrf_token %} - <select class="form-control" name="add" required> - <option value="">({% trans "please_select" %})</option> - {% for a in candidates %} - <option value="{{ a.pk }}" - {% if a in links or a.pk == assembly.pk %}disabled{% endif %}>{{ a.name }}</option> - {% endfor %} - </select> - <button type="submit" class="btn btn-sm btn-secondary">{% trans "add" %}</button> + <div class="input-group"> + + <select class="form-select" name="add" required> + <option value="">({% trans "please_select" %})</option> + {% for a in candidates %}<option value="{{ a.pk }}">{{ a.name }}</option>{% endfor %} + </select> + <button type="submit" class="btn btn-sm btn-primary">{% trans "add" %}</button> + </div> </form> </div> </div> @@ -44,15 +44,19 @@ <div class="card-header">{% trans "assemblyedit_links" %}</div> <div class="card-body"> {% if links|length > 0 %} - <ul> + <ul class="list-group"> {% for link in links %} - <li> - {{ link.name }} (Slug: {{ link.slug }}) + <li class="list-group-item"> <form action="{% url 'backoffice:assembly-editlinks' pk=assembly.id %}" method="post"> + {{ link.name }} (Slug: {{ link.slug }}) {% csrf_token %} <input type="hidden" name="delete" value="{{ link.pk }}"> - <button type="submit" class="btn btn-sm btn-secondary">{% trans "delete" %}</button> + <span class="float-end"> + + <button type="submit" class="btn btn-outline-danger btn-sm">{% trans "remove" %}</button> + </span> + </form> </li> {% endfor %} diff --git a/src/backoffice/templates/backoffice/assembly_events.html b/src/backoffice/templates/backoffice/assembly_events.html index ec65a69bfd4c9dd41a5dd8d4499dcc22f24118bf..3229cb926bff88470fcbdd91d14cf664501a2857 100644 --- a/src/backoffice/templates/backoffice/assembly_events.html +++ b/src/backoffice/templates/backoffice/assembly_events.html @@ -56,7 +56,7 @@ {% trans "Events" %} {% if can_manage %} <a href="{% url 'backoffice:assembly-create-event' assembly=assembly.id %}" - class="btn btn-sm btn-primary float-right">+</a> + class="btn btn-sm btn-primary float-end">+</a> {% endif %} </div> <div class="card-body"> diff --git a/src/backoffice/templates/backoffice/assembly_list_export.html b/src/backoffice/templates/backoffice/assembly_list_export.html index 62e8176083417b5076af34546906029a6d467518..c8a03c94e06ea44e16478d851b34ad7392f0b375 100644 --- a/src/backoffice/templates/backoffice/assembly_list_export.html +++ b/src/backoffice/templates/backoffice/assembly_list_export.html @@ -8,7 +8,7 @@ <div class="col-md-12"> <div class="card border-default"> <div class="card-header bg-default"> - <span class="float-right"> + <span class="float-end"> <form class="form-inline" method="get" action="{% url 'backoffice:assemblieslist' variant=variant %}"> diff --git a/src/backoffice/templates/backoffice/assembly_members_edit.html b/src/backoffice/templates/backoffice/assembly_members_edit.html index 23fc934277bae33df3af576341da71c29bd09631..8efb61e9d75f0b619227ccc71da5837a17631434 100644 --- a/src/backoffice/templates/backoffice/assembly_members_edit.html +++ b/src/backoffice/templates/backoffice/assembly_members_edit.html @@ -41,7 +41,7 @@ </div> {% endfor %} </div> - <div class="card-footer text-right"> + <div class="card-footer text-end"> <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button> </div> </div> diff --git a/src/backoffice/templates/backoffice/assembly_room.html b/src/backoffice/templates/backoffice/assembly_room.html index ac51ff19d1501b8fdcbaf79dcd385b35569f787c..833226b5911e8d68bbab03dde83024b23f48d38e 100644 --- a/src/backoffice/templates/backoffice/assembly_room.html +++ b/src/backoffice/templates/backoffice/assembly_room.html @@ -23,11 +23,11 @@ <div class="card border-default"> <div class="card-header bg-default"> {% if assembly.is_public %} - <a class="float-right btn btn-sm btn-info" + <a class="float-end btn btn-sm btn-info" href="{% hub_absolute 'plainui:room' slug=room.slug %}">{% trans "public" %}</a> {% endif %} {% if room.id %} - <span class="text-muted float-right me-2" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span> + <span class="text-muted float-end me-2" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span> {% endif %} {% if room.name %} {% if room.room_type != 'project' %} diff --git a/src/backoffice/templates/backoffice/assembly_room_wa.html b/src/backoffice/templates/backoffice/assembly_room_wa.html index b1626d44d98d23adb7b4ca08b862681fd521a9ee..b258c7a759d4e94e8aba73b2c9cbae7420abf41e 100644 --- a/src/backoffice/templates/backoffice/assembly_room_wa.html +++ b/src/backoffice/templates/backoffice/assembly_room_wa.html @@ -26,7 +26,7 @@ <div class="card border-default"> <div class="card-header bg-default"> {% if room.id %} - <span class="text-muted float-right" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span> + <span class="text-muted float-end" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span> {% endif %} {% if room.name %} {{ room.get_room_type_display }} {% trans "Room" %} "{{ room.name }}" diff --git a/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html b/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html index 7a233f0e54a15fa478314a947987636a24667a0b..3bae576a72a4731999699b70a438e9b72ea9cb52 100644 --- a/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html +++ b/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html @@ -74,7 +74,7 @@ <h4 class="border-bottom"> <code class="text-muted">{{ map }}</code> </h4> - <div class="pl-3"> + <div class="ps-3"> {% for category, issues in infos.items %} {% if issues|length > 0 %} <h5>{{ category }}</h5> diff --git a/src/backoffice/templates/backoffice/base.html b/src/backoffice/templates/backoffice/base.html index d87a697a7885c88421fa7fe289a2e3fdcb446ae6..c214f04791530d31c11c4e23e63c001021fe2f91 100644 --- a/src/backoffice/templates/backoffice/base.html +++ b/src/backoffice/templates/backoffice/base.html @@ -25,7 +25,7 @@ </head> <body> - <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> + <nav class="navbar navbar-expand-lg navbar-dark bg-dark px-2"> <a class="navbar-brand" href="{% url 'backoffice:index' %}">{{ conference.slug }} {% trans "title_suffix" %}</a> <button class="navbar-toggler" type="button" @@ -140,7 +140,7 @@ data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ LANGUAGE_CODE }}</a> - <div class="dropdown-menu dropdown-menu-right" + <div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarLangDropdown"> <form method="post" action="{% url 'set_language' %}"> {% csrf_token %} @@ -166,7 +166,7 @@ data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ user.get_full_name|default:user.username }}</a> - <div class="dropdown-menu dropdown-menu-right" + <div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarUserDropdown"> <a class="dropdown-item" href="{% url 'backoffice:profile' %}">{% trans "nav_profile" %}</a> <a class="dropdown-item" href="{% url 'backoffice:password_change' %}">{% trans "nav_change_password" %}</a> diff --git a/src/backoffice/templates/backoffice/schedule_source-detail.html b/src/backoffice/templates/backoffice/schedule_source-detail.html index 8407cc6cd4fa8168bde1feb0f36f0d20e0e5f1d2..474b7c5d2d95350895583f87b5992ab3be16f9e3 100644 --- a/src/backoffice/templates/backoffice/schedule_source-detail.html +++ b/src/backoffice/templates/backoffice/schedule_source-detail.html @@ -11,7 +11,7 @@ <div class="card mb-3"> <div class="card-header"> ID <code>{{ object.id }}</code> - <span class="float-right"> + <span class="float-end"> <a href="{% url 'backoffice:schedulesource-edit' pk=object.id %}" class="btn btn-sm btn-outline-primary text-primary">edit</a> <a href="{% url 'backoffice:schedulesource-remove' pk=object.id %}" @@ -50,7 +50,7 @@ <form action="{% url 'backoffice:schedulesource-import' pk=object.id %}" method="post"> {% csrf_token %} - <button type="submit" class="btn btn-sm btn-primary float-right">run an import NOW</button> + <button type="submit" class="btn btn-sm btn-primary float-end">run an import NOW</button> </form> Imports </div> diff --git a/src/backoffice/templates/backoffice/wa-map-detail.html b/src/backoffice/templates/backoffice/wa-map-detail.html index f5da6bc2cdd3f9f20c5051dac53084a4c25fe19b..add7aac05150983fa5db5d698c6eac71899f0caa 100644 --- a/src/backoffice/templates/backoffice/wa-map-detail.html +++ b/src/backoffice/templates/backoffice/wa-map-detail.html @@ -216,7 +216,7 @@ $(function() { <div class="col col-md-12"> <div class="card mt-3"> <div class="card-header bg-{{ wa_linter.status }}"> - <span class="float-right small bg-white p-1"> + <span class="float-end small bg-white p-1"> preview from <a href="{% url 'backoffice:assembly-room' assembly=room.assembly.id pk=room.id %}" title="maybe 403 for u?">assembly backoffice room page</a> </span> diff --git a/src/backoffice/templates/backoffice/wa-session-detail.html b/src/backoffice/templates/backoffice/wa-session-detail.html index 494270a9816e0a9a7bd852b1618efda4561e8cb5..707fdb23fa5afddca53677091deed55683882e75 100644 --- a/src/backoffice/templates/backoffice/wa-session-detail.html +++ b/src/backoffice/templates/backoffice/wa-session-detail.html @@ -9,13 +9,13 @@ action="{% url 'backoffice:workadventure-session-delete' pk=object.id %}"> {% csrf_token %} <input type="hidden" name="terminate" value="1"> - <button class="btn btn-danger btn-sm ms-3 float-right" type="submit">terminate session</button> + <button class="btn btn-danger btn-sm ms-3 float-end" type="submit">terminate session</button> </form> <form method="post" action="{% url 'backoffice:workadventure-session-delete' pk=object.id %}"> {% csrf_token %} <input type="hidden" name="terminate" value="0"> - <button class="btn btn-outline-danger btn-sm ms-3 float-right" type="submit">delete session</button> + <button class="btn btn-outline-danger btn-sm ms-3 float-end" type="submit">delete session</button> </form> WorkAdventure session {{ object.id }} </div> @@ -80,7 +80,7 @@ <form method="post" action="{% url 'backoffice:workadventure-session-pushdata' pk=object.id %}"> {% csrf_token %} - <button class="btn btn-sm btn-primary float-right" + <button class="btn btn-sm btn-primary float-end" type="submit" title="push data to backend">push</button> </form> diff --git a/src/backoffice/templates/backoffice/wa-texture-form.html b/src/backoffice/templates/backoffice/wa-texture-form.html index d016ebb3e62c6eace2d3224aa29362265aee0910..deed0e5d373aee8e7632d9d61d521cd974767b61 100644 --- a/src/backoffice/templates/backoffice/wa-texture-form.html +++ b/src/backoffice/templates/backoffice/wa-texture-form.html @@ -10,7 +10,7 @@ <form action="{% url 'backoffice:workadventure-texture-remove' pk=object.id %}" method="post"> {% csrf_token %} - <button type="submit" class="btn btn-danger btn-sm float-right">delete</button> + <button type="submit" class="btn btn-danger btn-sm float-end">delete</button> </form> {% endif %} WorkAdventure Texture {{ object.id|default:"(NEW)" }} diff --git a/src/backoffice/templates/backoffice/wa-texture-list.html b/src/backoffice/templates/backoffice/wa-texture-list.html index 07aa4b349de4c11cdfd07d288843889f28c8e34a..fa59e034710fac0483e846d069ef2d91fc7fb79f 100644 --- a/src/backoffice/templates/backoffice/wa-texture-list.html +++ b/src/backoffice/templates/backoffice/wa-texture-list.html @@ -5,7 +5,7 @@ <div class="card mt-3"> <div class="card-header"> <a href="{% url 'backoffice:workadventure-texture-add' %}" - class="btn btn-sm btn-secondary float-right">add</a> + class="btn btn-sm btn-secondary float-end">add</a> WorkAdventure Textures <span class="badge badge-primary">{{ object_list|length }}</span> </div> diff --git a/src/backoffice/templates/backoffice/wiki_page_detail.html b/src/backoffice/templates/backoffice/wiki_page_detail.html index f54315ced1a345b5ad07aeff7922cdc1d056dd08..037674a3a0154e9a977dc1acb1148e7c6e27259a 100644 --- a/src/backoffice/templates/backoffice/wiki_page_detail.html +++ b/src/backoffice/templates/backoffice/wiki_page_detail.html @@ -31,7 +31,7 @@ {% endif %} {% bootstrap_form form %} </div> - <div class="card-footer text-right"> + <div class="card-footer text-end"> <button type="submit" class="btn btn-danger" form="delete_page">{% trans "StaticPage--delete-page" %}</button> <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button> </div> diff --git a/src/backoffice/views/assemblies.py b/src/backoffice/views/assemblies.py index 3208942e5a4c5400ec9ddf2ddcff58750cf44964..02d8186a3f7ab7fb112a6529cc4f93f8156ea61e 100644 --- a/src/backoffice/views/assemblies.py +++ b/src/backoffice/views/assemblies.py @@ -15,7 +15,7 @@ from django.utils.safestring import mark_safe from django.utils.text import format_lazy from django.utils.translation import get_language, gettext, gettext_noop from django.utils.translation import gettext_lazy as _ -from django.views.generic import TemplateView, View +from django.views.generic import ListView, TemplateView, View from django.views.generic.edit import CreateView, FormView, UpdateView from core.integrations import BigBlueButton, Hangar, IntegrationError, WorkAdventure @@ -540,6 +540,10 @@ class AssemblyEditLinksView(AssemblyMixin, View): Assembly.objects.associated_with_user(conference=self.conference, user=self.request.user) .filter(hierarchy=Assembly.Hierarchy.REGULAR) .exclude(state_assembly__in=[Assembly.State.NONE, Assembly.State.PLANNED, Assembly.State.HIDDEN, Assembly.State.REJECTED]) + # Remove self from list (cannot link to self) + .exclude(pk=self.assembly.pk) + # Remove already linked assemblies + .exclude(related_assemblies__a=self.assembly) ) candidates = list(candidates_qs.order_by('name')) context = self.get_context_data() @@ -640,8 +644,9 @@ class AssemblyRoomView(AssemblyMixin, UpdateView): return reverse('backoffice:assembly-room', kwargs={'assembly': self.assembly.id, 'pk': self.object.id}) -class MembersView(AssemblyMixin, TemplateView): +class MembersView(AssemblyMixin, ListView): template_name = 'backoffice/assembly_members.html' + model = AssemblyMember assembly_url_param = 'pk' assembly_management = True @@ -651,11 +656,11 @@ class MembersView(AssemblyMixin, TemplateView): 'member__communication_channels' ) - def get_context_data(self, *args, **kwargs): - ctx = super().get_context_data(*args, **kwargs) - ctx['form'] = AssemblyAddMemberForm() - ctx['object_list'] = self.get_queryset() - return ctx + def get_context_data(self, **kwargs): + return { + **super().get_context_data(**kwargs), + 'form': AssemblyAddMemberForm(), + } def post(self, *args, **kwargs): for data_pair in self.request.POST: diff --git a/src/core/models/assemblies.py b/src/core/models/assemblies.py index 5acc01978b75af7ddb30e0f9e21273af787f352e..bcc988744176e98a5195cebf60a81ace8cc8808c 100644 --- a/src/core/models/assemblies.py +++ b/src/core/models/assemblies.py @@ -354,6 +354,7 @@ class Assembly(TaggedItemMixin, models.Model): @property def linked_assemblies(self): qs = self.assembly_links.filter(is_public=True, type__in=AssemblyLink.PUBLIC_TYPES) + qs = qs.order_by('b__name') return [x.b for x in qs.select_related('b')] @property