api: add backoffice url to event details (#60021)
This commit is contained in:
parent
278be72b03
commit
5ebb692c19
|
@ -500,6 +500,17 @@ def get_event_detail(
|
|||
}
|
||||
)
|
||||
else:
|
||||
if not event.pk and ':' in event.slug:
|
||||
backoffice_url = request.build_absolute_uri(
|
||||
reverse(
|
||||
'chrono-manager-event-create-recurrence',
|
||||
kwargs={'pk': agenda.pk, 'event_identifier': event.slug},
|
||||
)
|
||||
)
|
||||
else:
|
||||
backoffice_url = request.build_absolute_uri(
|
||||
reverse('chrono-manager-event-view', kwargs={'pk': agenda.pk, 'event_pk': event.pk})
|
||||
)
|
||||
details.update(
|
||||
{
|
||||
'disabled': is_event_disabled(
|
||||
|
@ -534,6 +545,7 @@ def get_event_detail(
|
|||
kwargs={'agenda_identifier': agenda.slug, 'event_identifier': event.slug},
|
||||
)
|
||||
),
|
||||
'backoffice_url': backoffice_url,
|
||||
},
|
||||
'places': get_event_places(event),
|
||||
}
|
||||
|
|
|
@ -6,10 +6,11 @@ from django.utils.timezone import localtime, make_aware, now
|
|||
|
||||
from chrono.agendas.models import Agenda, Desk, Event, MeetingType, TimePeriod, VirtualMember
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def user():
|
||||
User = get_user_model()
|
||||
user = User.objects.create(
|
||||
username='john.doe', first_name='John', last_name='Doe', email='john.doe@example.net'
|
||||
)
|
||||
|
@ -18,6 +19,15 @@ def user():
|
|||
return user
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def admin_user():
|
||||
try:
|
||||
user = User.objects.get(username='admin')
|
||||
except User.DoesNotExist:
|
||||
user = User.objects.create_superuser('admin', email=None, password='admin')
|
||||
return user
|
||||
|
||||
|
||||
@pytest.fixture(params=['Europe/Brussels', 'Asia/Kolkata', 'Brazil/East'])
|
||||
def time_zone(request, settings):
|
||||
settings.TIME_ZONE = request.param
|
||||
|
|
|
@ -8,6 +8,7 @@ from django.test.utils import CaptureQueriesContext
|
|||
from django.utils.timezone import localtime, make_aware, make_naive, now
|
||||
|
||||
from chrono.agendas.models import Agenda, Booking, Category, Desk, Event, Subscription, TimePeriodException
|
||||
from tests.utils import login
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
@ -163,6 +164,42 @@ def test_datetime_api_urls(app):
|
|||
)
|
||||
|
||||
|
||||
def test_datetime_api_backoffice_url(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='events', minimal_booking_delay=0)
|
||||
event = Event.objects.create(
|
||||
label='Example Event', start_datetime=now() + datetime.timedelta(days=5), places=5, agenda=agenda
|
||||
)
|
||||
app = login(app)
|
||||
|
||||
resp = app.get('/api/agenda/%s/datetimes/' % agenda.slug)
|
||||
url = resp.json['data'][0]['api']['backoffice_url']
|
||||
assert urlparse.urlparse(url).path == '/manage/agendas/%s/events/%s/' % (agenda.pk, event.pk)
|
||||
assert event.label in app.get(url).text
|
||||
|
||||
event.delete()
|
||||
# recurring event
|
||||
Event.objects.create(
|
||||
label='Example Event',
|
||||
start_datetime=now() + datetime.timedelta(days=5),
|
||||
recurrence_days=list(range(7)),
|
||||
places=5,
|
||||
agenda=agenda,
|
||||
)
|
||||
assert Event.objects.count() == 1
|
||||
|
||||
resp = app.get('/api/agenda/%s/datetimes/' % agenda.slug)
|
||||
url = resp.json['data'][0]['api']['backoffice_url']
|
||||
assert urlparse.urlparse(url).path.startswith(
|
||||
'/manage/agendas/%s/create_event_recurrence/%s:'
|
||||
% (
|
||||
agenda.pk,
|
||||
event.slug,
|
||||
)
|
||||
)
|
||||
assert event.label in app.get(url).follow().text
|
||||
assert Event.objects.count() == 2
|
||||
|
||||
|
||||
def test_datetime_api_min_places(app):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='events')
|
||||
event = Event.objects.create(start_datetime=now() + datetime.timedelta(days=7), places=5, agenda=agenda)
|
||||
|
|
|
@ -52,6 +52,7 @@ def test_status(app, user):
|
|||
'fillslot_url': 'http://testserver/api/agenda/foo-bar/fillslot/event-slug/',
|
||||
'status_url': 'http://testserver/api/agenda/foo-bar/status/event-slug/',
|
||||
'check_url': 'http://testserver/api/agenda/foo-bar/check/event-slug/',
|
||||
'backoffice_url': 'http://testserver/manage/agendas/%s/events/%s/' % (agenda.pk, event.pk),
|
||||
},
|
||||
'places': {'available': 9, 'reserved': 1, 'total': 10, 'full': False, 'has_waiting_list': False},
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue