Paul Chavard
7054c2d9ef
fix(demarche): always reset outside of transactions
2023-04-13 11:05:38 +02:00
simon lehericey
f6948cfd5e
feat(routing): record first groupe as default_groupe_instructeur
2023-04-13 10:36:42 +02:00
Eric Leroy-Terquem
cade677355
feat(db): add defaut_groupe_instructeur_id column to procedures
2023-04-13 10:36:42 +02:00
simon lehericey
3f55fddcef
feat(routing): ui side: prevent tdc deletion if used for routing
2023-04-13 10:28:52 +02:00
LeSim
b003fd8be8
Merge pull request #8774 from E-L-T/add-routing-to-groupe-instructeurs
...
Add routing rules to groupe instructeurs
2023-03-31 10:16:51 +00:00
Martin
21701a1e37
patch(demarche.lien_demarche): ignore cette colonne pr la supprimer plus tard
2023-03-31 09:57:27 +02:00
simon lehericey
1592006f63
feat(procedure): defaut_group_instructeur is the first created
2023-03-30 10:51:20 +02:00
Colin Darie
d6887f8aa4
fix(procedure): clone reset estimated_dossiers_count
2023-03-07 19:11:30 +01:00
Christophe Robillard
9ff88db48c
publish only some opendata procedures for datagouv
...
- only published or closed procedures
- only procedures with flag opendata
- only procedures with 4 or more dossiers
- only procedures without word "mail" in lien_site_web
- only procedures without word "intra" in lien_site_web
2023-02-28 17:02:08 +01:00
Christophe Robillard
bd92291f8a
cache dossiers count
2023-02-21 10:06:07 +01:00
Paul Chavard
c0ad7853cb
fix(administrateur): procedure page n+1
2023-02-16 11:29:21 +01:00
Colin Darie
e626eb69ce
feat(admin): import groupe instructeurs csv when procedure is closed
2023-02-09 11:17:13 +01:00
Kara Diaby
984ef67827
Prend en compte uniquement les procédures publiées dans les propositions de tags
2023-02-06 17:03:51 +01:00
Colin Darie
eb9cd90ee8
chore(schema): +procedure#estimated_duration_visible
2023-02-01 11:02:55 +01:00
Kara Diaby
b18d76dff6
Ne prend pas en compte les tags sur les démarches en brouillon
2023-01-24 14:53:27 +01:00
simon lehericey
528b2c2b88
fix(procedure): valid juridique on create and publication
2023-01-11 14:05:17 +01:00
simon lehericey
bd3fbbce49
add schema and annotation
2023-01-11 11:19:24 +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
Christophe Robillard
11a18516b2
remove feature flag zonage
2022-12-21 09:02:16 +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
Paul Chavard
9149e0fcd7
feat(revision): allow more dossiers to rebase
2022-12-14 17:42:27 +01:00
Paul Chavard
ed4d5cb36a
refactor(demarche): make declarative demarche processing syncroneous
2022-12-06 11:41:25 +01:00
Colin Darie
0014ce4b91
chore(schema): +procedures#piece_justificative_multiple
2022-12-05 10:47:10 +01:00
Colin Darie
91f4971df2
feat(champ): has_one_attached => has_many_attached piece_justificative_file
2022-12-05 10:47:10 +01:00
Paul Chavard
1fb051c3cc
refactor(attestation_template): remove unused code
2022-11-29 19:36:56 +01:00
Paul Chavard
a760e0a698
feat(demarche): enable revisions for all
2022-11-24 17:35:33 +01:00
Paul Chavard
234975b806
feat(graphql): expose groupe_instructeur state and update mutation
2022-11-24 14:33:29 +01:00
Paul Chavard
c73b650f85
feat(attestation): validate attestation tags
2022-11-23 12:26:26 +01:00
Paul Chavard
cafda4f6f0
refactor(attestation_template): move to procedure
2022-11-23 12:26:26 +01:00
Paul Chavard
29bdd82b59
refactor(procedure): types_de_champ -> active_revision.types_de_champ_public
2022-11-17 13:54:14 +01:00
Paul Chavard
e6288c39f2
refactor(dossier): champs -> champs_public
2022-11-10 22:44:39 +00:00
Paul Chavard
95f65900d3
refactor(active_storage): no download on clone
2022-11-10 12:25:55 +00:00
Paul Chavard
5e87539d6d
fix(groupe_instructeur): add explicit order to groupe_instructeurs
2022-11-09 10:56:40 +00:00
Eric Leroy-Terquem
aca2775874
remove routee? method
2022-11-04 12:03:44 +01:00
Eric Leroy-Terquem
5578115acf
update routee? method
2022-11-04 12:03:43 +01:00
Eric Leroy-Terquem
110953e450
constraint logic to active groups
2022-11-04 12:03:43 +01:00
Paul Chavard
33fc8a45ab
feat(emails): show email errors on procedure page
2022-11-04 09:08:41 +00:00
Paul Chavard
dd4c1f2fac
feat(emails): validate tags in notification emails
2022-11-04 09:08:41 +00:00
Kara Diaby
661e5f78ac
model
2022-11-02 10:19:43 +01:00
simon lehericey
52b7886961
fix(clone): on procedure clone, discard integrity error
2022-11-01 10:17:24 +01:00
Paul Chavard
8cf9aec0f7
refactor(procedure): expose procedure tags on model
2022-10-31 19:50:25 +01:00
Kara Diaby
492c7f377f
migration
2022-10-21 19:13:12 +02:00
Eric Leroy-Terquem
c6082ded09
no select for usager if only one groupe_instructeur
2022-10-13 19:49:32 +02:00
Paul Chavard
7f1dd49bdc
chore(flipper): always use feature_enabled? helper
2022-10-12 14:14:30 +02:00
Eric Leroy-Terquem
1177d861f4
add validation on routing_criteria_name
2022-10-10 09:48:11 +02:00
Martin
6752da40a9
test(procedure.direction): can we drop this column ?
2022-10-07 18:39:17 +02:00
simon lehericey
ceaf8ebbe7
fix: orphan tdc due to reset_draft
2022-10-07 17:44:30 +02:00
krichtof
44018a86de
a procedure without zone is finally valid
2022-10-07 16:59:12 +02:00
Christophe Robillard
272c8cae09
cannot publish a procedure if no zones
2022-10-07 10:48:35 +02:00
Christophe Robillard
bdcb451d3c
procedure publiee must have one zone at least
2022-10-07 10:48:35 +02:00
Christophe Robillard
bffd9d61a9
add habtm between procedures and zones
2022-10-07 10:48:34 +02:00
Martin
a256dfbaa0
fix(spec): missed a failed spec previously. sorry
2022-10-06 15:34:29 +02:00
mfo
8a3550cda4
Merge pull request #7860 from mfo/US/procedure-duree-up-to-manager
...
feat(procedure.max_duree_conservation_dossiers_dans_ds): make it more flexible
2022-10-06 11:36:50 +02:00
Martin
883ba8717f
clean(procedure.columns): :durees_conservation_required, :cerfa_flag, :test_started_at
2022-10-05 18:03:49 +02:00
Martin
405a885160
feat(procedure.max_duree_conservation_dossiers_dans_ds): make it more flexible
2022-10-05 17:27:09 +02:00
Paul Chavard
462cc41caa
refactor(block): use block? instead of repetition?
2022-09-29 17:49:14 +02:00
Christophe Robillard
9a9330159c
choose zone options with correct label
...
label of the zone is the one available when the procedure has been published (or at the creation if the procedure has not been published)
2022-09-26 16:58:53 +02:00
Colin Darie
6a4a9c8e03
fix(cron/procedure-declarative): don't auto accept a dossier still in degraded mode
2022-09-22 16:26:14 +02:00
Paul Chavard
c05bc61c99
fix(revisions): improuve changes information display
2022-09-07 13:52:44 +02:00
Martin
5f2b290407
feat(Procedure.clone): reset subject.duree_conservation_dossiers_dans_ds when procedure.duree_conservation_etendue_par_ds was extended. only extends it on demand otherwise admin could clone old procedure with higher duree_conservation_dossiers_dans_ds
2022-08-31 14:56:00 +02:00
Martin
6e31decc2d
feat(Procedure.clone): stop cloning procedure service which is confusing for some administrateurs
2022-08-31 14:56:00 +02:00
Martin
2f5528398f
feat(manager#outdated_procedure): allow super admin to enable procedure_expires_when_termine_enabled for old procedure
...
revew(typo): various typo, tx christophe :-)
fix(spec): due to typo fixes
2022-08-24 13:10:48 +02:00
Paul Chavard
48a4e8bec5
chore(db): remove already dropped ignored columns
2022-08-02 15:24:52 +02:00
Martin
05b6b462b6
feat(new_max_duree_conservation): make it configurable for other instances
2022-07-18 14:08:53 +02:00
Martin
24c8dc5829
feat(procedure.duree_conservation_dossiers_dans_ds): decrease max duree_conservation_dossiers_dans_ds from 36 to 12
2022-07-18 14:08:53 +02:00
Paul Chavard
4d48055158
feat(tags): expose used_type_de_champ_tags
2022-07-07 23:23:17 +02:00
Christophe Robillard
e2348aa8f1
rename publiques scope to opendata
2022-07-06 17:59:03 +02:00
Christophe Robillard
b56706b6b8
add scope publiques for procedures
2022-07-06 17:59:03 +02:00
Paul Chavard
fb37f8c5a8
fix(dossier): fix some reset draft changes edge cases
2022-07-06 16:52:12 +02:00
Paul Chavard
9b45dcea3f
feat(demarche): add possibility to reset draft revision
2022-07-06 14:18:01 +02:00
Christophe Robillard
6dd27ec7ed
reset opendata to true when procedure is cloned by another admin
2022-06-23 14:11:09 +02:00
Christophe Robillard
ea59f5f260
add opendata boolean attribute for procedure
...
when opendata is set to true, it means that descriptive's procedure can be
public
when opendata is set to false, ti means that descriptive's can not be
public, because the procedure is only available for public servants, not
citizens.
2022-06-23 14:11:09 +02:00
simon lehericey
9596dac508
force resync types_de_champ and types_de_champ_public/private
2022-06-17 14:54:21 +02:00
Kara Diaby
d58ecb3fcc
Lors de la restauration d'une démarche supprimée, met sur les dossiers liés hidden_by_administration_at à nil
2022-06-10 12:33:47 +02:00
Kara Diaby
d2bd2ffcbe
controller
2022-06-08 14:38:17 +02:00
Kara Diaby
60eed4ec01
model
2022-06-02 15:48:11 +02:00
Paul Chavard
462b2618a4
feat(procedure): move new children to new parent in transaction
2022-06-01 09:33:39 +02:00
Paul Chavard
c0a253078c
fix(revision): fix clone démarches with repetitions
2022-05-31 13:28:56 +02:00
Paul Chavard
6f98def288
refactor(revision): remove old code
2022-05-31 08:58:53 +02:00
Kara Diaby
36aff57f24
model
2022-05-26 12:45:05 +02:00
Paul Chavard
b635952b2f
refactor(revision): types_de_champ for export
2022-05-23 18:36:18 +02:00
Paul Chavard
b6ea44f7e7
refactor(revision): remove type_de_champ#revision_id
2022-05-17 11:31:49 +02:00
Paul Chavard
6adb3f7a3a
fix(revision): fix migrate_parent!
2022-05-12 10:40:41 +02:00
Kara Diaby
d187b7e881
model
2022-05-10 16:16:16 +02:00
simon lehericey
4ec5b418cb
fix create_new_revision
2022-05-06 12:37:59 +02:00
Martin
3737311390
feat(procedure.procedure_expires_when_termine_enabled): enable by default, allow contributor to choose the default settings of this flag using an env var during migration. ie: DEFAULT_PROCEDURE_EXPIRES_WHEN_TERMINE_ENABLED=true|false
...
feat(administrateurs/procedures#show): warning/alert when procedure_expires_when_termine_enabled is not true on current procedure
feat(administrateur/procedure#update): after an update redirect to procedure show: suggested by: https://ux.stackexchange.com/questions/55291/after-updating-form-should-redirect-back-to-form-itself-or-to-the-show-page-or-b and confirmed by Olivier
clean(Flipper.archive_zip_globale): no more in use, so remove all occurences
Update app/views/administrateurs/procedures/_suggest_expires_when_termine.html.haml
Co-authored-by: Pierre de La Morinerie <kemenaran@gmail.com>
Update app/views/administrateurs/procedures/_suggest_expires_when_termine.html.haml
Co-authored-by: Pierre de La Morinerie <kemenaran@gmail.com>
Update app/views/administrateurs/procedures/_suggest_expires_when_termine.html.haml
Co-authored-by: Pierre de La Morinerie <kemenaran@gmail.com>
Update spec/views/administrateurs/procedures/show.html.haml_spec.rb
Co-authored-by: Pierre de La Morinerie <kemenaran@gmail.com>
fix(review): typo, why ena?, who knows
fix(env.example.optional): add missing DEFAULT_PROCEDURE_EXPIRES_WHEN_TERMINE_ENABLED
2022-05-05 13:07:11 +02:00
simon lehericey
37e01ea399
re introduce revision_types_de_champ
2022-05-04 13:16:12 +02:00
simon lehericey
ea361643be
types_de_champ -> types_de_champs_public
2022-05-03 11:05:24 +02:00
Martin
be090a1bec
feat(administrateur/procedure#create): allow admin to add a lien to the DPO, allow user to consult link to dpo. enhance spec on _procedure_footer.html
...
Update spec/views/users/_procedure_footer.html.haml_spec.rb
Co-authored-by: Pierre de La Morinerie <kemenaran@gmail.com>
2022-04-27 15:09:02 +02:00
Paul Chavard
23b60c87e9
fix(procedure): cloned procedure should not have auto_archive_on
...
fix #7149
2022-04-22 10:48:31 +02:00
simon lehericey
23707d6033
ignore file not found error when cloning procedure
2022-04-14 13:46:16 +02:00
Paul Chavard
706c648be8
refactor(procedure): remove unused code
2022-04-05 09:42:23 +02:00
Paul Chavard
c530399eac
feat(procedure): display revisions diffs
2022-03-17 10:26:38 +01:00
Paul Chavard
54b559364a
feat(dossier): replace discarded with visible_by_administration
2022-03-10 14:29:40 +01:00
Pierre de La Morinerie
a645c5781d
models: delete AdministrateursProcedure when destroying Procedure
2022-03-08 09:20:34 +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
2d396fcfb7
feat(dossier): rebase dossiers en construction and en instruction
2022-02-18 17:08:38 +01:00
Paul Chavard
e269077c40
refactor(attestation_template): cleanup relationships
2022-02-11 08:45:32 +01:00
Paul Chavard
12151acb99
Revert "Revert "feat(attestation): revise attestations""
...
This reverts commit 4e7733e571
.
2022-02-08 16:22:59 +01:00
Pierre de La Morinerie
ca58e60dc0
validators: rename revisions
namespace to types_de_champ
2022-02-01 12:37:16 +01:00
Pierre de La Morinerie
d680602c84
models: validate private types_de_champ
2022-02-01 12:37:16 +01:00
Pierre de La Morinerie
e8e37cce15
models: refactor the types_de_champ validators
...
Context: we want to validate public and private types_de_champ
separately.
Before we validated the whole revision (and then validators themselves
enumerated all champs, public and private).
Now we validate the actual public types_de_champ, which will let us
validate separately the private types_de_champ.
2022-02-01 12:37:16 +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
Paul Chavard
c1cb89bb44
fix(revision): changed? conflicts with rails method
2022-01-19 18:00:37 +01:00
Paul Chavard
403e71b41f
feat(procedure): only purge procedures without dossiers
2022-01-18 11:22:04 +01:00
Kara Diaby
1ca553e088
rename hidden_by_instructeur by hidden_by_administration
2022-01-03 11:51:25 +01:00
Paul Chavard
ad4be3c482
refactor(dossier): handle discard by admin and super admin
2022-01-03 11:51:25 +01:00
François Vantomme
14e0c68266
feat(api particulier): add MESRI field
2021-12-16 16:45:18 +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
5e0f8a5816
task(type_de_champ): migrate type_de_champ parent_id
2021-12-06 21:45:54 +01:00
Martin
ce87878ff0
refactor(traitement.process_expired): move process expired to procedure
2021-12-03 16:32:36 +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
e219ec33d8
validators: rename no_empty_repetitions to no_empty_repetition
2021-12-02 09:00:37 +01:00
Pierre de La Morinerie
52b0fbf9b7
models: validate repetitions on publishing
2021-11-30 13:34:41 +01:00
Pierre de La Morinerie
48133c2595
models: don't save the procedure before the state transition
...
Otherwise a validation error occurs here instead of on save.
2021-11-30 13:34:41 +01:00
Pierre de La Morinerie
e5f5440663
models: explicitely save procedure's new revision
...
Deep-cloned objects have all their relationships stale. Thus, for a
newly deep-cloned revision, `revision.types_de_champs` returns `[]`,
even when it actually has associated types de champ.
This causes consecutive champs creations and re-ordering to fail in
subtle ways, like:
```
procedure.draft_revision.add_type_de_champ(…)
procedure.publish_revision!
procedure.draft_revision.add_type_de_champ(…)
procedure.draft_revision.move_type_de_champ(…) # this will fail
```
As `publish_revision!` created a new stale revision, moving the type
de champ fails because not all existing champs are found until the
object is refreshed.
We don't hit this path in production, because usually only a single
operation is made in a request.
To fix this, save the new revision before associating it as the draft
procedure.
(Another option would be to `reload` the revision after creation, but
this seems better contained and matches the name of the method.)
2021-11-25 08:49:17 +01:00
Pierre de La Morinerie
60c2718f29
models: remove custom code for file size validation message
...
With active_storage_validations 0.9.6, we can use the %{max_size}
variable directly in the error message.
2021-11-24 10:06:45 +01:00
Pierre de La Morinerie
2227dcc1e7
app: remove leftovers of procedure path autocomplete
...
We used to pre-validate the procedure, to display in advance if the path
could be used.
Now that the path autocomplete is long gone, we can remove this kludgy
code.
2021-11-23 14:30:21 +01:00
Paul Chavard
e74d599042
feat(procedure): remove duree_conservation_dossiers_hors_ds
2021-11-16 19:55:56 +03:00
Paul Chavard
f6b8689a97
fix(revisions): fix repetitions export with revisions
2021-11-03 18:20:48 +01:00
Paul Chavard
0e2f09dd6f
fix(dossiers): wrap dossier discard in a transaction
...
By doing this we ensure that deleted_dossier are not created when dossier is not discarded
2021-11-02 18:17:35 +01:00
Paul Chavard
2a3a9dd822
feat(revisions): rebase dossiers brouillons
2021-10-20 17:26:09 +02:00
simon lehericey
7aee944daa
show cnaf tdc when procedure is compatible
2021-10-12 14:27:20 +02:00
Paul Chavard
357c684688
feat(routage): self managing instructeurs
2021-09-27 15:06:17 +02:00
Paul Chavard
d4e8158887
feat(routing): add instructeurs_self_management_enabled to procedures
2021-09-27 15:06:17 +02:00
Ismael MOUSSA S
36dc9c2ca2
Add File Validation concern after refactoring
2021-09-21 12:11:20 -05:00
Ismael MOUSSA S
7c7c9c9ea4
Fix file size validation message
2021-09-21 12:11:20 -05:00
Ismael MOUSSA S
bdbb4deb87
ADD FILE_MAX_SIZE constant to set allow file size limit
2021-09-21 12:04:56 -05:00
Paul Chavard
0ff62c5a5e
feat(routage): add routing_enabled to procedures
2021-09-18 11:22:35 +02:00
simon lehericey
b000590d81
add api particulier sources to procedure
2021-09-17 13:50:23 +02:00
simon lehericey
6c6205e188
a cloned procedure to a different admin does not keep api_particulier token and scopes
2021-09-16 09:30:11 +02:00
simon lehericey
2d2ae3a878
add api particulier scopes to procedure
2021-09-16 09:30:11 +02:00
Pierre de La Morinerie
745e19bb8e
localize
2021-09-16 09:07:47 +02:00
simon lehericey
b29bae4707
a procedure has an encrypted api_particulier_token
...
Co-authored-by: François VANTOMME <akarzim@gmail.com>
2021-07-30 11:18:44 +02:00
Christophe Robillard
bc07a875eb
integrate a mininum weight for the average dossier weight
...
before this commit, the average dossier weight took account only pieces
justificatives. With this commit, we add a minimum weight for other
files included in an archive like pdf_export, log operations,
attachments added to traitements. This minimum weight is set arbitrary,
from the observation of some random procedures in production
2021-07-06 15:58:45 +02:00
Paul Chavard
ce27999bc3
Refactor clone_attachments
2021-07-01 16:21:46 +02:00
Paul Chavard
280e54b59d
Enable test revisions
2021-07-01 15:59:07 +02:00
Paul Chavard
15ff046428
Improuve revision changes messages
2021-06-24 11:39:49 +02:00
Paul Chavard
241eff76a3
Enable publish new revision only if some changes are found
2021-06-24 11:39:49 +02:00
Paul Chavard
0ca5e1abe2
Preview should reflect revision changes
2021-06-24 11:39:49 +02:00
Paul Chavard
35eccb5630
Show separate blocks for types de champ and annotation changes
2021-06-23 09:40:07 +02:00
Paul Chavard
19195008e8
Expose removed types_de_champ in exports
2021-06-23 09:40:07 +02:00
simon lehericey
eadae7af6b
show all available tdc for procedure presentation
2021-06-23 09:40:07 +02:00
Paul Chavard
0d25f52309
Add changed? and compare on ProcedureRevision
2021-06-23 09:40:07 +02:00
Paul Chavard
15e9013264
Set published_at on revision when publishing a procedure
2021-06-23 09:40:07 +02:00
Christophe Robillard
a8840faadb
move stats methods to appropriate concern class
2021-06-17 16:31:53 +02:00
Christophe Robillard
45ffae9eb3
affiche evolution temps de traitement
2021-06-17 16:31:53 +02:00