Benjamin Dauvergne
7973059dcb
api: handle empty opening hours after removing exceptions ( #43126 )
2020-05-20 10:06:39 +02:00
Benjamin Dauvergne
fc2108bbb5
tests: add test with exception completely covering opening hours of a desk ( #43126 )
2020-05-20 10:06:34 +02:00
Benjamin Dauvergne
2f3afe5ad2
translation update
2020-05-19 19:36:15 +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
Benjamin Dauvergne
3c5d056fa3
add test on metz data ( #42169 )
2020-05-19 14:54:55 +02:00
Lauréline Guérin
ea908cde22
manager: view to duplicate a desk ( #42626 )
2020-05-18 10:21:59 +02:00
Frédéric Péters
b61097e250
manager: display undefined delays with proper label ( #42270 )
2020-05-16 09:28:55 +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
Lauréline Guérin
19af0088ff
agendas: fix import when unknown field found ( #42523 )
2020-05-07 11:25:44 +02:00
Lauréline Guérin
cc6da3d0a8
manager: fix exception form when start_datetime is invalid ( #42397 )
2020-05-05 14:59:24 +02:00
Benjamin Dauvergne
d28c18add0
agendas: add unique_together meta to VirtualMember ( #42413 )
2020-05-04 16:30:03 +02:00
Lauréline Guérin
4d5d9a7c3c
agendas: fix import when missing exceptions or timeperiods ( #42196 )
2020-05-04 09:09:46 +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
Benjamin Dauvergne
124ff4b0aa
tests: use a temporary MEDIA_ROOT ( #42325 )
2020-04-30 12:56:17 +02:00
Frédéric Péters
4fac2c3cd1
misc: compute time slots using tz-aware datetimes ( #42146 )
2020-04-28 15:16:51 +02:00
Frédéric Péters
cf030d8e4d
misc: create timeslot virtual id on-demand ( #42147 )
2020-04-28 11:05:06 +02:00
Christophe Siraut
6f6bc17fe9
Jenkinsfile: use default distribution target ( #41301 )
2020-04-24 14:02:35 +02:00
Lauréline Guérin
19fa33cb21
agendas: clean db unique constraint for event slug ( #41180 )
2020-04-21 09:25:30 +02:00
Frédéric Péters
7536f3fe06
jenkins: build buster packages
2020-04-18 15:11:48 +02:00
Frédéric Péters
e07c450d7c
trivial: reapply black to sync_desks_timeperiod_exceptions.py
2020-04-14 20:09:01 +02:00
Frédéric Péters
01aaa54b4c
translation update
2020-04-14 09:26:43 +02:00
Serghei Mihai
fbd7720fa6
agendas: filter exception sources with really no associated file ( #41331 )
2020-04-04 15:25:11 +02:00
Frédéric Péters
5980720ec2
translation update
2020-04-01 11:05:48 +02:00
Emmanuel Cazenave
2748439c23
api: add more infos on places for an event agenda ( #40412 )
2020-03-31 14:47:12 +02:00
Frédéric Péters
bf693322be
tox: remove pylint limits
2020-03-29 20:57:01 +02:00
Lauréline Guérin
dba672f542
manager: add exception on all day ( #40456 )
2020-03-27 14:04:22 +01:00
Frédéric Péters
7c079db282
misc: fix looking up for extra meeting types ( #37123 )
2020-03-20 14:30:11 +01:00
Frédéric Péters
fd8ed33d70
translation update
2020-03-20 13:19:47 +01:00
Frédéric Péters
a4666a8ecb
misc: use dictionary substitution in translable string ( #37123 )
2020-03-20 13:07:22 +01:00
Emmanuel Cazenave
7c707f6674
virtual agendas: handle import/export ( #40057 )
2020-03-20 13:03:34 +01:00
Emmanuel Cazenave
ec474b46d2
api: restrict slots with exluded timeperiods ( #40058 )
2020-03-20 13:03:34 +01:00
Emmanuel Cazenave
aec5b30fd9
manager: add excluded timeperiods management ( #40058 )
2020-03-20 13:03:34 +01:00
Emmanuel Cazenave
3aba16e82b
virtual agendas: allow direct relation from agenda to timeperiod ( #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
2111a1872b
manager: allow empty booking delays on virtual agendas ( #40121 )
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
e2f041511f
manager: add views for virtual agendas ( #37123 )
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
Lauréline Guérin
65b1286d5e
make tests insensible to postgres/sqlite ( #39583 )
2020-03-13 10:20:43 +01:00
Lauréline Guérin
769f77c4c8
jenkins: run tests using postgres ( #39583 )
2020-03-13 10:20:43 +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
Frédéric Péters
3e47c5d63f
doc: add black invocation line to README
2020-03-11 12:44:37 +01:00
Frédéric Péters
6fbe1e85cc
trivial: apply black settings to sync_desks_timeperiod_exceptions.py
2020-03-11 12:42:31 +01:00