api: add organizer event's attribute in ics exports (#67104)

This commit is contained in:
Benjamin Dauvergne 2022-09-15 14:11:53 +02:00
parent d3fcbfc051
commit 2fb68bcb8a
2 changed files with 15 additions and 1 deletions

View File

@ -2099,6 +2099,14 @@ class Booking(models.Model):
vevent.add('dtstart').value = self.event.start_datetime
if self.user_name:
vevent.add('attendee').value = self.user_name
organizer_name = getattr(settings, 'TEMPLATE_VARS', {}).get('global_title', 'chrono')
organizer_email = getattr(settings, 'TEMPLATE_VARS', {}).get(
'default_from_email', 'chrono@example.net'
)
organizer = vevent.add('organizer')
organizer.value = f'mailto:{organizer_email}'
organizer.cn_param = organizer_name
if self.event.end_datetime:
vevent.add('dtend').value = self.event.end_datetime

View File

@ -12,7 +12,7 @@ from chrono.utils.lingo import CheckType
pytestmark = pytest.mark.django_db
def test_booking_ics(app, some_data, meetings_agenda, user):
def test_booking_ics(app, some_data, meetings_agenda, user, settings):
agenda = Agenda.objects.filter(label='Foo bar')[0]
event = [x for x in Event.objects.filter(agenda=agenda) if x.in_bookable_period()][0]
@ -24,7 +24,12 @@ def test_booking_ics(app, some_data, meetings_agenda, user):
assert 'SUMMARY:\r\n' in booking_ics
assert 'DTSTART:%sZ\r\n' % formatted_start_date in booking_ics
assert 'DTEND:' not in booking_ics
assert 'ORGANIZER;CN=chrono:mailto:chrono@example.net\r\n' in booking_ics
settings.TEMPLATE_VARS = {
'global_title': 'meeting server',
'default_from_email': 'donotanswer@meeting-server.com',
}
# test with additional data
booking.label = 'foo'
booking.user_last_name = 'bar'
@ -35,6 +40,7 @@ def test_booking_ics(app, some_data, meetings_agenda, user):
assert 'SUMMARY:foo\r\n' in booking_ics
assert 'ATTENDEE:bar\r\n' in booking_ics
assert 'URL:http://example.com/booking\r\n' in booking_ics
assert 'ORGANIZER;CN=meeting server:mailto:donotanswer@meeting-server.com\r\n' in booking_ics
# test with user_label in additionnal data
booking.user_first_name = 'foo'