agendas: add property for datetimes API url (#80489)

To simplify using datetimes URLs in tests.
This commit is contained in:
Benjamin Dauvergne 2023-03-23 12:44:55 +01:00
parent 3dac9ed0fb
commit 2d8912c0a3
2 changed files with 16 additions and 16 deletions

View File

@ -400,7 +400,7 @@ class Agenda(models.Model):
.filter(total=real_agendas.count())
)
return [
MeetingType(duration=mt['duration'], label=mt['label'], slug=mt['slug'])
MeetingType(duration=mt['duration'], label=mt['label'], slug=mt['slug'], agenda=self)
for mt in queryset.order_by('slug')
]
@ -1640,6 +1640,10 @@ class Agenda(models.Model):
if to_update:
BookingCheck.objects.bulk_update(to_update, ['computed_start_time', 'computed_end_time'])
def get_datetimes_url(self):
assert self.kind == 'events'
return reverse('api-agenda-datetimes', kwargs={'agenda_identifier': self.slug})
class VirtualMember(models.Model):
"""Trough model to link virtual agendas to their real agendas.
@ -2031,6 +2035,15 @@ class MeetingType(models.Model):
return new_meeting_type
def get_datetimes_url(self):
return reverse(
'api-agenda-meeting-datetimes',
kwargs={
'agenda_identifier': self.agenda.slug,
'meeting_identifier': self.slug,
},
)
class Event(models.Model):
id = models.BigAutoField(primary_key=True)

View File

@ -1102,15 +1102,7 @@ class MeetingList(APIView):
'id': meeting_type.slug,
'duration': meeting_type.duration,
'api': {
'datetimes_url': request.build_absolute_uri(
reverse(
'api-agenda-meeting-datetimes',
kwargs={
'agenda_identifier': agenda.slug,
'meeting_identifier': meeting_type.slug,
},
)
),
'datetimes_url': request.build_absolute_uri(meeting_type.get_datetimes_url()),
},
}
)
@ -1137,12 +1129,7 @@ class MeetingInfo(APIView):
except MeetingType.DoesNotExist:
raise Http404()
datetimes_url = request.build_absolute_uri(
reverse(
'api-agenda-meeting-datetimes',
kwargs={'agenda_identifier': agenda.slug, 'meeting_identifier': meeting_type.slug},
)
)
datetimes_url = request.build_absolute_uri(meeting_type.get_datetimes_url())
return Response(
{
'data': {