Commit graph

4569 commits

Author SHA1 Message Date
Colin Darie
aeb602a63d fix(mail): default subject fallback when subject template is empty
Closes #8448
2023-02-09 17:49:43 +01:00
Colin Darie
5526cb5173 fix(mail): limit generated subjects to 100 characters 2023-02-09 17:39:56 +01:00
Damien Le Thiec
4b0e6ea382
Convert datetime field to datetime_local (#8572)
* Convert datetime field to datetime_local

* Fix tests

* Add value formatting view datetime component

* Add helper datetime component value
2023-02-09 15:18:38 +01:00
sebastiencarceles
6c5b82ebbf filter out locale from stored query params
As 'locale' isn't a param we want to prefill a dossier, we ignore it
and remove it from the stored query params.
2023-02-09 13:51:52 +01:00
sebastiencarceles
7a254d124f feature spec cover 2023-02-09 13:51:52 +01:00
sebastiencarceles
b3af9108cb harmonize get and post: go to prefilled file 2023-02-09 13:51:52 +01:00
sebastiencarceles
e212055ef8 tell when query params have been stored 2023-02-09 13:51:52 +01:00
sebastiencarceles
73fa572236 spec cover 2023-02-09 13:51:52 +01:00
Colin Darie
e626eb69ce feat(admin): import groupe instructeurs csv when procedure is closed 2023-02-09 11:17:13 +01:00
sebastiencarceles
d2f5fe5ff5 migrate(champs): normalize regions 2023-02-09 10:46:17 +01:00
Kara Diaby
f212fa1008 Permet de cloner une démarche depuis la page toutes les démarches 2023-02-09 08:28:30 +00:00
Damien Le Thiec
c5f1f80d25 Add prefill params tests repetition 2023-02-08 17:38:51 +01:00
Paul Chavard
f22cc8812b secu(graphql): log full queries and variables 2023-02-08 15:10:27 +01:00
Paul Chavard
dc9a455d22 fix(dossier): prevent crash in rebase 2023-02-08 11:11:14 +01:00
Eric Leroy-Terquem
22089efa12 test(groupe instructeurs): add test and preview when removing instructeurs 2023-02-08 10:36:42 +01:00
Eric Leroy-Terquem
6cbc514d56 feat(groupe instructeurs): remove mailing when add instructeurs 2023-02-08 10:36:42 +01:00
Damien Le Thiec
a51ed0094b Fix tests 2023-02-07 00:28:21 +01:00
Damien Le Thiec
b9c2d1251b Add missing tests repetition prefill 2023-02-06 17:38:59 +01:00
Colin Darie
51338eebb1 fix(admin/conditional): don't break when target champ is empty but a value is still referenced 2023-02-06 16:49:39 +01:00
Martin
14494255be Revert "migrate(champs): normalize departements (#8505)"
This reverts commit 6800bb8cec.
2023-02-06 15:57:26 +01:00
Martin
db36397bc5 Revert "migration: normalize regions (#8521)"
This reverts commit 8fee658eba.
2023-02-06 14:49:51 +01:00
Paul Chavard
6924b8e46d feat(dossier): optional repetition champ should not add first row 2023-02-06 11:53:32 +01:00
simon lehericey
a1487e9923 fix: allow a tag in various admin text 2023-02-06 11:01:28 +01:00
Martin
f4cc8078b4 amelioration(EmailEvent): purge les email_events vieux de plus de un mois
Update app/models/email_event.rb

Co-authored-by: Colin Darie <colin@darie.eu>

Update app/jobs/cron/purge_old_email_event_job.rb

Co-authored-by: Colin Darie <colin@darie.eu>
2023-02-06 10:35:57 +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
Martin
2de9026c13 amelioration(dolist_api): forward le message_id afin de faciliter les investigations 2023-02-03 17:19:36 +01:00
Lisa Durand
f80fe9680f corrections from Sim review 2023-02-03 15:13:06 +01:00
Lisa Durand
fcd5b38a28 fix spec broken because new line in html table 2023-02-03 15:13:06 +01:00
Lisa Durand
f1a378bf03 dont'use DSFR component - add a line inside the table instead 2023-02-03 15:13:06 +01:00
Lisa Durand
9aa6c55d1f replace partial by component 2023-02-03 15:13:06 +01:00
Lisa Durand
1a79eb9717 change checkbox tag to hidden field 2023-02-03 15:13:06 +01:00
Lisa Durand
93a85ca4b0 add limit of 500 dossiers 2023-02-03 15:13:06 +01:00
mfo
48503e0743
Merge pull request #8533 from colinux/feat-dolist-send-mail-api
Email: API Dolist pour envoyer des emails transactionnels
2023-02-03 14:36:53 +01:00
Eric Leroy-Terquem
ff5fecef25 fix(dossiers_transfers): can destroy dossiers_transfers 2023-02-03 13:48:39 +01:00
Damien Le Thiec
63e7c17fda First tests for prefill repetition 2023-02-03 12:14:18 +01:00
Colin Darie
380a4232c6 fix(mailer): preview for DossierMailer#notify_new_draft 2023-02-02 15:58:53 +01:00
Colin Darie
b0b7114c3b
feat: jsv support for primitives 2023-02-02 14:55:46 +01:00
Sébastien Carceles
8fee658eba
migration: normalize regions (#8521) 2023-02-02 10:19:33 +00:00
Sébastien Carceles
6800bb8cec
migrate(champs): normalize departements (#8505)
* migration: normalize departements

* rename update_all methods to avoid collusions

* simplify scopes
2023-02-02 10:00:56 +00:00
Paul Chavard
2971100081 fix(dossier): do not try to rebase if procedure is not published 2023-02-02 10:11:46 +01:00
Paul Chavard
fc31ef6da3 chore(dossier): move concern spec to concern folder 2023-02-02 10:11:29 +01:00
Lisa Durand
120fbb0ef7 Overload the finished_at 2023-02-01 17:06:04 +01:00
Lisa Durand
d0a131dc55 change the way we set the finished_at on batch operation job to fix alert display bug 2023-02-01 17:06:04 +01:00
Damien Le Thiec
e7c78321d9 Fix new failing tests 2023-02-01 13:35:32 +01:00
Damien Le Thiec
a4645855d3 Fix tests prefillable repetition 2023-02-01 12:02:09 +01:00
Colin Darie
fa0f72aaba feat(procedure): hide estimated fill duration when super admin disabled it
Closes #8466
2023-02-01 11:02:55 +01:00
Colin Darie
eb9cd90ee8 chore(schema): +procedure#estimated_duration_visible 2023-02-01 11:02:55 +01:00
Paul Chavard
9c83939431 fix(dossier): fix adding repetition in a new revision 2023-02-01 10:36:46 +01:00
Eric Leroy-Terquem
b306dea5cf refactor(avis): rename revive by remind 2023-02-01 09:55:46 +01:00
Eric Leroy-Terquem
004bf5be38 feat(avis): add remind_by! method 2023-02-01 09:55:46 +01:00
Martin
4f4791a864 bug(liens-invitation): ne devrait pas pointer sur l'avis ayant le même id que l'invitation 2023-01-31 16:33:31 +01:00
Martin
88553eec9b correctif(dossier_transfer): le transfer de dossier vers un email contenant des majuscule ne fonctionnait pas 2023-01-31 14:52:57 +01:00
Colin Darie
5cddb1c74e fix(procedure_presentation): options groupe_instructeur for that procedure only 2023-01-31 13:55:06 +01:00
Paul Chavard
dcbe16603a fix(dossier): fix parser with dashes 2023-01-31 10:40:48 +01:00
Paul Chavard
ca05fb753b fix(only_present_on_draft?): broken when type_de_champ is removed from later revisions 2023-01-31 09:26:50 +01:00
Colin Darie
36d5569114 fix(instructeurs): pdf in exports include info administration 2023-01-30 18:38:54 +01:00
Colin Darie
ef864021f7 refactor(pj_service): explicit options with_{bills,champs_private} because expert & instructeurs does not need the same 2023-01-30 18:04:09 +01:00
Martin
dbe64cf0c8 correctif(date_champ): renforce la validation avec le parsing de la date plutot qu'une approche par regexp 2023-01-30 13:01:24 +01:00
Martin
78f9910fd0 bug(date): la validation est trop lache 2023-01-30 13:01:24 +01:00
Colin Darie
3265fff30e fix(dropdown): wait "other" input to be disabled before autosave
Fix le workflow suivant pour un champ drop down avec option "autre" :

- on choisit la valeur "autre" avec une valeur => ça autosave la bonne valeur
- on choisit finalement une autre valeur proposée => l'autosave envoyait
  la nouvelle valeur, et toujours la valeur "other" car l'input n'était pas encore
  `disabled`. Par conséquent la valeur other overridait la valeur choisie
  et ça provoquait des erreurs en cascade, notamment dans le conditionnel.
2023-01-30 12:16:25 +01:00
Paul Chavard
2f4e85f163 fix(dossier): set rebased_at only on changed champs 2023-01-30 12:01:11 +01:00
Paul Chavard
298721f90d fix(dossier): fix clone with data 2023-01-30 10:58:26 +01:00
Colin Darie
923ee59e92 refactor(instructeurs/perf): don't load anymore geo areas for each champ because of header
Economise 1 requête par champ sur chaque page instructeur d'un dossier
à cause du header juste pour savoir s'il faut afficher
le bouton d'export GeoJSON.
2023-01-26 14:57:45 +01:00
Martin
9a12b97424 amelioration(expert/avis/header): passe d'un dropdown avec un element pour telecharger le dossier au composant dsfr de telechargement de fichier 2023-01-26 11:13:23 +01:00
Martin
2be0f5aa99 amelioration(menu): extraction des menu dans un composant ruby pour ne pas dupliquer les changements aria partout ds la codebase 2023-01-26 11:13:23 +01:00
Colin Darie
51c1736d00 refactor(conditional): extract in a ChampConditionalConcern with tests 2023-01-26 09:06:30 +01:00
Colin Darie
81f00774af feat(logic): operators sources 2023-01-26 09:06:30 +01:00
Paul Chavard
5b9e534b3f chore(turbo): morph all the things 2023-01-25 13:45:26 +01:00
Sébastien Carceles
49ce255e29
feat(dossier): prefill region champ (#8442)
* make regions champ prefillable

* add possible and example value

* add external_id and value validation
2023-01-24 11:25:17 +00:00
Martin
4990c448b1 amelioration(mail.prioritaire): en plus des mails de device, ajoute la gestion du routage des autres mails critique 2023-01-24 11:49:53 +01:00
mfo
84a667b8bd
Merge pull request #8454 from tchak/feat-epci
feat(types de champ): add EPCI champ
2023-01-23 16:56:18 +01:00
Sébastien Carceles
92c769de4f
fix(prefill): code pays display (#8477)
* show translated text AND possible values

* show less possible values

* show countries possible values
2023-01-23 14:08:20 +00:00
mfo
1926aa283d
Merge pull request #8425 from adullact/fix/procedure-custom-retention
Fix du support d'une durée personnalisée de conservation des dossiers
2023-01-23 12:11:29 +01:00
Damien Le Thiec
962016e32e
Schema graph_ql (#8406)
* First draft schema graph_ql

* Add tests for json schema procedures
2023-01-23 11:31:06 +01:00
Sébastien Carceles
68ddae7382
feat(demarche): prefilling stats (#8436)
* force json content type for POST / PATCH / PUT

* add specs about stats dossiers funnel

* new endpoint to render stats about a procedure
2023-01-20 13:28:02 +00:00
Paul Chavard
a4cbbe721e feat(types de champ): add EPCI champ 2023-01-20 11:32:36 +01:00
Paul Chavard
8f1ae99413 fix(graphql): remove deprecated options from introspection query 2023-01-20 09:54:50 +01:00
Martin
52380d5249 fix(api): on fixe avec avec des tests le prob de token 2023-01-19 17:40:19 +01:00
Martin
7206f1b298 bug(api): token, not checked 2023-01-19 17:33:19 +01:00
simon lehericey
84d08d4d24 fix(expert_export): an expert export excludes annotation and avis 2023-01-19 12:09:16 +01:00
Sébastien Carceles
0046338e6a
fix(prefill): don't mark the dossier as prefilled when it's not (#8464)
A dossier should not be marked as prefilled when it's not, meaning
when no prefill params are given.
2023-01-19 10:51:56 +00:00
Martin
8528939b75 correctif(champs/repetitions#remove): les row id etant des ulid commence par un int. utiliser l'ulid comme selecteur css n'est pas valide. il faut donc avoir un selecteur CSS 'safe', et envoyer le row_id 2023-01-19 10:48:01 +01:00
Martin
f59354f787 tech(champs/repetitions#remove): ajout d'un test pour s'assurer que l'action de suppression d'un bloc repetable fonctionne 2023-01-19 10:38:30 +01:00
Martin
3dc26efc61 infra(monitoring): ajoute le webhook pour les notifier des incidents cote sib 2023-01-19 09:50:25 +01:00
Colin Darie
428dd9bf1a fix(dossier): we can't terminer any dossier having etablissements in degraded mode
Closes #8449
2023-01-18 19:23:25 +01:00
Kara Diaby
063059d6f0 tests 2023-01-18 18:46:42 +01:00
Paul Chavard
b5dc71e975 fix(graphql): demarche with pj should return schema 2023-01-18 18:06:10 +01:00
Paul Chavard
cdb3ce65cb feat(graphql): expose more information on demarche descriptor 2023-01-18 13:46:40 +01:00
Damien Le Thiec
3a8a50a216
Allow prefill pays type de champs (#8344)
* Allow prefill pays type de champs

* Avoid conditional prefil params for pays champ

* Clean pays data with batch update

* Fix bug and add test batch update pays value

* Improve performance batch_update_pays

* Fix associated country code problem

* Fix after party task name

* Format country name if needed in batch update
2023-01-18 12:52:38 +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
simon lehericey
8e75b6ff77 fix(send_dossier): avoid leaking instructeur emails 2023-01-17 16:57:56 +01:00
Colin Darie
ce7e674159 feat(mailer): make errors interceptable by jobs so they will retry
Comme on intercepte chaque `StandardError` pour le monitoring des mails
en erreur, l'erreur n'était plus visible par le job, et les emails
étaient perdus.

A la place on re-raise une autre erreur pour que le job échoue afin de
retry plus tard. Pour ne pas être "avalée" par le rescue_from,
cette erreur doit héritée d'`Exception` plutôt que `StandardError`.

NB: il faudrait parvenir à écrire un test pour vérifier ce comportement.

Pour être vérifié en dev, il faut activer `raise_delivery_errors`
comme en production.
2023-01-17 14:26:11 +01:00
Paul Chavard
44488c7014 feat(dossier): use select in filters bygroupe instructeur 2023-01-16 14:00:08 +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
8fbb866aba fix component spec 2023-01-16 11:14:29 +01:00
Lisa Durand
db3085fa33 design : make filter buttons tertiary and dropdown secondary 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
Damien Le Thiec
5e26acb0e1
Make date and datetime prefillable (#8304)
* Make date and datetime prefillable

* Format in ISO8601 format
2023-01-12 17:42:02 +01:00
François Vantomme
e794d4f77b
fix(procedure): deal nicely with custom NEW_MAX_DUREE_CONSERVATION 2023-01-12 14:37:54 +01:00
Paul Chavard
289d48f697 refactor(js): use autosubmit controller in filter_component 2023-01-12 11:58:46 +01:00
Paul Chavard
b663939674 feat(graphql): add demarcheCloner mutation 2023-01-11 23:38:12 +01:00
Martin
d535735155 amelioration(devise_mailer): oriente les mails de devise vers un fournisseur quand cela est configuré 2023-01-11 17:13:05 +01:00
Martin
733ba01695 amelioration(balancer_delivery_method): implemente le fait de forcer la methode de delivery au niveau de notre balancer de fournisseur demail 2023-01-11 17:13:05 +01:00
Lisa Durand
8ba13cb685 humanize raison sociale from api_entreprise in adapter 2023-01-11 14:42:38 +01:00
simon lehericey
528b2c2b88 fix(procedure): valid juridique on create and publication 2023-01-11 14:05:17 +01:00
simon lehericey
9043bed3a0 refactor(procedure_presentation): add required tags 2023-01-11 14:05:17 +01:00
Colin Darie
820cb4bd27 fix(rna): some associations don't have date_publication
https://sentry.io/organizations/demarches-simplifiees/issues/3698792231/events/fde901fac5a44129adcafc891d59d086/?project=1429550
2023-01-11 12:30:02 +01:00
François Vantomme
fe518fed8c refactor(links): move FAQ from footer to common scope 2023-01-11 11:28:03 +01:00
François Vantomme
faa5dda761 refactor(links): use FAQ URL locale everywhere 2023-01-11 11:28:03 +01:00
Colin Darie
05b517a847
fix(mailer): observers on balancer and balanced delivery methods
- Les observers doivent être déclarés *avant*
  le chargement de nos delivery methods (Sendinblue & Dolist),
  sinon ils seront ignorés par ces derniers

- dans le balancer, on ne peut pas appeler `.deliver` une seconde fois,
  sinon les observers (et interceptors) sont invoqués deux fois.
2023-01-11 00:57:16 +01:00
Paul Chavard
afc1f12028 feat(graphql): implement add/remove instructeurs via API 2023-01-10 20:33:35 +01:00
Paul Chavard
af33d5d65c refactor(repetition): use row_id instead of row 2023-01-10 19:31:41 +01:00
Lisa Durand
7abf51ca81 split filter in 2 partials too display filters tags on its own div to have more spaces 2023-01-10 18:05:23 +01:00
François Vantomme
0e3fe055e4
fix(archive): typo on flash notice 2023-01-10 17:23:48 +01:00
Colin Darie
d58e6a2f9c refactor(email): remove pseudonymization, it will be done at dump-time 2023-01-10 16:07:35 +01:00
Colin Darie
b9c1799e60 refactor(mailer): shared error concern 2023-01-10 16:07:35 +01:00
Colin Darie
0a22c1d2f0 chore(email): log smtp errors 2023-01-10 16:07:35 +01:00
Colin Darie
6cb2389eef chore(email): add an observer which log the emails dispatched 2023-01-10 16:07:35 +01:00
Lisa Durand
25a7fa5a34 add bulk action 'follow' 2023-01-09 11:58:51 +01:00
Sébastien Carceles
177dec2bdb
feat(dossier): add dossier id to prefill response (#8382) 2023-01-06 13:46:27 +00:00
Paul Chavard
5a4cefc5c5 fix(dossier): fix rebase with drop down options 2023-01-06 14:15:46 +01:00
Sébastien Carceles
06b8a0f734
feat(dossier): prefill boolean champs (#8381) 2023-01-06 14:01:59 +01:00
Paul Chavard
940f8c0474 fix(graphql): fix departements with alphanumeric codes 2023-01-05 17:33:03 +01:00
Lisa Durand
080747f60b reorganise multiple buttons on top of table from instructeur procedure view 2023-01-05 17:22:53 +01:00
Martin
3918757dc9 correctif(test): desormais l'association batch_operations.groupe_instructeurs passe par le dossier. Mise a jour des tests 2023-01-05 16:20:18 +01:00
Martin
018a94f43b correctif(batch_operation): empeche de changer l'etat d'un dossier en cas d'erreur. et s'assure de delinker le dossier en cas de dossier invalid 2023-01-05 16:20:18 +01:00
Lisa Durand
59468fe351 add justificatif_motivation field to batch operation accepter 2023-01-05 16:20:18 +01:00
Lisa Durand
1bc0609543 add motivation field to batch operation accepter 2023-01-05 16:20:18 +01:00
Lisa Durand
d7ebb67889 implement first step - accepte without motivation and PJ 2023-01-05 16:20:18 +01:00
Paul Chavard
378f3c5fb0 use join table instead of arrays 2023-01-05 16:20:18 +01:00
Sébastien Carceles
1de969915a
rename file to match controller name (#8371) 2023-01-05 14:38:56 +01:00
Paul Chavard
26e02c7173 fix(template): trix will transform double spaces in &nbsp; 2023-01-05 13:23:24 +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
Colin Darie
a91fc3bbe1 chore(usager/wording): Dossiers => Mes dossiers in main tab 2023-01-04 13:15:10 +01:00
Colin Darie
b89fc16999 style(instructeurs/expiration): convert banner to DSFR 2023-01-04 13:15:10 +01:00
Colin Darie
0b033a7025 refactor(email): improve wording of automatic deletion to user
Closes #7688
2023-01-04 13:15:10 +01:00
Colin Darie
7d16ae83e8 refactor(email): improve wording of near deletion to user
Closes #7688
2023-01-04 13:15:10 +01:00
Paul Chavard
c4a30084fe refactor(virus_scan): remove lock 2023-01-04 12:12:11 +01:00
Paul Chavard
6e18090fb3 refactor(virus_scan_result): use column instead of metadata on blob 2023-01-04 12:12:11 +01:00
Paul Chavard
d469bca0ae refactor(watermark): use column instead of metadata on blob 2023-01-04 12:07:08 +01:00
Sébastien Carceles
456be420fa
feat(demarche): describe dossier prefilling with POST (#8298)
* feat(demarche): describe dossier prefilling with POST

* show response example
2023-01-04 07:31:31 +00:00
Martin
a4d6692bc6 accessibilite(pages-authentification): evolutions des pages de connexion/creation de compte pour respecter le DSFR et supporter une meilleure accessibilite
Update app/components/dsfr/input_component/input_component.html.haml

Co-authored-by: Colin Darie <colin@darie.eu>
2023-01-03 16:26:05 +01:00
Martin
76301d4c32 correctif(api_entreprise_token): les nouveaux tokens stockent les roles dans sous la clé scopes et non plus roles 2023-01-03 15:32:50 +01: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
mfo
31735e16d8
Merge pull request #8339 from mfo/US/fix-departement-champs
Us/fix departement champs
2022-12-27 16:01:35 +01:00
Martin
186d4e6539 correctif(ChampDepartement): gere les departement a 3 codes 2022-12-27 14:55:57 +01:00
Paul Chavard
9b3fa4dd3c refactor(revision): changes should be domain objects 2022-12-27 10:58:53 +00: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