From a0da57e0f38ef5addad8933fd0e5d8fe82be96d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 17 Sep 2019 08:46:31 +0200 Subject: [PATCH] misc: add a description field to events (#36169) --- .../migrations/0027_event_description.py | 20 +++++++++++++++++++ chrono/agendas/models.py | 2 ++ chrono/api/views.py | 1 + tests/test_api.py | 8 ++++++++ tests/test_manager.py | 12 +++++++++++ 5 files changed, 43 insertions(+) create mode 100644 chrono/agendas/migrations/0027_event_description.py diff --git a/chrono/agendas/migrations/0027_event_description.py b/chrono/agendas/migrations/0027_event_description.py new file mode 100644 index 00000000..6a1169ff --- /dev/null +++ b/chrono/agendas/migrations/0027_event_description.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.12 on 2019-09-17 06:36 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('agendas', '0026_booking_user_display_label'), + ] + + operations = [ + migrations.AddField( + model_name='event', + name='description', + field=models.TextField(blank=True, help_text='Optional event description.', null=True, verbose_name='Description'), + ), + ] diff --git a/chrono/agendas/models.py b/chrono/agendas/models.py index 50409e8d..fc25cfa9 100644 --- a/chrono/agendas/models.py +++ b/chrono/agendas/models.py @@ -289,6 +289,8 @@ class Event(models.Model): _('Places in waiting list'), default=0) label = models.CharField(_('Label'), max_length=150, null=True, blank=True, help_text=_('Optional label to identify this date.')) + description = models.TextField(_('Description'), null=True, blank=True, + help_text=_('Optional event description.')) full = models.BooleanField(default=False) meeting_type = models.ForeignKey(MeetingType, null=True) desk = models.ForeignKey('Desk', null=True) diff --git a/chrono/api/views.py b/chrono/api/views.py index 5d4766fb..15cb3640 100644 --- a/chrono/api/views.py +++ b/chrono/api/views.py @@ -187,6 +187,7 @@ class Datetimes(APIView): response = {'data': [{'id': x.id, 'text': force_text(x), 'datetime': format_response_datetime(x.start_datetime), + 'description': x.description, 'disabled': bool(x.full), 'api': { 'fillslot_url': request.build_absolute_uri( diff --git a/tests/test_api.py b/tests/test_api.py index acf9bd07..78e6d409 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -189,6 +189,14 @@ def test_datetimes_api(app, some_data): resp = app.get('/api/agenda/%s/datetimes/' % agenda.slug) assert len(resp.json['data']) == 2 check_bookability(resp.json['data']) + assert resp.json['data'][0]['description'] is None + + # add description to events + for i, event in enumerate(agenda.event_set.all()): + event.description = 'Description %s' % i + event.save() + resp = app.get('/api/agenda/%s/datetimes/' % agenda.slug) + assert resp.json['data'][0]['description'] def test_datetimes_api_wrong_kind(app, some_data): agenda = Agenda.objects.filter(label=u'Foo bar')[0] diff --git a/tests/test_manager.py b/tests/test_manager.py index 8f015ff3..421105ac 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -336,6 +336,18 @@ def test_add_event(app, admin_user): assert resp_datetimes.json['data'][0]['text'] == 'Feb. 15, %s, 5 p.m.' % year assert resp_datetimes.json['data'][0]['datetime'] == '%s-02-15 17:00:00' % year + # add with a description + resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200) + resp = resp.click('New Event') + resp.form['start_datetime'] = '%s-02-15 18:00' % year + resp.form['places'] = 11 + resp.form['description'] = 'A description' + resp = resp.form.submit() + resp = resp.follow() + event = Event.objects.get(places=11) + assert event.description == 'A description' + + def test_add_event_on_missing_agenda(app, admin_user): app = login(app) app.get('/manage/agendas/%s/add-event' % '999', status=404)