diff --git a/src/api/views/schedule.py b/src/api/views/schedule.py index 31bc747186d3bb0be5aa07d57834a2241e6eb334..9600271810940b6e4be9a0d410b717920fa81d86 100644 --- a/src/api/views/schedule.py +++ b/src/api/views/schedule.py @@ -82,7 +82,7 @@ class ConferenceSchedule(BaseScheduleView): Event.objects.conference_accessible(conference=self.conference) .exclude(schedule_duration=None) .exclude(schedule_duration__lte=timedelta(minutes=5)) - .order_by(F('assembly__is_official').desc(nulls_last=True), F('room__capacity').desc(nulls_last=True), 'schedule_start') + .order_by(F('assembly__is_official').desc(nulls_last=True), 'room__official_room_order', F('room__capacity').desc(nulls_last=True), 'name') ) if filter: queryset = queryset.filter(**filter) diff --git a/src/core/migrations/0166_alter_room_official_room_order.py b/src/core/migrations/0166_alter_room_official_room_order.py new file mode 100644 index 0000000000000000000000000000000000000000..a374050b6ad6ffcac8c363d73eccf1e4404dd4bb --- /dev/null +++ b/src/core/migrations/0166_alter_room_official_room_order.py @@ -0,0 +1,21 @@ +# Generated by Django 5.1.3 on 2024-12-21 01:03 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("core", "0165_alter_eventparticipant_options_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="room", + name="official_room_order", + field=models.IntegerField( + default=1000, + help_text="Room__official_room_order__help", + verbose_name="Room__official_room_order", + ), + ), + ] diff --git a/src/core/models/events.py b/src/core/models/events.py index 19ea075f7122435c7d853ac2827e97a75b946e57..9908758a1ed23a87fc590d33507e0eac0284204f 100644 --- a/src/core/models/events.py +++ b/src/core/models/events.py @@ -296,7 +296,7 @@ class Event(TaggedItemMixin, BackendMixin, ActivityLogMixin, models.Model): names = OrderedSet() names |= OrderedSet( self.participants.filter(is_public=True, role=EventParticipant.Role.SPEAKER) - .order_by('participant__display_name') + .order_by('order', 'participant__display_name') .values_list('participant__display_name', flat=True) ) diff --git a/src/core/models/rooms.py b/src/core/models/rooms.py index d33ff8ce7b9e8fda72e33508023753e3cf9c549a..21e0c1ee2991d1e131403f2a6a1f902e6f1580d7 100644 --- a/src/core/models/rooms.py +++ b/src/core/models/rooms.py @@ -149,7 +149,7 @@ class Room(BackendMixin, models.Model): is_public_fahrplan = models.BooleanField(default=False, help_text=_('Room__is_public_fahrplan__help'), verbose_name=_('Room__is_public_fahrplan')) is_official = models.BooleanField(default=False, help_text=_('Room__is_official__help'), verbose_name=_('Room__is_official')) - official_room_order = models.IntegerField(default=0, help_text=_('Room__official_room_order__help'), verbose_name=_('Room__official_room_order')) + official_room_order = models.IntegerField(default=1000, help_text=_('Room__official_room_order__help'), verbose_name=_('Room__official_room_order')) room_type = models.CharField(max_length=20, choices=RoomType.choices, help_text=_('Room__type__help'), verbose_name=_('Room__type')) """Style of the room.""" diff --git a/src/plainui/views/utils.py b/src/plainui/views/utils.py index b38eaaf0f3a6892288c812ad9fe1b279fac6263f..df4f9decff92c37c197cd5d605069a1025863280 100644 --- a/src/plainui/views/utils.py +++ b/src/plainui/views/utils.py @@ -259,7 +259,7 @@ def event_filter( res = res.exclude(recording=Event.Recording.UNKNOWN, room__isnull=False, room__recording_state__in=[Room.RecordingState.RECORD_BY_DEFAULT]) res = res.annotate(track_name=F('track__name')) - speakers = EventParticipant.objects.filter(is_public=True, role=EventParticipant.Role.SPEAKER).order_by('participant__display_name') + speakers = EventParticipant.objects.filter(is_public=True, role=EventParticipant.Role.SPEAKER).order_by('order', 'participant__display_name') speakers = speakers.annotate(speaker_name=F('participant__display_name')) return res.prefetch_related(