Commit graph

588 commits

Author SHA1 Message Date
Paul Chavard
c4432b1b47 perf(carto): use json schema to validate geojson instead of rgeo 2023-06-06 15:43:56 +02:00
Colin Darie
5ab44fc7a9
chore: rename dossier_resolution => dossier_correction 2023-06-02 16:16:14 +02:00
Colin Darie
2c79ca94f5
chore(schema): create dossier_corrections 2023-06-02 16:13:15 +02:00
krichtof
0051face93
Merge pull request #9014 from demarches-simplifiees/8859-default_zones
Etq admin, lors de la création ou modification d'une démarche, des zones par défaut me sont suggérées
2023-05-26 17:25:21 +00:00
simon lehericey
6f41f0e1c6 factories: add traits about files 2023-05-16 14:49:36 +02:00
Christophe Robillard
3705dc2553 determine default zones according to tchap hs 2023-05-16 09:40:53 +02:00
Colin Darie
25956c5141
fix(geoarea): geometry must not be nil 2023-04-22 16:23:39 +02:00
Paul Chavard
586286cb08
Merge pull request #8916 from demarches-simplifiees/can-update-defaut-groupe-instructeur-2
feat(routage): permet de changer le groupe par défaut
2023-04-20 08:28:46 +00:00
Martin
b9faa26560 amelioration(editeur-de-champs): permet de choisir un niveau de titre (de 1 à 3) pour les champs de type Champs::HeaderSectionChamp. Gère les erreurs dans le cas ou un administrateur supprimerait un HeaderSection qui casserait l'ordre des titre [ex: titre 1,2,3. et l'admin supprime le titre 1 et il reste que 2,3]. 2023-04-20 08:22:02 +02:00
simon lehericey
79131cc294 fix spec 2023-04-19 13:52:42 +02:00
Colin Darie
7aba5ccc3e
chore(rubocop): fix Rails/DurationArithmetic 2023-04-19 12:55:13 +02:00
Paul Chavard
21b548d32b fix(dossier): delete all champs starting with children 2023-04-13 11:08:10 +02:00
Martin
4f9c45c489 bug(export.pdf): ETQ expert, lorsque j'exporte un dossier, celui ci devrait contenir les avis non confidentiels ainsi que mes avis 2023-03-28 16:55:12 +02:00
Damien Le Thiec
731cd56594 Merge branch 'main' into feature/prefill_repetible 2023-02-22 19:49:06 +01:00
Martin
5e10e680dc chore(spec): corrige les spec cassées et remanie un peu des specs ecrites 2023-02-20 11:47:14 +01:00
Martin
a89f5d373f amelioration(procedures#filtres): filtre par regions avec un enum sur la collection des regions normalisés 2023-02-20 11:47:14 +01:00
Martin
68de0c6566 correctif(procedures#filtres): le filtre par departement ne fonctionnait plus. utilise un enum sur la collection des departements possible normalisés 2023-02-20 11:47:14 +01:00
Damien Le Thiec
dce4c84f9a Merge branch 'main' into feature/prefill_repetible 2023-02-16 17:08:30 +01:00
sebastiencarceles
d5ffd61ab6 validate values inclusion 2023-02-16 10:49:15 +01:00
Damien Le Thiec
dbb92e7fd3 Merge branch 'main' into feature/prefill_repetible 2023-02-11 22:40:56 +01:00
Damien Le Thiec
b9c2d1251b Add missing tests repetition prefill 2023-02-06 17:38:59 +01:00
Martin
6a25120f80 amelioration(dolist_api): echoue avec un fail pour remonter dans notre gestion des retry 2023-02-03 17:19:36 +01:00
Damien Le Thiec
63e7c17fda First tests for prefill repetition 2023-02-03 12:14:18 +01:00
Colin Darie
eb9cd90ee8 chore(schema): +procedure#estimated_duration_visible 2023-02-01 11:02:55 +01:00
Paul Chavard
a4cbbe721e feat(types de champ): add EPCI champ 2023-01-20 11:32:36 +01:00
Paul Chavard
cdb3ce65cb feat(graphql): expose more information on demarche descriptor 2023-01-18 13:46:40 +01:00
Colin Darie
784b0458fe feat(dolist): consolidate dispatched events with delivered emails 2023-01-18 09:56:40 +01:00
Sébastien Carceles
5c7b2ba1f3
feat(dossier): prefill drop down list champ (#8361)
* feat(dossier): prefill drop down list champ

* decorate the types de champ to avoid if / else

In order to avoid doing if this a drop down ? / else at several places,
we decorate the types de champ and let the decorator give the possible
and example values.

* show all possible values when there are too many

* allow to prefill 'other' option

* review: remove duplicate

* review: refactor for readability

* validate that value is in options

* review: exclude disabled options
2023-01-18 09:47:22 +01:00
Martin
0aba708b34 correctif(spec): associe le dossier suivis a l'instructeur du batch operation. sinon c'est un autre instructeur qui est crée 2023-01-16 11:14:29 +01:00
Lisa Durand
06c6a4ab0c add action 'unfollow' to page 'suivis' 2023-01-16 11:14:29 +01:00
Lisa Durand
2f666b487e add action 'repasser en construction' to page 'suivis' 2023-01-16 11:14:29 +01:00
Paul Chavard
af33d5d65c refactor(repetition): use row_id instead of row 2023-01-10 19:31:41 +01:00
Lisa Durand
25a7fa5a34 add bulk action 'follow' 2023-01-09 11:58:51 +01:00
Lisa Durand
d7ebb67889 implement first step - accepte without motivation and PJ 2023-01-05 16:20:18 +01:00
Sébastien Carceles
fa6fc077b4
normalize boolean values (#8320)
* extract parent for yes no and checkbox champs

* checkbox stores true / false instead of on / off

* normalize blank value to nil

* normalize invalid value to false

* after party task: normalize checkbox values

* after party task: normalize yes_no values
2023-01-05 11:18:27 +00:00
Sébastien Carceles
20136b7ac8
feat(demarche): create and prefill a dossier with POST request (#8233)
* add base controller for public api

* add dossiers controller with basic checks

* create the dossier

* ensure content-type is json

* prefill dossier with given values

* mark a dossier as prefilled

When a dossier is prefilled, it's allowed not to have a user.

Plus, we add a secure token to the dossier, which we will need later to set a
user after sign in / sign up.

* set user as owner of an orphan prefilled dossier

When a visitor comes from the dossier_url answered by the public api,
the dossier is orphan:
- when the user is already authenticated: they become the owner
- when the user is not authenticated: they can sign in / sign up / france_connect
and then they become the owner

So here is the procedure:
- allow to sign in / sign up / france connect when user is unauthenticated
- set dossier ownership when the dossier is orphan
- check dossier ownership when the dossier is not
- redirect to brouillon path when user is signed in and owner

* mark the dossier as prefilled when it's prefilled
(even with a GET request, because it will be useful later on, for
exmample in order to cleanup the unused prefilled dossiers)

* system spec: prefilling dossier with post request
2023-01-03 14:46:10 +01:00
Martin
186d4e6539 correctif(ChampDepartement): gere les departement a 3 codes 2022-12-27 14:55:57 +01:00
Martin
48c80e9387 correctif(api/v1): ajoute la methode manquante for_api sur le type de champs departement 2022-12-27 11:45:43 +01:00
Damien Le Thiec
9e083ea3f7
Merge branch 'main' into feature/prefill_civility 2022-12-26 11:31:52 +01:00
Christophe Robillard
f4977f358b fix spec procedure_cloning
add zone to new procedure
2022-12-21 09:02:16 +01:00
Damien Le Thiec
c4e427642f Allow prefill civility 2022-12-20 14:38:05 +01:00
Sébastien Carceles
0a10a08c21
feat(demarche): describe procedure prefilling (#8187)
* feat(demarche): description

Show the description of an opendata procedure (published or draft),
with help about how to prefill a dossier for this procedure.

Co-authored-by: Damien Le Thiec <damien.lethiec@gmail.com>
2022-12-19 11:32:09 +00:00
Lisa Durand
89730b485b add bulk action feature for 'passer_en_instruction' 2022-12-15 10:04:25 +01:00
Paul Chavard
243a8301bb fix(dossier): authorize passage en instruction if auto archive is on and is in the past 2022-12-14 22:16:13 +01:00
Paul Chavard
ebbada752f feat(api_token): add APIToken model 2022-12-07 18:19:37 +01:00
Martin
ea8bd13bcf poc(batch_operation.purge): nettoie les batch terminé ou inutiles 2022-12-06 11:28:48 +01:00
Martin
b0ae2e8a0f clean(spec): rubocopify / fix specs 2022-12-06 11:28:48 +01:00
Martin
eaf72162da poc(batch_operation): some rewrite to avoid various conflict (when an instructeur try to create a job with an incompatible dossier regarding the current task). also soome cleanup to isole spec in least involved model 2022-12-06 11:28:48 +01:00
Martin
7df86c50fb poc(batch_operations_controller): implement simple [not yet with procedure_presentation] action to create a batch operation 2022-12-06 11:28:48 +01:00
Martin
b11dbafc59 poc(batch_operation_job): implement archive dossiers with async behaviour, lock, run_at, finished_at, failed_dossier_ids, success_dossier_ids 2022-12-06 11:28:48 +01:00
Martin
61f4cded75 poc(batch_operation): just the model and some specs and a poc for archive them without async 2022-12-06 11:28:48 +01:00
Colin Darie
b8296c6d4d feat(piece_justificative): supports multiple files
Closes #7924
2022-12-05 10:47:10 +01:00
Paul Chavard
c5901fbb95 clean(type_de_champ): remove magic factory 2022-12-01 16:36:59 +01:00
Paul Chavard
cafda4f6f0 refactor(attestation_template): move to procedure 2022-11-23 12:26:26 +01:00
Martin
90f7d265c6 amelioration(clone.piece_justificative): gestion du clonage des piece justificative dans une tache asynchrone 2022-11-14 09:13:54 +01:00
Martin
844004818a amelioration(dossier.clone): dossier.clone, permet de cloner un dossier 2022-11-14 09:13:52 +01:00
Paul Chavard
e6288c39f2 refactor(dossier): champs -> champs_public 2022-11-10 22:44:39 +00:00
Eric Leroy-Terquem
aca2775874 remove routee? method 2022-11-04 12:03:44 +01:00
Martin
50c43f4819 correct(export): la creation d'archive pour un groupe d'instructeur, avec des filtres differents et identique doit etre consistante 2022-10-31 09:29:27 +01:00
Damien Le Thiec
73f6063c87
Merge branch 'main' into feature/add_rna_type_de_champs 2022-10-11 15:36:46 +02:00
Martin
6752da40a9 test(procedure.direction): can we drop this column ? 2022-10-07 18:39:17 +02:00
Christophe Robillard
bdcb451d3c procedure publiee must have one zone at least 2022-10-07 10:48:35 +02:00
Martin
a256dfbaa0 fix(spec): missed a failed spec previously. sorry 2022-10-06 15:34:29 +02:00
Damien Le Thiec
0131a41266
Merge branch 'main' into feature/add_rna_type_de_champs 2022-10-05 12:38:24 +02:00
Martin
17ed80b18a clean(Champs::Engagement): migrate to Champs::Checkbox, some for TypeDeChamp 2022-09-27 19:09:28 +02:00
Christophe Robillard
a504e82021 add zone label 2022-09-26 16:58:53 +02:00
Colin Darie
e7de19b24d fix(dossier): avoir final state if etablissement is still in degraded mode
Maintenant qu'on autorise un dossier pour entreprise a être créé en mode "dégradé",
(avec établissement incomplet suite à API Entreprise/INSEE down…),
on empêche de l'accepter/refuser/classer sans suite tant qu'on a pas
vérifié son SIRET.

Fix https://sentry.io/organizations/demarches-simplifiees/issues/2839832517/?project=1429550&query=is%3Aunresolved
2022-09-21 16:00:59 +02:00
Damien Le Thiec
d8afe81034 Setup RNA champ 2022-09-21 15:18:08 +02:00
Damien Le Thiec
606ac48964 Add new RNA Type de champ 2022-09-21 15:17:23 +02:00
sebastiencarceles
b643660017 'Choix parmi une liste' becomes 'Choix unique'
closes #7374
2022-09-06 11:26:30 +02:00
Colin Darie
7d39cc6b3e chore(schema): +services#etablissement_{infos,geopoint}
- `etablissement_infos` est une représentation partielle en jsonb
de ce qui est renvoyé par l'API Entreprise.
(On ne conserve que l'adresse pour le moment, utilisée pour le geocodage)
- `etablissement_geopoint` est le point (x,y) issu du géocodage de
l'établissement
2022-09-06 09:23:52 +02:00
Colin Darie
4e3b063b87
feat(carte/export): list geo labels 2022-09-05 11:02:51 +02:00
Martin
d1544bc4ae feat(Administrateurs::ProcedureAdministrateurs): ensure admin from super admin can not add administrateur 2022-08-23 13:28:10 +02:00
Paul Chavard
a24885c2ee feat(champ): can condition on other option 2022-08-04 15:28:54 +02:00
Paul Chavard
65e96002b1 refactor(spec): raise if old style factory is used 2022-08-04 12:10:32 +02:00
Paul Chavard
5e890cdb36 fix(factory): fix options handling on drop_down_list 2022-08-04 11:37:56 +02:00
Paul Chavard
ee9851091f test(factory): add a new way to build/create types_de_champ 2022-08-02 16:21:33 +02:00
Colin Darie
e1d3d1f844 chore(schema): add entreprise_etat_administratif to etablissements 2022-07-25 10:58:02 +02:00
Martin
3e56fdd1d7 fix(export): when it takes more than 3 hours, exports are purge before being generated. make it possible to have an export that takes more than 3 hours and share this behaviour with kind of same class archive 2022-07-25 10:48:54 +02:00
Paul Chavard
3e40b6d7bc fix(graphql): handle annotations inside blocks 2022-07-21 14:54:14 +02:00
Paul Chavard
430365768a test(dossier.pdf): add a test case with piece_justificative inside repetition 2022-07-21 11:46:28 +02:00
Paul Chavard
fb37f8c5a8 fix(dossier): fix some reset draft changes edge cases 2022-07-06 16:52:12 +02:00
Martin
274b5eab2e feat(invite): wrap invitation with targeted_user_links 2022-06-17 16:44:37 +02:00
Martin
cb890343ff feat(targeted_user_link): add targeted user link to wrap expert invitation in order to avoid access issue when the expert is connected with another account
feat(user.merge): ensure to merge user.targeted_user_link

Update app/models/targeted_user_link.rb

Co-authored-by: LeSim <mail@simon.lehericey.net>

Update app/models/targeted_user_link.rb

Co-authored-by: LeSim <mail@simon.lehericey.net>

Update app/models/targeted_user_link.rb

Co-authored-by: LeSim <mail@simon.lehericey.net>

feat(db/create_targeted_user_links): ensure not null with fk
2022-05-31 14:50:31 +02:00
Paul Chavard
02675a104d fix(revision): fix tests to use new revison system 2022-05-31 08:58:53 +02:00
simon lehericey
4d97f6aa8c types_de_champ_for_revision 2022-05-18 11:40:34 +02:00
Paul Chavard
cdd597db19 refactor(dossier): fix champ repetition factories 2022-05-18 11:24:14 +02:00
simon lehericey
7f23449f24 remove set_position 2022-05-18 10:11:31 +02:00
Paul Chavard
b6ea44f7e7 refactor(revision): remove type_de_champ#revision_id 2022-05-17 11:31:49 +02:00
simon lehericey
64175db4dd link children tdc by ProcedureRevisionTypeDeChamp 2022-05-06 10:34:40 +02:00
Martin
b1340586de bug(type_de_champ.repetition): on repetition, when there is a TypeDeChamp::Commune, champs for export should contain 2 entries [one with commune (postal_code), the other for commune (code_insee)]. 2022-05-06 09:38:45 +02:00
Pierre de La Morinerie
59d8479b85 dossiers: fix dossier_vide with drop_down_list
Previously a drop-down list with an ["Autre", "__other__"] value crashed
the PDF generation.
2022-05-04 16:34:37 +02:00
Paul Chavard
3384b535c5 refactor(champ): simplify siret champ 2022-05-03 16:14:54 +02:00
simon lehericey
ea361643be types_de_champ -> types_de_champs_public 2022-05-03 11:05:24 +02:00
Paul Chavard
be1a2f916d feat(exports): add statut and procedure_presentation to exports 2022-04-06 17:08:38 +02:00
Paul Chavard
51d7fd6190 test(dossier): update spec to use visible_by_administration 2022-03-10 14:29:40 +01:00
Martin
b808b4db00 fix(relation): avoid double association between procedure/procedure_revision/dossier_submitted_message 2022-02-25 14:01:18 +01:00
Martin
85a588541b feat(dossier_submitted_message): add a new system to customize the standby page (/merci) after an user created his folder. this is a basic feature that will come with more options asap
wip(dossier_created_hook): add tile to administrateurs/procedure#show in order to crud dossier_created_hook

refactor(css.utilities): remove merge helpers.scss within utils.scss (same purpose). use scss each for spacer modifiers

refactor(dossiers/_merci.html): extract partial _merci so we can re-use it in preview of dossier_created_hook.

feat(wip): current progress
2022-02-25 14:01:18 +01:00
Paul Chavard
08030bcdb7 fix(attestation_template): handle attestation changes on procedures without revisions 2022-02-11 11:12:10 +01:00
Paul Chavard
e269077c40 refactor(attestation_template): cleanup relationships 2022-02-11 08:45:32 +01:00
Paul Chavard
1fc7db2562 fix(attestation_template): fix migration task 2022-02-08 16:22:59 +01:00
Paul Chavard
12151acb99 Revert "Revert "feat(attestation): revise attestations""
This reverts commit 4e7733e571.
2022-02-08 16:22:59 +01:00
François Vantomme
2bdf58cb79 style(rubocop): fix Layout/SpaceInsideBlockBraces offense 2022-02-08 12:35:08 +01:00
Paul Chavard
4e7733e571 Revert "feat(attestation): revise attestations"
This reverts commit e413872530.
2022-01-25 18:26:34 +01:00
Paul Chavard
e413872530 feat(attestation): revise attestations 2022-01-19 18:00:37 +01:00
François Vantomme
14e0c68266 feat(api particulier): add MESRI field 2021-12-16 16:45:18 +01:00
Paul Chavard
c7b1dc7f87 fix(bulk_messages): destroy bulk messages with procedures 2021-12-09 16:16:40 +01:00
François Vantomme
6ab8ac0662 feat (api particulier): add Pole emploi field 2021-12-08 10:36:25 +01:00
François Vantomme
2110ef072c feat(api particulier): add DGFiP field 2021-12-07 11:03:05 +01:00
Paul Chavard
2ba05bfb4f fix(dossier): use depose_at instead of en_construction_at 2021-12-06 15:49:17 +01:00
Martin
1bb868714c fix(spec/lint/review): lint and fix spec of previous commits, also fix based on tchak feedback 2021-12-06 07:05:17 +01:00
Christophe Robillard
9341c787a1 administrateur can add zone to procedure 2021-12-02 19:24:26 +01:00
Christophe Robillard
561f6fb274 add belongs_to zone for procedure 2021-12-02 19:23:05 +01:00
Pierre de La Morinerie
b7d17b0989 models: validate that no drop-downs are empty on publishing
Disallow publishing a procedure containing drop-downs with no selectable
values.
2021-12-02 09:00:37 +01:00
Pierre de La Morinerie
8b3d31980a specs: use Instructeur.bypass_email_login_token in the tests 2021-12-02 08:51:52 +01:00
mfo
e7d9d047fe
Merge branch 'main' into 6649-etq-usager-instructeur-rendre-la-suppression-plus-visible 2021-11-24 14:07:32 +01:00
Pierre de La Morinerie
997c197980 specs: simplify the syntax of some factories 2021-11-23 08:07:07 +01:00
Pierre de La Morinerie
2203a7762f specs: create dossier revision and individual declaratively 2021-11-23 08:07:07 +01:00
Pierre de La Morinerie
f2233300b6 specs: assign the default groupe instructeur declaratively 2021-11-23 08:07:07 +01:00
Pierre de La Morinerie
0e809ac1a2 specs: build the default groupe instructeur before the create callback
This allows for better ergonomics, by having the default groupe
instructeur available even before the procedure is saved.
2021-11-23 08:07:07 +01:00
Pierre de La Morinerie
032e3e2cb1 specs: create the procedure administrateur declaratively
It seems better to create associations in an declarative fashion, rather
than using imperative code. This also makes the attribute compatible
with build_stubbed.
2021-11-23 08:07:07 +01:00
Pierre de La Morinerie
970c3e4b2b specs: avoid executing business logic in Procedure factory
Calling business logic in a factory is a code-smell, because it
usually requires the object to be saved into database, and may have
unintended consequences when the business logic is changed.

Also, this allows to just build a published procedure, without saving it
to the database.
2021-11-23 08:07:07 +01:00
Pierre de La Morinerie
ef2d9a3e86 specs: fix :champ_siret factory not using the procedure
Unlike all other champs factories, :champ_siret would attempt to build
a champ with a `nil` procedure (instead of using the dossier's one).
2021-11-23 08:07:07 +01:00
Martin
eecc0c38b6 lint(rubocop): come on, maybe i will find the inspiration to setup it up in my ide 2021-11-19 14:36:21 +01:00
Martin
608a85148f feat(Dossier.close_to_expiration): add method to find any kind of dossier close to expiration [reuse previous scopes], add missing spec to termine_close_to_expiration, complement spec for each kind of expiration scope with general close_to_expiration spec 2021-11-19 14:28:54 +01:00
Pierre de La Morinerie
b06183d7bf specs: rename Dossier's with_all_champs to with_populated_champs
This better reflects what the trait is used for, and disambiguate it
from the similarly named trait in the Procedure factory.
2021-11-03 19:38:01 +01:00
simon lehericey
3d524e9488 Change factory user password to be compatible with admin pass constraint 2021-10-28 14:39:13 +02:00
Pierre de La Morinerie
cedbd31d39 specs: only build an admin when building a procedure
This should slighly be faster than doing a create in the middle of the
build.
2021-10-26 12:03:30 +02:00
Pierre de La Morinerie
a2b91c8ec6 factories: cleanup Administrateur, Instructeur and Expert factories
This changes:

- avoids relying on application code to create mock objects,
- allows to build Administrateur or Instructeurs without saving them.
2021-10-26 12:03:30 +02:00
simon lehericey
ecc26897e2 add end to end spec 2021-10-12 14:27:20 +02:00
simon lehericey
c76d1043fa add cnaf champ 2021-10-12 14:27:20 +02:00
simon lehericey
d68129b34d add cnaf type de champ 2021-10-12 14:26:40 +02:00
Paul Chavard
9d5c5447c2 fix(dossier): do not attempt to destroy transfers when a dossier is destroyed
we had a dependent option on both sides of a relationship which created race conditions
2021-10-06 17:51:09 +02:00
Paul Chavard
9e30d5fc22 fix(virus scan): prevent virus scans in specs 2021-09-07 14:21:48 +02:00
Christophe Robillard
8f2e0660d3 add spec for dossier with commune 2021-08-19 08:04:47 +02:00
Paul Chavard
ffa8c0c80a feat(dossiers): enable dossiers termine expiration behind feature flag
feature flag "procedure_process_expired_dossiers_termine" controls if a procedure has expiration
enabled on dossiers termine

re #3796
2021-08-18 16:11:35 +01:00
Paul Chavard
ac0f50b488 Improuve champ blank check 2021-07-22 10:45:25 +02:00
Christophe Robillard
66cc0dd08d Revert "Revert "Expose dossier PDF export as IO""
This reverts commit 362093eff0.
2021-06-24 21:01:59 +02:00
krichtof
362093eff0
Revert "Expose dossier PDF export as IO" 2021-06-24 19:21:37 +02:00
Paul Chavard
b73d504f8d Expose dossier PDF export as IO
Co-authored-by: Christophe Robillard <christophe.robillard@beta.gouv.fr>
2021-06-24 17:49:24 +02:00
Paul Chavard
f238710044 Add last_month export 2021-06-23 09:23:10 +02:00
Christophe Robillard
aee8db99d0 add spec for dossier weight estimation 2021-06-09 10:52:38 +02:00
Paul Chavard
c5f2faa3d2 add tests for backward compatibility of geo_areas 2021-05-24 11:57:00 +02:00
Paul Chavard
3b85ade440 Add compatibility cadsatre layer with old API GEO 2021-05-24 11:57:00 +02:00
simon lehericey
17617fba43 address champ needs the data column 2021-05-19 15:59:18 +02:00
simon lehericey
1cf59f722e add :with_user trait to fci as user_id is mandatory 2021-05-05 14:28:20 +02:00
Christophe Robillard
f40d96fbd2 Revert "Revert "Export de tous les dossier d'une démarche""
This reverts commit d9a588b52e.
2021-04-29 17:29:47 +02:00
krichtof
d9a588b52e
Revert "Export de tous les dossier d'une démarche" 2021-04-29 16:07:18 +02:00
simon lehericey
8b73d8804c fetch all exports at once by groupe_instructeurs_ids 2021-04-29 11:23:41 +02:00
Christophe Robillard
09870c918d prevent race conditions when creating archives 2021-04-28 11:40:58 +02:00