api: add partial_bookings field in agenda details (#81002)
gitea/chrono/pipeline/head This commit looks good Details

This commit is contained in:
Lauréline Guérin 2023-09-08 09:34:13 +02:00
parent 7e946138ac
commit fbe2deea93
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 14 additions and 2 deletions

View File

@ -20,6 +20,7 @@ import datetime
import json
import uuid
from django.conf import settings
from django.db import IntegrityError, transaction
from django.db.models import BooleanField, Count, ExpressionWrapper, F, Func, Prefetch, Q
from django.db.models.expressions import RawSQL
@ -95,6 +96,8 @@ def get_agenda_detail(request, agenda, check_events=False):
if check_events:
agenda_detail['opened_events_available'] = bool(agenda.get_open_events().filter(full=False))
agenda_detail['booking_form_url'] = agenda.get_booking_form_url()
if settings.PARTIAL_BOOKINGS_ENABLED:
agenda_detail['partial_bookings'] = agenda.partial_bookings
elif agenda.accept_meetings():
agenda_detail['api'] = {
'meetings_url': request.build_absolute_uri(

View File

@ -20,7 +20,7 @@ from chrono.utils.timezone import localtime, now
pytestmark = pytest.mark.django_db
def test_agendas_api(app):
def test_agendas_api(settings, app):
edit_group = Group.objects.create(name='Edit')
view_group = Group.objects.create(name='View')
category_a = Category.objects.create(label='Category A')
@ -36,7 +36,7 @@ def test_agendas_api(app):
Desk.objects.create(agenda=event_agenda, slug='_exceptions_holder')
event_agenda2 = Agenda.objects.create(label='Foo bar 2', category=category_a, events_type=events_type2)
Desk.objects.create(agenda=event_agenda2, slug='_exceptions_holder')
event_agenda3 = Agenda.objects.create(label='Foo bar 3')
event_agenda3 = Agenda.objects.create(label='Foo bar 3', partial_bookings=True)
Desk.objects.create(agenda=event_agenda3, slug='_exceptions_holder')
meetings_agenda1 = Agenda.objects.create(
label='Foo bar Meeting', kind='meetings', category=category_b, view_role=view_group
@ -291,6 +291,15 @@ def test_agendas_api(app):
resp = app.get('/api/agenda/', params={'with_open_events': '1'})
assert len(resp.json['data']) == 1
settings.PARTIAL_BOOKINGS_ENABLED = True
resp = app.get('/api/agenda/')
assert resp.json['data'][0]['kind'] == 'events'
assert resp.json['data'][0]['partial_bookings'] is False
assert resp.json['data'][1]['kind'] == 'events'
assert resp.json['data'][1]['partial_bookings'] is False
assert resp.json['data'][2]['kind'] == 'events'
assert resp.json['data'][2]['partial_bookings'] is True
for _ in range(10):
event_agenda = Agenda.objects.create(label='Foo bar', category=category_a)
Desk.objects.create(agenda=event_agenda, slug='_exceptions_holder')