Pierre de La Morinerie
8b80c48679
emails: use the notification template for more messages
...
This allow to display the procedure logo and contact footer
at the bottom of these emails.
2019-07-18 12:38:13 +02:00
Pierre de La Morinerie
b157d860d2
emails: adjust notification footer for dossiers without messagerie
2019-07-18 12:38:13 +02:00
Pierre de La Morinerie
37c93e634e
emails: clarify the notify_new_draft
action
2019-07-18 12:38:13 +02:00
clemkeirua
ee8a1092e4
extracted MonAvisEmbedValidator
2019-07-17 18:04:32 +02:00
clemkeirua
91d10c0cf7
added navbar for mon avis
2019-07-17 18:04:32 +02:00
clemkeirua
6d43465ee5
renammed into monavis_embed
2019-07-17 18:04:32 +02:00
clemkeirua
8d2c5cfa14
validation par regex
2019-07-17 18:04:32 +02:00
clemkeirua
d8b63cd4c9
added 'monavis' inside the procedure and for users
2019-07-17 18:04:32 +02:00
Pierre de La Morinerie
727702ad4b
emails: mention the procedure name in the email title
2019-07-17 15:01:19 +02:00
Pierre de La Morinerie
71dfb38787
emails: improve typography of titles
2019-07-17 15:01:19 +02:00
Pierre de La Morinerie
bc42c90fe5
emails: make signature more compact
2019-07-17 14:55:55 +02:00
Pierre de La Morinerie
bd39eb3453
emails: remove dead code
2019-07-17 14:55:55 +02:00
clemkeirua
7eeddc0b79
using a shared example + scoped to state TERMINE
2019-07-17 11:53:16 +02:00
clemkeirua
b8fa567c81
ajout du tag 'lien document justificatif'
2019-07-17 11:53:16 +02:00
Pierre de La Morinerie
d86030fb76
dossier: add a reply icon near to "Reply to message" button
2019-07-17 11:43:21 +02:00
Pierre de La Morinerie
b4fe6e236e
messagerie: improve the textarea placeholder
2019-07-17 11:43:21 +02:00
Pierre de La Morinerie
92dd91a31b
messagerie: add a reply button next to the latest message
2019-07-17 11:43:21 +02:00
Pierre de La Morinerie
09efd06dff
forms: add a focus indicator to focused fields
2019-07-17 11:43:21 +02:00
Pierre de La Morinerie
80efe27ff2
pj migration: retry when changing the content type fails
2019-07-16 17:51:29 +02:00
Pierre de La Morinerie
a8354bd103
dossiers: unify deletion of dossiers between manager and user
...
The code paths for deleting a dossier were different, depending on
whether the dossier was deleted by the user, or from the Manager.
This commit unifies the two code paths into one.
This has the effect of:
- An operation log is now recorded when an user deletes its own dossier;
- Gestionnaires are now notified even when the dossier is deleted from
the Manager;
- The `support:delete_user_account` task now requires the email address
of the author.
2019-07-16 16:22:20 +02:00
clemkeirua
25f81f1d3c
download a dossier as zip with all attachments
2019-07-16 09:11:25 +02:00
Pierre de La Morinerie
76335511c8
omniauth: protect against CSRF
...
See https://github.com/omniauth/omniauth/wiki/Resolving-CVE-2015-9284
2019-07-15 18:16:00 +02:00
Pierre de La Morinerie
36eca3d059
dossier: rename the "Submit" action
2019-07-15 17:18:28 +02:00
Pierre de La Morinerie
862b08427b
status_overview: remove extraneous line
2019-07-15 15:55:25 +02:00
Pierre de La Morinerie
d9c01c0af6
status_overview: improve wording
2019-07-15 15:45:16 +02:00
Benjamin-Doberset
8ea8e52431
Update _status_overview.html.haml
2019-07-15 15:45:16 +02:00
Pierre de La Morinerie
077082c381
dossier: improve estimated delay wording
2019-07-15 15:27:22 +02:00
Benjamin-Doberset
77d825ae63
Update _estimated_delay.html.haml
2019-07-15 15:27:22 +02:00
Chaïb Martinez
5cb6ba2f3b
Fix tests
...
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-07-15 12:10:56 +02:00
Chaïb Martinez
3f9f67eb78
admin: fix the "Valider" button being hidden by Crisp
...
Fix #4021
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-07-15 12:10:56 +02:00
Chaïb Martinez
d968e7e6bd
Add some admin usage info for contextual help with crisp
...
Fix #4052
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-07-15 12:10:56 +02:00
Chaïb Martinez
04e204c740
Minor text fix
...
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-07-15 12:10:56 +02:00
Chaïb Martinez
535d032b73
Send URL page view to Crisp to trigger contextual help
...
Fix #4052
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-07-15 12:10:56 +02:00
Pierre de La Morinerie
d5f360c85f
manager: fix the deletion email not being sent
...
When deleting a dossier from the manager, the deletion notification
email was not being sent. This is because the returned object from
`Dossier#hide!` was invalid.
2019-07-15 10:01:16 +02:00
Pierre de La Morinerie
619f663e1a
procedure: remove individual_with_siret
column
2019-07-11 15:57:46 +02:00
Pierre de La Morinerie
a047ee356b
procedure: remove expects_multiple_submissions
column
2019-07-11 15:57:46 +02:00
clemkeirua
6838e69986
ajout de textes explicatifs pour les instructeurs
2019-07-11 15:48:00 +02:00
Pierre de La Morinerie
35c3795f56
dossier: make messagerie available on archived procedures
...
An Admin may archive a procedure to make it unavailable to
the general public, but before all dossiers are handled. In this case,
the messagerie needs to be available.
Fix #4089
2019-07-11 15:37:04 +02:00
Pierre de La Morinerie
10065df8ce
champs: put champ label in numeric fields validation messages
...
Replaces
> La valeur du champ doit être un nombre entier (sans chiffres après
> la virgule)
by
> La valeur du champ « Nombre de parents » doit être un nombre entier
> (sans chiffres après la virgule)
2019-07-11 15:12:48 +02:00
simon lehericey
768a298c2d
Same for go back in instruction
2019-07-11 12:50:15 +02:00
simon lehericey
5f39d3eac8
Fix bug when instruction repasse en construction twice
2019-07-11 12:50:15 +02:00
simon lehericey
6de1e2ec58
Fix bug when an instructeur closes a dossier already closed
2019-07-11 12:50:15 +02:00
Pierre de La Morinerie
fdca7c025a
procedure: ignore :expects_multiple_submissions
on the correct model
2019-07-11 12:14:25 +02:00
Pierre de La Morinerie
c2c9b19b3b
procedure: remove individual_with_siret
...
It isn't used anymore (see #3077 )
2019-07-11 11:58:21 +02:00
Pierre de La Morinerie
7ca3d5fce2
procedure: select for_individual
by default
2019-07-10 18:47:34 +02:00
Pierre de La Morinerie
9616df192d
procedure: use the model value for checking the radio buttons
...
Previously `checked: true` forced the checked status, disregarding the
actual value of the model.
Fix #4080
2019-07-10 18:47:28 +02:00
Paul Chavard
3cb39c2840
Refactor message attachements to use active_storage
2019-07-10 15:35:29 +02:00
Pierre de La Morinerie
03fc555edf
profile: send an email when the account is already taken
2019-07-10 11:31:09 +02:00
Pierre de La Morinerie
80074d6d82
profile: improve layout and wording of the confirmation message
2019-07-10 11:31:09 +02:00
Pierre de La Morinerie
f8a1911625
profile: display profile page even for single-role users
2019-07-10 11:31:09 +02:00
benjaminhenkel
c36b884adf
Update _state_button.html.haml
...
changement faute d'orthographe
2019-07-10 10:41:13 +02:00
simon lehericey
f6c402deec
better default value for linked_drop_down_list
2019-07-10 10:21:34 +02:00
clemkeirua
d29be1fe41
suppression de redouane de Pipedrive
2019-07-09 17:29:25 +02:00
clemkeirua
4c9846dcd1
Mise à jour du mail d'activation admin
2019-07-09 17:29:25 +02:00
clemkeirua
1f3015e24f
suppression de camille de la liste pipedrive
2019-07-09 17:29:25 +02:00
Pierre de La Morinerie
06afc3890f
france_connect: raise an error if some validation error occurs
...
If a validation error occurs in `find_or_create`, an object without `id`
will be returned–and the code will crash soon after.
Ensure that we crash immediately, so that we can report the root cause
(the validation error) instead of a seemingly-unrelated crash later.
2019-07-09 15:50:28 +02:00
Pierre de La Morinerie
6b27ac8514
france_connect: make existing user lookup case-insensitive
...
Fix #4053
2019-07-09 15:50:28 +02:00
Pierre de La Morinerie
ecfccae6f0
dossiers: remove support for Dossier#expects_multiple_submissions
2019-07-09 14:50:11 +02:00
Pierre de La Morinerie
d77a5552b7
dossiers: allow to start a new dossier after submitting one
2019-07-09 14:44:36 +02:00
Pierre de La Morinerie
b5ed74c09d
dossiers: always allow to create a new dossier
...
Turns out this is confusing for users (some UI elements are present for
some procedures, but not for others).
Better enable it for everyone.
2019-07-09 14:44:30 +02:00
simon lehericey
ea79b9a595
typo: use ’
2019-07-09 11:55:17 +02:00
simon lehericey
d36f6ebcd7
[ fix #1709 ] A user can change its email
2019-07-09 11:55:17 +02:00
simon lehericey
d68d2be798
Profil: accessible to all roles
2019-07-09 11:55:17 +02:00
clemkeirua
39f72a2be3
courbage d'apostrophes
2019-07-09 10:59:42 +02:00
clemkeirua
44fa210e34
changement du choix particulier/entreprise lors de creation d'une procedure
2019-07-09 10:59:42 +02:00
Paul Chavard
ad0a74ea7c
Fix dates in dossiers export
2019-07-09 10:02:08 +02:00
Pierre de La Morinerie
422f4b9cdb
dossiers_controller: warn properly when instructing a dossier twice
...
Fix #4055
2019-07-08 17:58:45 +02:00
Nicolas Bouilleaud
930fd345de
Validate messagerie_available? when creating a new Commentaire
...
Commentaires bu Users and Gestionnaire need the messagerie to be available; Automatic system Commentaires can be created anytime.
This reintroduces Commentaire validation that was introduced in #3979 and disabled in #4018
2019-07-08 16:13:43 +02:00
Nicolas Bouilleaud
3f439ac07a
Add Commentaire.is_sent_by_system? and .is_sent_by(someone)
...
And use it in CommentaireHelper and in the _message_icon and _message_issuer partials
2019-07-08 16:06:44 +02:00
Nicolas Bouilleaud
2abd93d360
Display the full User
email in Commentaires
...
* Only redact gestionnaires’ emails
* Also, rename Commentaire.sender to Commentaire.redacted_email
2019-07-08 16:06:44 +02:00
Nicolas Bouilleaud
3bf19de124
Remove Commentaire::columns override
...
It was used for a cleanup migration a long time ago (see #233 , #3033 , #3043 )
2019-07-08 16:06:44 +02:00
Nicolas Bouilleaud
7e98213829
Pass the signed-in user as the commentaire author from /contact
2019-07-08 16:06:44 +02:00
Nicolas Bouilleaud
72fd5d250f
Respect dossier.messagerie_available? in SupportController (/contact)
2019-07-08 16:06:44 +02:00
Nicolas Bouilleaud
12008728d2
Actually respect dossier.messagerie_available? in _messagerie.html.haml
...
instead of dossier.archived?
(fixup after #3979 )
2019-07-08 16:06:44 +02:00
Chaïb Martinez
c43b0c00db
minor text change [ fix #4050 ]
...
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-07-08 14:46:47 +02:00
Chaïb Martinez
94d340d25c
Remove phone number
...
Add chat link
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-07-08 14:32:55 +02:00
Chaïb Martinez
0fdae2456b
We will not quibble
...
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-07-08 14:20:49 +02:00
Nicolas Bouilleaud
4d73275bab
Drop Procedure.administrateur_id
2019-07-04 17:01:12 +02:00
maatinito
fee3ef8f4f
A4 output and allows large logos (headers) to take the whole width of the page
2019-07-03 15:31:34 -10:00
Paul Chavard
05987223db
Avoid crashing when demarche have no service
2019-07-03 17:18:44 +02:00
Paul Chavard
e582ff729c
Add aasm to dossiers state
2019-07-03 13:37:27 +02:00
Mathieu Magnin
10d3ba10f2
Before save copy body in rich_body
2019-07-03 13:15:49 +02:00
Mathieu Magnin
d13b7f953f
Migrate mail body to ActionText
2019-07-03 13:15:49 +02:00
Mathieu Magnin
b34f8fbe3d
Add ActionText
2019-07-03 13:15:49 +02:00
simon lehericey
4b154983fb
Landing: voir les démarches -> comment trouver ma démarche
2019-07-03 12:59:09 +02:00
Paul Chavard
860588b216
Upgrade javascript dependencies and add actiontext
2019-07-03 11:42:25 +02:00
simon lehericey
522d7684ea
dossier state button in red when refused
2019-07-02 18:40:20 +02:00
simon lehericey
c7e10fc43f
Manager: remove repasser_en_instruction
2019-07-02 18:40:20 +02:00
simon lehericey
b2c987ff0d
[ fix #3683 ] Dossier: add repasser_en_instruction!
2019-07-02 18:40:20 +02:00
simon lehericey
b79220e711
UI
2019-07-02 18:35:47 +02:00
Paul Chavard
8cb6b348a4
Update app/views/gestionnaires/procedures/_download_dossiers.html.haml
...
Co-Authored-By: Nicolas Bouilleaud <nico@bou.io>
2019-07-02 14:52:56 +02:00
Paul Chavard
fb0ef15e3c
Export dossiers v2
2019-07-02 14:20:29 +02:00
Paul Chavard
46c1bbbc6f
Official support for declarative demarches
2019-07-02 14:12:26 +02:00
Nicolas Bouilleaud
bd666a53af
Reallow automatic Commentaires for archived/closed Dossier
2019-07-01 11:59:29 +02:00
Nicolas Bouilleaud
3fee1c7644
Fix UpdateAdministrateurUsageStatisticsJob not being properly scheduled
2019-07-01 11:14:26 +02:00
Chaïb Martinez
e7b868c16f
Bug fix
...
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-07-01 11:13:36 +02:00
Chaïb Martinez
017f914e21
Add admin roi low and high
...
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-07-01 11:13:36 +02:00
Nicolas Bouilleaud
bd47bf2691
Disable Messagerie in archived Dossiers and procedures
...
* Use the existing Dossier#messagerie_available? method
* Raise when attempting to build a Commentaire if not messagerie_available?
* Disable the Messagerie form if not messagerie_available?
* Add tests :)
* Tweak the Horaires formatting while we’re here.
2019-07-01 09:39:39 +02:00
Paul Chavard
0d80c48b7e
Add avis to api
2019-06-27 14:40:17 +02:00
Paul Chavard
7f8079b5bb
Download active_storage blobs through proxy
2019-06-26 15:32:57 +02:00
Paul Chavard
aad4025ce0
Revert "Download active_storage blobs through proxy"
...
This reverts commit 0b39da7080
.
2019-06-26 15:31:35 +02:00
Paul Chavard
0b39da7080
Download active_storage blobs through proxy
2019-06-26 15:07:40 +02:00
Paul Chavard
7a2e9fe8a4
Merge pull request #3990 from betagouv/benjamin-alerte
...
Minor text change
2019-06-25 16:39:38 +01:00
Paul Chavard
c5704fa22f
Remove unused code from Commentaire
2019-06-25 17:04:29 +02:00
benjaminhenkel
1200d25f26
Update _list.html.haml
2019-06-24 17:00:10 +02:00
Pierre de La Morinerie
50cf6059e6
tasks: ensure creating an empty champ doesn’t display a notification
2019-06-24 15:49:02 +02:00
Nicolas Bouilleaud
44b9a2ef12
Include application_helper in ApplicationMailer
...
fixes a crash in activate_before_expiration.haml (sentry RAILS-40)
2019-06-21 09:50:33 +02:00
Paul Chavard
1781a49932
Add order param to API
2019-06-20 15:28:16 +02:00
Pierre de La Morinerie
9ce92d5c3b
champs: show attachment actions only when the atachment is persisted
...
Fix #3961
2019-06-20 11:03:08 +02:00
Pierre de La Morinerie
d561936863
task: ensure that hidden dossiers are rolled back
2019-06-20 10:48:56 +02:00
Pierre de La Morinerie
f8dda3ae45
tasks: don't abort rollback when a dossier fails
...
Instead print a warning, and continue rolling back the other dossiers.
2019-06-20 10:31:23 +02:00
Pierre de La Morinerie
91393be13c
tasks: extract rollback to a separate method
2019-06-20 10:31:23 +02:00
Nicolas Bouilleaud
43f936ec77
Do not check for path availability when in the “new procedure” form
...
The user can’t even enter the path here, it’s nil.
fixes #3918
The @availability was always PATH_NOT_AVAILABLE when the form was reloaded after an error, because Procedure::path_availability always found an (archived) procedure with a nil path. It got confused and concluded its path was conflicting.
🤷🏻♂️
2019-06-18 14:31:12 +02:00
Nicolas Bouilleaud
eb592f8ddf
Add manager controller for bill signatures
2019-06-17 16:16:28 +02:00
Nicolas Bouilleaud
925edb01c7
Add OperationsSignatureJob
2019-06-17 16:16:28 +02:00
Nicolas Bouilleaud
ad3553f0be
Add BillSignature Service
2019-06-17 16:16:28 +02:00
Nicolas Bouilleaud
f355f849a6
Add BillSignature Model
2019-06-17 16:16:28 +02:00
Nicolas Bouilleaud
dace9a53d3
Add Universign timestamp API query
2019-06-17 16:16:28 +02:00
Nicolas Bouilleaud
e16cb731c5
Add poor man’s ASN1 parsing
2019-06-17 16:16:28 +02:00
Nicolas Bouilleaud
7e80b8a4dc
Enable the Rails/InverseOf cop and add missing inverse_of
2019-06-17 13:44:07 +02:00
Pierre de La Morinerie
51aacabf13
models: fix touch not propagating when using nested attributes
...
Sometimes, when using nested attributes, touch doesn’t propagate to
parent relationships. (see https://github.com/rails/rails/issues/26726 )
Specifically, this happens in our app when updating a dossier with
only new attachements (but without changing the value of any fields).
To work around this, we need to define the parent relationship
explicitely. This is good practice anyway.
Fix #3906
2019-06-17 13:44:07 +02:00
Pierre de La Morinerie
1a832388fe
brouillon: clarify the "How to save" explanations
2019-06-17 11:12:26 +02:00
Pierre de La Morinerie
f12668fbfb
tasks: prevent the PJ migrations task updating from touching dossiers
2019-06-12 19:07:45 +02:00
Pierre de La Morinerie
60a61da644
tasks: extract dossier migration to a separate method
2019-06-12 18:58:47 +02:00
pedong
7ef1a558f4
change date format for all, use try_format_date of helper
2019-06-12 17:48:12 +02:00
simon lehericey
ee296f2b44
Use default format for date and datetime champ
2019-06-12 17:48:12 +02:00
pedong
abcd58c35d
[ fix #3710 ] date with letter
...
Co-Authored-By: simon lehericey <mail@simon.lehericey.net>
2019-06-12 17:48:12 +02:00
Nicolas Bouilleaud
5acb7a3f1b
Make rubocop happy
...
I did make some changes some lines above this 🤷 .
2019-06-12 17:33:53 +02:00
Nicolas Bouilleaud
1ac6cad132
Display previous followers in “personnes impliquées”
2019-06-12 17:33:53 +02:00
Nicolas Bouilleaud
6b90bc1ea1
Add “previously followed” dossiers and gestionnaires
...
Using an “inactive” Follow scope, similar to the “active” scope.
(I was tempted to use a default_scope, but this breaks when trying to `unscope` it in associations.)
2019-06-12 17:33:53 +02:00
Nicolas Bouilleaud
be4c575622
Add Follow.unfollowed_at
...
The active scopes is used indirectly in the dossier<->gestionnaire associations: the existing tests in dossier and gestionnaire just work™.
2019-06-12 17:33:53 +02:00
Nicolas Bouilleaud
d417907f36
Just rely on the constraints to avoid duplicate Follows
...
Don’t check manually in advance: just try to create the new Follow and silently fail.
Since we have both Rails validation and DB constraints in place, we have two types of errors to check. I’m not actually sure this change improves the legibility of the code.
2019-06-12 17:33:53 +02:00
Nicolas Bouilleaud
ba48a1da6e
Ensure Follow dates can not be not null
...
* Add Follow.unfollowed_at
* Change the unicity constraint to gestionnaire/dossier AND unfollowed_at
2019-06-12 17:33:53 +02:00
Nicolas Bouilleaud
8e04b4f0c9
Clear the “add admin” field after submit
...
Extract the add_admin form to its own partial and re-render it when an admin is successfully added.
2019-06-12 16:58:30 +02:00
Pierre de La Morinerie
55c9dfc001
api_entreprise: display better error message when SIRET is private
...
Previously we blamed the network.
Now we say that the entreprise infos cannot be retrieved. Which is not
ideal, but better.
2019-06-12 11:58:04 +02:00
Pierre de La Morinerie
78f75744e3
javascript: fix payload of ActiveStorage events missing on IE 11
...
Under some circumstances (like dispatching events just before a page
navigation), IE 11 events will be dispatched twice by the browser: once
with the payload, and a second time without.
To prevent these errors, ignore the events if the payload is missing.
2019-06-06 15:00:57 +02:00
Chaïb Martinez
eccd456325
Add crisp
...
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-06-05 17:41:47 +02:00
Paul Chavard
5a216b5583
Fix default button type
...
fix #3924
2019-06-04 17:59:02 +02:00
Chaïb Martinez
9198f7f437
Remove useless select options
...
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-06-04 16:55:11 +02:00
Chaïb Martinez
3b513af32a
Add nb_of_dossiers by years and deadline to PipeDrive Person
...
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-06-04 16:55:11 +02:00
Paul Chavard
6d312e1716
spec: refactor wait_for_ajax
to work with out new ajax utils
...
`wait_for_ajax` is not used anymore, but it may be in the future.
2019-06-04 16:30:36 +02:00
Paul Chavard
d5911071f8
Return dossiers on api with stable order
2019-06-04 15:34:49 +02:00
Pierre de La Morinerie
1f69c6c6eb
stylesheets: fix font of dropdown items on Firefox
...
Styling `<select>` elements is notoriously hard. Here, it seems that
Firefox doesn't handle custom fonts on `<option>` elements. As we have
no fallback font, the browser uses its default font, Times.
Having fallback fonts is good practice anyway.
2019-06-04 11:37:40 +02:00
Pierre de La Morinerie
f2f16e2580
carte: disable tiles layer during tests
...
During integration tests, we don't want to load the tiles from OSM:
- It hits OSM servers during every test run;
- It it slow (Capybara waits for the tiles to be loaded to proceed);
- It makes test time out when tiles cannot be loaded for some reason.
Fix #3913
2019-06-03 17:24:15 +02:00
Paul Chavard
ff44b7a600
Refactor purge pj to be more generic
2019-05-29 15:54:51 +02:00
Pierre de La Morinerie
a8847e40ea
pj migration: add comments and notices
2019-05-29 14:46:49 +02:00
Pierre de La Morinerie
6cb02f2927
pj migration: handle signal interrupts
2019-05-29 14:46:49 +02:00
Pierre de La Morinerie
1a256b37f8
pj migration: print a notice when migrating missing files
2019-05-29 12:20:10 +02:00
Pierre de La Morinerie
a168ae3a72
pj migration: reduce the number of queries by preloading champs
2019-05-29 12:20:10 +02:00
Pierre de La Morinerie
10df7b70ee
carrierwave: when migrating, create an empty blob if file is missing
2019-05-28 18:19:33 +02:00