Lauréline Guérin
5b7c92ea5d
api: exclude slots already booked by user in fillslot ( #51432 )
2021-03-05 08:38:54 +01:00
Lauréline Guérin
6d57af612e
api: exclude slots already booked by user - meetings ( #51341 )
2021-03-01 10:48:28 +01:00
Lauréline Guérin
e15439bd3c
api: exclude slots already booked by user - events ( #51341 )
2021-03-01 10:48:26 +01:00
Lauréline Guérin
d23eafcfc6
api: list bookings of somebody ( #51187 )
2021-03-01 10:07:10 +01:00
Valentin Deniaud
929f70d2ac
api: allow passing minimum places count in /datetimes/ ( #51172 )
2021-03-01 09:55:31 +01:00
Valentin Deniaud
9954337197
api: include anonymize url in fillslots response ( #51366 )
2021-03-01 09:42:04 +01:00
Lauréline Guérin
5e94ddeff3
api: APIError handling ( #51181 )
2021-02-26 08:24:26 +01:00
Lauréline Guérin
64a8a4b7f1
api: patch booking extra_data ( #51340 )
2021-02-23 09:00:23 +01:00
Valentin Deniaud
a699e144b4
add support for recurring events ( #41663 )
2021-02-17 15:49:57 +01:00
Valentin Deniaud
a392213dce
agendas: make returning a queryset in get_open_events useless ( #41663 )
2021-02-17 15:49:57 +01:00
Valentin Deniaud
24296826b1
api: add first bookable slot info in /datetimes/ meta ( #51165 )
2021-02-16 11:21:16 +01:00
Lauréline Guérin
f32f64ea54
api: category filter ( #49355 )
2021-02-12 09:55:09 +01:00
Valentin Deniaud
7342e8d24e
api: add anonymize booking endpoint ( #49093 )
2021-02-01 16:33:08 +01:00
Valentin Deniaud
55841ecfcd
agendas: share booking colors between agendas ( #50379 )
2021-01-26 20:55:12 +01:00
Nicolas Roche
446ca922be
api: add a meta dict on datetimes endpoints ( #50278 )
2021-01-22 07:19:59 +01:00
Lauréline Guérin
1ec10c4e46
api: store the reason of an absence ( #49179 )
2021-01-22 07:19:44 +01:00
Lauréline Guérin
d0bc3146d6
api: mark user as present or not ( #38678 )
2021-01-19 19:10:43 +01:00
Frédéric Péters
eeda0c3f2e
apply black 20.8b1 formatting
2020-12-29 10:42:33 +01:00
Valentin Deniaud
8409186543
manager: differentiate bookings with colors ( #39794 )
2020-12-22 17:29:11 +01:00
Valentin Deniaud
221a4051f9
api: match StringOrListField max length with model definition ( #48586 )
2020-12-17 14:39:02 +01:00
Lauréline Guérin
2ec664efd3
api: complete slot_status endpoint result ( #48877 )
2020-12-14 13:41:48 +01:00
Valentin Deniaud
a51a036c13
api: use current timezone in get_max_datetime ( #48464 )
2020-11-30 10:37:36 +01:00
Emmanuel Cazenave
6d0e8a57ad
agendas: add date filter params on datetimes api ( #48078 )
2020-11-17 16:31:21 +01:00
Lauréline Guérin
14baf0d93e
api: add places in datetimes endpoint result ( #48431 )
2020-11-17 15:07:00 +01:00
Lauréline Guérin
241d65612b
api: proper error if datetime part is wrong in a slot ( #48132 )
2020-11-13 09:17:28 +01:00
Emmanuel Cazenave
f0b054a756
agendas: make maximal_booking_delay an excluded upper bound ( #48185 )
2020-11-10 16:12:42 +01:00
Emmanuel Cazenave
3617c3ff05
api: order desks by identifier ( #48065 )
2020-10-27 15:47:36 +01:00
Lauréline Guérin
d98707aeae
api: ignore desks from other agendas in datetimes ( #47645 )
2020-10-15 14:47:43 +02:00
Emmanuel Cazenave
7320dcfbe6
add support for unavailability calendars ( #46555 )
2020-10-12 10:20:33 +02:00
Lauréline Guérin
2e091220f5
api: use APIError in fillslots view ( #43077 )
2020-10-01 16:30:40 +02:00
Lauréline Guérin
eb8026c790
api: return only agenda with open events ( #44294 )
2020-09-28 13:56:55 +02:00
Lauréline Guérin
8ca72fd705
api: suspend, accept and resize endpoints only for events ( #46027 )
2020-09-28 11:26:28 +02:00
Lauréline Guérin
4ed8c9ce00
api: always return urls with slugs ( #46758 )
2020-09-28 11:02:33 +02:00
Lauréline Guérin
1995cc18e4
api: better pk & slug support in status url ( #46772 )
2020-09-28 10:39:43 +02:00
Valentin Deniaud
271cea7b44
agendas: add new attributes to Booking ( #45293 )
2020-09-16 10:05:08 +02:00
Lauréline Guérin
2537992d19
api: status view, get Event by slug and agenda ( #45520 )
2020-09-15 17:20:33 +02:00
Lauréline Guérin
f380c419db
api: always return accept and suspend urls ( #41773 )
2020-09-14 17:56:30 +02:00
Emmanuel Cazenave
38df08daf0
api: use a for loop instead of itertools.group_by ( #46145 )
2020-09-03 10:22:00 +02:00
Valentin Deniaud
bde66b58e0
manager: add event cancellation ( #44157 )
2020-08-31 10:04:44 +02:00
Valentin Deniaud
1864d7466d
manager: add booking cancellation ( #44159 )
2020-08-03 12:56:18 +02:00
Lauréline Guérin
e9fca76b10
manager: add opened events view for event agenda ( #44457 )
2020-07-24 10:06:29 +02:00
Lauréline Guérin
8adb86e2eb
misc: remove dead code
2020-07-24 10:06:29 +02:00
Lauréline Guérin
2ba381fa34
api: fix resize endpoint ( #44739 )
2020-07-21 14:14:59 +02:00
Emmanuel Cazenave
4dc5481456
api: support overlapping events ( #44644 )
2020-07-02 06:22:31 +02:00
Lauréline Guérin
ff939fc570
api: return slot-bookings url in datetimes api ( #44374 )
2020-06-26 16:49:22 +02:00
Lauréline Guérin
549e64e4bb
agenda: generate event slug if not provided ( #44375 )
2020-06-26 14:30:20 +02:00
Valentin Deniaud
49bca6ecc3
api: get meeting by slug ( #43526 )
2020-06-26 10:53:07 +02:00
Emmanuel Cazenave
ff19227fc9
agendas: mark MeetingType for deletion ( #44132 )
2020-06-19 08:40:48 +02:00
Lauréline Guérin
82d1a53b24
api: don't list cancelled bookings in slot_bookings api ( #44160 )
2020-06-18 09:50:14 +02:00
Lauréline Guérin
c77edebd62
api: return opened_events_available in events agenda detail payload
...
(#43937 )
2020-06-15 11:00:41 +02:00
Lauréline Guérin
70f0a0185f
api: add resources in fillslot_url for meetings datetime response ( #43685 )
2020-06-05 15:16:11 +02:00
Nicolas Roche
854b7abcc8
api: return end_datetime on booking events ( #37352 )
2020-06-04 10:12:29 +02:00
Lauréline Guérin
4cc127c09e
api: book also resources in fillslot(s) endpoint ( #38942 )
2020-06-02 11:26:43 +02:00
Lauréline Guérin
a1d38b0a88
api: check resources in datetimes endpoint ( #38942 )
2020-06-02 11:26:43 +02:00
Lauréline Guérin
4cc1bf6c45
api: add resources list on agenda details ( #38942 )
2020-06-02 11:26:43 +02:00
Lauréline Guérin
0f89c488c8
api: check publication_date in datetimes & fillslots api ( #40728 )
2020-05-22 09:15:15 +02:00
Benjamin Dauvergne
bb071f1980
misc: make empty interval using now() ( #43185 )
2020-05-21 10:49:44 +02:00
Benjamin Dauvergne
7973059dcb
api: handle empty opening hours after removing exceptions ( #43126 )
2020-05-20 10:06:39 +02:00
Benjamin Dauvergne
ece063b2b3
api: optimize get_all_slots() and around it ( #42169 )
...
Workflow in get_all_slots() is simplified :
* first we accumulate, for each desk, the set of time slots when a booking cannot
occur or is already booked,
* then we generate the list of possible time slots and match them to the
exclusion and already booked set.
Intervals is replaced by a simpler data-structure, IntervalSet, it does
not need to be a map, a simple set is enough.
Also :
* moved TimePeriod.get_effective_timeperiods() to the agenda level , it
deduplictes TimePeriod between desks and remove excluded TimePeriod for
virtual agendas.
* added a named-tuple WeekTime to represent a TimePeriod base unit, so
we can use them in IntervalSet easily (as they can be compared) to
compute the effective time periods,
* the fact that base_duration is unique for a given virtual agenda is
now accounted and stated everywhere,
* the fact that generated time slots must have time in the local
timezone for the API to work is now stated everywhere,
* In get_all_slots(), also :
* integrated the code of get_exceptions_by_desk() into get_all_slots()
to further reduce the number of SQL queries.
* used_min/max_datetime is reduced by the exclusion periods, and
effective time periods are grouped based on the used_min/max_datetime of
each agenda.
* pre-filter slots for uniqueness when generating available datetimes
(but for filling slot we still need exact availability information
for each desk)
2020-05-19 18:19:34 +02:00
Lauréline Guérin
d41b9ab20b
api: list bookings of user_external_id for an event ( #40719 )
2020-05-15 11:32:49 +02:00
Lauréline Guérin
1584b52ed3
agendas: add user_external_id field on Booking ( #40719 )
2020-05-15 11:15:41 +02:00
Lauréline Guérin
8e775f2bd3
api: fix fillslots api when meeting type id is not found ( #42534 )
2020-05-15 09:44:24 +02:00
Frédéric Péters
746e027573
api: include agenda details to fillslot response ( #42360 )
2020-05-03 18:58:15 +02:00
Frédéric Péters
9d0b76c82a
api: reduce number of sql queries in datetimes API ( #42142 )
2020-05-01 09:29:17 +02:00
Emmanuel Cazenave
2748439c23
api: add more infos on places for an event agenda ( #40412 )
2020-03-31 14:47:12 +02:00
Emmanuel Cazenave
ec474b46d2
api: restrict slots with exluded timeperiods ( #40058 )
2020-03-20 13:03:34 +01:00
Emmanuel Cazenave
55f6d0e47d
virtual agendas: use real agendas booking delays ( #40121 )
...
If booking delays are defined on the virtual agenda, they will take
precedence.
2020-03-20 13:03:34 +01:00
Emmanuel Cazenave
06f542f851
virtual agendas: balance fill rate ( #40056 )
2020-03-20 13:03:34 +01:00
Emmanuel Cazenave
565d471d07
start virtual agendas ( #37123 )
2020-03-20 13:03:34 +01:00
Lauréline Guérin
f675e0e7ef
api: return overbooked_places in accept endpoint response ( #40017 )
2020-03-19 16:16:57 +01:00
Lauréline Guérin
8ea7b2ae37
api: endpoint to resize a booking ( #40039 )
2020-03-17 15:00:29 +01:00
Lauréline Guérin
bccba482b4
api: can not cancel, accept or suspend a secondary booking ( #40039 )
2020-03-17 14:21:50 +01:00
Lauréline Guérin
5636c001ac
api: agendas endpoint with filtering ( #37436 )
2020-03-13 10:51:01 +01:00
Frédéric Péters
a9cedd9018
api: always use event id in advertised fillslot URL ( #40648 )
2020-03-11 12:44:37 +01:00
Emmanuel Cazenave
3d9ea06ec7
general: reformat using black
2020-03-04 16:17:54 +01:00
Lauréline Guérin
bd40148eed
api: add a param force_waiting_list to fillslot ( #40022 )
2020-03-03 15:26:24 +01:00
Lauréline Guérin
8d327c0dfe
api: add a suspend action on Booking ( #40018 )
2020-02-21 16:15:12 +01:00
Frédéric Péters
61496b5cdf
general: add pricing & url attributes to events ( #37979 )
2020-01-14 15:25:53 +01:00
Emmanuel Cazenave
7c6528f3b8
api: count correctly requested places on multiple booking ( #38306 )
2019-12-20 12:02:42 +01:00
Emmanuel Cazenave
559452990c
api: return 400 when no events found ( #38333 )
2019-12-20 11:53:56 +01:00
Emmanuel Cazenave
c420dde65d
api: accept slots as a string ( #38333 )
2019-12-20 11:46:10 +01:00
Emmanuel Cazenave
5f09ce7fdb
api: return events details if multiple booking ( #38330 )
2019-12-20 11:14:29 +01:00
Frédéric Péters
30bbc8c90f
general: reformat using black ( #37464 )
...
black--target-version py35 --skip-string-normalization --line-length 110 .
2019-12-16 16:24:38 +01:00
Frédéric Péters
bd6dbe50fd
misc: get reverse{_lazy} from new django.urls module ( #36331 )
2019-12-11 09:45:02 +01:00
Frédéric Péters
5be7a36833
api: only use event slug in URLs when it is set ( #38081 )
2019-11-29 13:41:39 +01:00
Lauréline Guérin
35dcc849df
api: return places info on fillslot api for an event agenda ( #35297 )
2019-11-19 16:31:56 +01:00
Lauréline Guérin
3bf36a1617
api: return err_desc & reason in case of error ( #24025 )
2019-11-07 17:01:01 +01:00
Lauréline Guérin
90dfb10afa
api: get event status and fillslot with event pk or slug ( #15726 )
2019-11-06 18:25:25 +01:00
Frédéric Péters
a0da57e0f3
misc: add a description field to events ( #36169 )
2019-09-17 08:50:05 +02:00
Benjamin Dauvergne
61e0c590b8
api: returns 400 on invalid fillslot's event_pk ( #35451 )
2019-08-20 19:32:01 +02:00
Thomas NOËL
af3b8ffc44
api: allow empty cancel_booking_id ( #33783 )
2019-06-11 12:10:07 +02:00
Emmanuel Cazenave
ab9ff7adf1
api: cancel a booking when making a new one ( #33489 )
2019-05-29 16:09:56 +02:00
Frédéric Péters
c3373ae379
api: format dates in fillslot response ( #33151 )
2019-05-17 09:34:28 +02:00
Serghei Mihai
0cfa22dbc0
agendas: add new booking's label attribute for user presentation purposes ( #25820 )
...
Use the new label in ICS summary
2019-03-21 12:02:04 +01:00
Frédéric Péters
3cc8e5d690
misc: remove comments with old attribute value ( #31421 )
2019-03-17 15:17:28 +01:00
Frédéric Péters
cd36887df6
api: return an error when number of requested places is <= 0 ( #31047 )
2019-03-06 11:11:02 +01:00
Frédéric Péters
b3a284d825
api: include delays in agenda API ( #29847 )
2019-02-07 11:25:11 +01:00
Frédéric Péters
ac9705a167
api: fix max size of booking label ( #29402 )
2019-01-02 17:11:31 +01:00
Frédéric Péters
07e3e5180f
api: add duration to meeting fillslot result ( #27900 )
2018-11-14 08:42:59 +01:00
Serghei Mihai
0f34cd204c
api: expose meeting type duration ( #25410 )
2018-07-23 09:47:05 +02:00
Serghei Mihai
0ce55339a7
api: add booking ics view ( #22930 )
2018-07-19 10:39:17 +02:00
Frédéric Péters
e1536441af
remove unused imports
2018-07-01 13:18:48 +02:00
Thomas NOËL
ae54f6960f
api: add endpoint to fill a list of slots ( #16238 )
2018-05-31 14:11:10 +02:00
Frédéric Péters
f4203d05f3
general: add support for Python 3 ( #23678 )
2018-05-13 15:19:14 +02:00
Thomas NOËL
87f8cbff15
api: use rest_framework serializers ( #22979 )
2018-04-04 16:07:00 +02:00
Frédéric Péters
385670124f
api: create real Event object after slot has been checked ( #22971 )
2018-04-04 10:51:54 +02:00
Frédéric Péters
1c73fa736c
doc: comment fake_event usage in meeting datetimes API
2018-04-04 10:51:54 +02:00
Josue Kouka
a20bfdb254
api: add shortcut for event status url ( #22125 )
2018-03-06 17:13:20 +01:00
Frédéric Péters
51bd5c752d
api: check time periods have enough time for a single meeting ( #21463 )
2018-01-29 16:28:32 +01:00
Frédéric Péters
b8b130e4f7
misc: always use timezone-aware datetimes ( #20926 )
2018-01-09 19:49:28 +01:00
Benjamin Dauvergne
6d4afedc47
api: replace intervaltree by chrono.interval ( #20732 )
2017-12-30 08:56:02 +01:00
Frédéric Péters
8069c20c74
api: include meeting end datetime in fillslot API response ( #20556 )
2017-12-11 11:20:53 +01:00
Frédéric Péters
1111695dd5
api: correctly remove all timeslots overlapped by exceptions ( #20386 )
2017-12-04 14:23:18 +01:00
Frédéric Péters
a51fb45aa4
general: add label/user_name/backoffice_url metadata on bookings ( #20280 )
2017-12-02 19:01:14 +01:00
Frédéric Péters
20aa74b697
api: don't return agenda internal identifiers ( #19266 )
2017-10-30 14:38:49 +01:00
Frédéric Péters
6ead030aed
api: add dedicated error handling for invalid place count value ( #19552 )
2017-10-19 14:08:40 +02:00
Josue Kouka
fc1bdf3391
api: add desk info in booking response ( #18973 )
2017-10-12 08:56:45 +02:00
Frédéric Péters
169cc6a0ab
api: add new API to get list of desks ( #19069 )
2017-10-12 08:51:49 +02:00
Josue Kouka
74516b5300
fix: exclude slot one exception at a time ( #19009 )
2017-09-27 15:50:54 +02:00
Josue Kouka
9d7738929c
add time period exception management ( #12550 )
2017-09-26 10:16:58 +02:00
Frédéric Péters
b721160128
fix next day but less than 24h delta booking ( #18495 )
2017-09-08 17:18:36 +02:00
Josue Kouka
f851de07df
add multiple desk management ( #15729 )
2017-09-04 11:00:01 +02:00
Frédéric Péters
f7db30cfcc
api: optimize fillslot endpoint calculation in meetings/datetimes API ( #17954 )
2017-08-10 11:28:57 +02:00
Frédéric Péters
b3f6f63853
api: include full meeting timeslot as disabled values ( #17953 )
2017-08-10 09:47:22 +02:00
Josue Kouka
2ebb54d63c
api datetimes: add date range filter ( #16193 )
2017-07-21 17:00:50 +02:00
Frédéric Péters
471d8db694
api: only look in waiting list if there's not enough place in event ( #17514 )
2017-07-11 13:40:13 +02:00
Josue Kouka
28028b681d
api: add API to retrieve agenda detail ( #17188 )
2017-06-26 17:50:57 +02:00
Frédéric Péters
ffcda3904a
general: add possibility to book multiple places at once ( #15218 )
2017-06-23 12:59:13 +02:00
Frédéric Péters
2907e4bb90
api: include full URL in cancel_url and accept_url attributes ( #17145 )
2017-06-23 12:58:23 +02:00
Frédéric Péters
678b297adf
api: include meeting types endpoints in /agenda/ API ( #16448 )
2017-06-11 10:09:10 +02:00
Frédéric Péters
d46adc81c0
api: do not crash on unknown agenda (with integer identifier) ( #15066 )
2017-06-11 09:49:07 +02:00
Frédéric Péters
7abcd52464
api: change http status code on wrong agenda kind error ( #16813 )
2017-06-11 09:48:48 +02:00
Frédéric Péters
998b6575f8
api: add endpoint to get list of meeting types ( #13360 )
2017-06-11 09:48:48 +02:00
Frédéric Péters
63ffddd5fb
api: fix datetimes API on UTC/local timezone/hour borders ( #16348 )
2017-05-23 14:50:16 +02:00
Frédéric Péters
7a0d7e5557
api: make datetimes return datetimes in localtime ( #16194 )
2017-05-06 13:04:42 +02:00
Frédéric Péters
c5d7c3da9d
api: change agendas API to have datetimes URL in a datetimes_url key ( #16213 )
2017-05-06 13:04:42 +02:00
Frédéric Péters
2e0f219a66
api: include accept/cancel URLs in booking response ( #16126 )
2017-05-06 10:03:46 +02:00
Frédéric Péters
59f03a9fbe
api: include fillslot API URLs in datetimes response ( #16125 )
2017-05-06 10:03:46 +02:00
Frédéric Péters
5ad7c3ee62
api: include datetime in fillslot return value ( #16031 )
2017-05-06 10:03:46 +02:00
Frédéric Péters
e5d44b42df
api: include iso formatted datetime in datetime APIs ( #14514 )
2017-01-20 10:50:07 +01:00
Frédéric Péters
51bbc55b7f
general: don't allow booking past the event date ( #14513 )
2017-01-20 10:39:47 +01:00
Frédéric Péters
f4a7564058
api: open up agendas and datetimes API endpoints ( #14604 )
2017-01-13 14:59:10 +01:00
Frédéric Péters
3b82689ba8
tests: add more api error checks
2016-10-29 20:39:52 +02:00
Frédéric Péters
c33754433f
api: update meeting types API to be based on slugs ( #13792 )
2016-10-29 15:14:50 +02:00
Frédéric Péters
a233f39dd1
api: update datetimes/fillslot API to get agenda by slug ( #13792 )
2016-10-29 15:14:49 +02:00
Frédéric Péters
948bb3d003
api: include full events in /datetimes/ API, with a disabled attribute ( #13037 )
2016-10-09 11:38:56 +02:00
Frédéric Péters
afedcf933f
api: rely on model default ordering when presenting list of events
2016-09-13 19:12:28 +02:00
Frédéric Péters
71b7130445
add minimal/maximal booking delays ( #12673 )
2016-09-11 19:16:15 +02:00
Frédéric Péters
b26f51e36c
add support for "meetings" agendas ( #13139 )
2016-09-11 11:31:29 +02:00
Frédéric Péters
2da78fd12a
api: return a 404 on /status/ for non-existing booking id
2016-07-22 13:45:53 +02:00
Frédéric Péters
b7d097dd7b
api: export waiting list status ( #12700 )
2016-07-22 13:41:23 +02:00
Frédéric Péters
9a6bfd81f8
pylint: remove unused import
2016-07-20 13:29:09 +02:00
Frédéric Péters
fd0045fe49
api: add better error handling for invalid accept/cancel POSTs ( #12664 )
2016-07-20 13:22:58 +02:00
Frédéric Péters
e27c31583c
api: don't use 400 error code for "sold out" error ( #12397 )
2016-07-20 08:48:56 +02:00
Frédéric Péters
7b3dba5236
trivial: remove unused F import
2016-07-07 16:38:00 +02:00
Frédéric Péters
5aeb24d58a
general: add waiting list support ( #11111 )
2016-07-07 16:21:55 +02:00
Frédéric Péters
c3ef0d7441
api: add POST endpoint to cancel a booking ( #11472 )
2016-06-23 19:31:12 +02:00
Frédéric Péters
6143122436
trivial: update variable name not to clash with global view name
2016-06-20 14:52:56 +02:00
Frédéric Péters
18d45ce6af
trivial: remove unused import
2016-06-20 14:48:50 +02:00
Frédéric Péters
54b7142f54
api: add datetimes API endpoint to agendas API
2016-06-20 09:34:53 +02:00
Frédéric Péters
c3e3e5d574
api: add new API to get list of agendas ( #11424 )
2016-06-19 21:23:23 +02:00
Frédéric Péters
308bd37ecd
general: allow a custom label on events ( #11112 )
2016-06-18 13:29:52 +02:00
Frédéric Péters
bb09199d96
api: add endpoint to get number of total/available/reserved places ( #11374 )
2016-06-18 12:24:21 +02:00
Frédéric Péters
2cc63f1481
api: require proper authentication to use API ( #11375 )
2016-06-18 11:59:26 +02:00
Frédéric Péters
6bc22b0dfe
general: make it possible to cancel bookings ( #9999 )
2016-03-30 08:05:23 +02:00
Frédéric Péters
71c7ee0552
api: exclude past dates ( #10000 )
2016-03-30 08:05:21 +02:00
Frédéric Péters
bcc9e4091e
api: use django DATETIME_FORMAT to format dates
...
Also add a custom DATETIME_FORMAT value to French locale, without seconds.
2016-03-30 08:04:51 +02:00
Frédéric Péters
7ba881f3d2
api: return datetimes in local timezone
2016-02-23 22:36:09 +01:00
Frédéric Péters
f7f7c2ef26
misc: display booked places in manager view
...
(this factors the booked_place annotation into a new manager for the Event
object)
2016-02-23 22:36:09 +01:00
Frédéric Péters
b14ca48427
api: consider booked places
2016-02-23 22:36:09 +01:00
Frédéric Péters
16ed50b9d4
add booking API
2016-02-23 22:36:09 +01:00
Frédéric Péters
2e25f21dd0
add /api/agenda/<agenda>/datetimes/ API endpoint
2016-02-23 22:36:08 +01:00