Commit graph

5223 commits

Author SHA1 Message Date
simon lehericey
058442c84e [link to #4557] An instructeur cannot change its email on its own 2019-12-11 17:18:21 +01:00
simon lehericey
21910c959e @current_user -> current_user 2019-12-11 17:18:21 +01:00
simon lehericey
301653bb89 Only display email form if the user is not instructeur 2019-12-11 17:18:21 +01:00
Paul Chavard
6b5793f0b9 [GraphQL] fix a crash in mutations with an attachment 2019-12-11 13:22:32 +01:00
Paul Chavard
422b7f37ec [GraphQL] expose file information 2019-12-11 12:34:49 +01:00
Pierre de La Morinerie
ef76af5546 app: add a site-wide banner for the national strike 2019-12-04 17:32:04 +01:00
Paul Chavard
2f060fc30a Add depubliee state to procedures 2019-12-04 16:52:41 +01:00
Paul Chavard
3a142fea40 Isolate react components from react loaders 2019-12-04 16:26:59 +01:00
Paul Chavard
03326169c5 Always load IntersectionObserver to fix old browsers
fix #4614
2019-12-04 16:26:59 +01:00
Pierre de La Morinerie
7f2d5f6248 app: unify pre-maintenance banner with other site-wide banners 2019-12-04 15:29:15 +01:00
Pierre de La Morinerie
704ac64f63 stylesheet: move all browser banner styles into site-banner.scss 2019-12-04 15:25:37 +01:00
Paul Chavard
e5f582d644 Afficher la description du champ répétable
fix #4579
2019-12-04 14:28:31 +01:00
Paul Chavard
b5eafdab56 [GraphQL]: informations du service 2019-12-04 14:21:40 +01:00
Paul Chavard
fd42fafcb4 [GraphQL]: informations du demandeur du dossier 2019-12-04 12:39:29 +01:00
Paul Chavard
34afc44813 Expose declarative démarche state in GraphQL 2019-12-04 12:30:26 +01:00
Paul Chavard
e429c79eb1 Allow administrators to set themselves démarches as déclaratives 2019-12-04 12:30:26 +01:00
Christophe Robillard
e35dcad5ae rend le téléphone obligatoire côté client 2019-12-04 05:34:43 +01:00
Christophe Robillard
77b647fe25 N'affiche pas un telephone inexistant d'un service 2019-12-04 05:34:43 +01:00
Christophe Robillard
6eb36482bc rend lisible l'explication d'un contact valide 2019-12-04 05:34:43 +01:00
Christophe Robillard
8ee6657f1e rend le champ telephone optionnel côté client 2019-12-04 05:34:43 +01:00
Christophe Robillard
4e7c779116 refuse les numéros de tel invalides
rend facultatif les numéros de téléphone
2019-12-04 05:34:43 +01:00
Christophe Robillard
b60aff8468 explique en détail l'importance de renseigner des info de contact valides 2019-12-04 05:34:43 +01:00
Christophe Robillard
0b518844dc explique pourquoi un tel valide est important 2019-12-04 05:34:43 +01:00
simon lehericey
508ba8f116 Add seek_and_destroy_expired_dossier 2019-12-03 17:18:53 +01:00
simon lehericey
006e426a11 Work on deletion mail 2019-12-03 17:18:53 +01:00
simon lehericey
79bfb8b143 Delete expired dossiers 2019-12-03 17:18:53 +01:00
simon lehericey
6391f7ff9c Work on notify_near_deletion mailer 2019-12-03 17:18:53 +01:00
simon lehericey
03b7e81ca4 Send deletion notice for near expired brouillon 2019-12-03 17:18:53 +01:00
Pierre de La Morinerie
f351ade434 javascript: expose Turbolinks globally
When calling `redirect_to` in a Rails controller that emits Javascript,
Rails will emit `Turbolinks.replace(…)` commands. And for this,
Turbolinks needs to be globally available.
2019-12-03 16:28:47 +01:00
Pierre de La Morinerie
3212dfddca app: allow hiding the browser banner for one week 2019-12-03 16:09:18 +01:00
Pierre de La Morinerie
299f9df375 app: on the old design, move the deprecation banner to a better location
Otherwise it hides the "Change role" controls.
2019-12-03 16:02:08 +01:00
Pierre de La Morinerie
2b934610a0 app: improve the browser deprecation banner appearance 2019-12-03 16:02:08 +01:00
clemkeirua
8b1535e462 ajout de pagination au sommet de la liste des dossiers 2019-12-03 14:55:43 +01:00
Pierre de La Morinerie
5928a16b37 Amélioration de la mise en page 2019-12-03 14:06:12 +01:00
clemkeirua
841b00bafe focus sur le mot de passe lorsqu'on traite les suggestions 2019-12-03 14:06:12 +01:00
clemkeirua
8cab6ae19f retours divers 2019-12-03 14:06:12 +01:00
clemkeirua
fdec2e04c3 la boite de suggestion d'email est en dessous du champ email 2019-12-03 14:06:11 +01:00
Pierre de La Morinerie
fb3f82074d Hide the suggestions when the user corrects the address 2019-12-03 14:06:11 +01:00
Pierre de La Morinerie
1d1260060e Fix the tests by using event delegation 2019-12-03 14:06:11 +01:00
clemkeirua
80b68afab5 implement email suggestion 2019-12-03 14:06:11 +01:00
clemkeirua
0bfdb2d5da fermeture et acceptation de la suggestion d'email 2019-12-03 14:06:11 +01:00
Christophe Robillard
3db2d44fc0 affiche un warning pour l'email qqsoit l'email 2019-12-03 14:06:11 +01:00
clemkeirua
9e44af70b5 minor typo in textareas 2019-12-03 10:13:16 +01:00
clemkeirua
233c93bb7c move p outside of label 2019-12-03 10:07:04 +01:00
clemkeirua
d712cc7a35 move ul outside of p 2019-12-03 10:07:04 +01:00
clemkeirua
9ae1a3c2d3 add missing alt 2019-12-03 10:07:04 +01:00
simon lehericey
4175aa0b28 GroupeInstructeur: do not use outdated email column 2019-12-02 14:52:01 +01:00
Paul Chavard
b845753a60 Fix admin creation
fix #4592
2019-11-29 20:14:35 +01:00
Paul Chavard
7b947feae4 Rename demarche archivée to demarche close 2019-11-28 15:07:16 +01:00
Paul Chavard
2cf415dc41 Simplify React components loader 2019-11-28 14:45:40 +01:00
Paul Chavard
c1c8ab7ac6 Disable transition from publiée to brouillon 2019-11-28 14:17:47 +01:00
Paul Chavard
3e334a3306 Drop test_started_at
# Conflicts:
#	spec/models/procedure_spec.rb
2019-11-28 14:17:47 +01:00
benjaminhenkel
09d0c8d8a4 Correction d'une petite faute 2019-11-27 16:13:17 +00:00
Pierre de La Morinerie
b9fd844633 dossiers: fix autosave not ignoring file inputs
The dossier autosave is supposed to ignore file inputs (which are
handled differently by ActiveStorage).

Fix a typo in the CSS selector.
2019-11-27 13:57:39 +00:00
simon lehericey
6657459f9c Fix add instructeur with empty mail
As select2 does not handle required attribute, we can only add server side logic
2019-11-27 14:39:16 +01:00
simon lehericey
71051441d6 only one h1 2019-11-27 12:59:08 +00:00
simon lehericey
38d433b53d Add some role 2019-11-27 12:59:08 +00:00
simon lehericey
07112f2e15 Remove alt on decorative image 2019-11-27 12:59:08 +00:00
simon lehericey
2f47495173 Use h1 tag for .hero-tagline 2019-11-27 12:59:08 +00:00
simon lehericey
9296e24452 Reduce marianne image to 65px wide as ie11 cannot resize svg 2019-11-27 12:59:08 +00:00
simon lehericey
d4f256b735 Use text instead of image for logo
- "it is good design practice to use actual text that is styled with CSS rather than image-based text presentation" (https://www.w3.org/WAI/tutorials/images/textual)

- mm markup que https://www.gov.uk/ et que https://www.w3.org/WAI/tutorials/images/decorative/#decorative-image-as-part-of-a-text-link
2019-11-27 12:59:08 +00:00
Paul Chavard
e9f993fe0c [GraphQL]: normalize date names in French 2019-11-27 12:23:00 +01:00
Pierre de La Morinerie
52051914aa editor: disable the "Add champ" button until the champ is saved
Otherwise some champs are created before the previous one has been
saved, and React complains that several champs have the same
`champ-undefined` key.

(Plus it made the tests flaky and unreliable.)
2019-11-27 11:58:46 +01:00
Pierre de La Morinerie
7ed649dfca editor: don't create a champ by default
Before the editor attempted to create a default champ as soon as the
list became empty.

This created many race conditions, which made the tests flaky.

Remove this behavior, and add an empty label instead.
2019-11-27 11:58:45 +01:00
Pierre de La Morinerie
f58f9f9950 dossiers: render a valid response after an autosave
This helps Firefox DevTools to mark the request as valid and completed
successfuly.
2019-11-27 10:37:33 +00:00
Pierre de La Morinerie
30b822b135 dossiers: don't trigger an autosave when an attachment is modified
The draft autosave should not be triggered when attaching a file
(as file inputs are handled separately).
2019-11-27 10:37:33 +00:00
Pierre de La Morinerie
c6eab70679 dossiers: autosave shouldn't send files being uploaded
When a file is being uploaded asynchronosely, hidden input fields
are created by DirectUpload to contain the result of the upload.

However, before the upload finishes, the value of these inputs is not
meaningful. Moreover, it makes the ActiveRecord signature invalid – thus
preventing drafts from being saved.

Exclude these fields from the auto-save.
2019-11-27 10:37:33 +00:00
Pierre de La Morinerie
64d96646a3 javascript: autosave with explicit cookies settings
Older browsers implemented a different default value for `window.fetch`
credentials: it was omitted unless explicitely set.

So we force the value for these older browsers:

- Firefox 39-60
- Chrome 42-67
- Safari 10.1-11.1.2

See https://github.com/github/fetch#sending-cookies
2019-11-27 10:37:33 +00:00
Pierre de La Morinerie
2309017727 javascript: add a window.fetch polyfill
This allows the autosave to work on browsers that don't support fetch:

- IE 11
- Edge < 14
- Safari < 11
2019-11-27 10:37:33 +00:00
maatinito
9de9a1fd71 Use time.zone functions instead of server time functions
(Time.zone.today vs Date.today)
2019-11-26 14:26:36 +01:00
maatinito
14bc2b99b9 auto-archive badly occurs in UTC time and not in local time (1 hour too late in France, 10 hours before in Tahiti ;-) 2019-11-25 14:39:42 +01:00
Pierre de La Morinerie
c2c332244e manager: fix Instructeur and Administrateur email
Use the email attribute on the User (rather than the deprecated email
column on Instructeur or Administrateur).

Fix #4565
2019-11-25 13:01:22 +01:00
clemkeirua
9503a363e5 4378 Ajout des PJ de la messagerie dans le zip des PJs du dossier 2019-11-25 10:36:32 +01:00
Pierre de La Morinerie
b78134c691 specs: make the routing feature test more robust
- Use human-readable form labels
- Always wait for the result of the previous action to be loaded before
  starting another action
2019-11-21 18:29:45 +01:00
simon lehericey
054181a16f Champ Repetition has no label, thus it's displayed as a section 2019-11-21 15:34:59 +01:00
simon lehericey
2162522814 ul should have li childs 2019-11-21 15:34:59 +01:00
simon lehericey
bc85e9b7ec Use aria-describedby to link notice and input again
https://www.w3.org/WAI/tutorials/forms/instructions/#using-aria-describedby
2019-11-21 15:34:59 +01:00
simon lehericey
84b125d272 p cannot be included in label
The main problem come from
%label{for: input_id}
  #{champ.libelle}
  %span.notice= string_to_html(champ.description)
%input

where string_to_html contains p tags

The proposed solution is
%label #{champ.libelle}
%p.notice
%input

It should be iso in the graphic sense.
2019-11-21 15:34:59 +01:00
simon lehericey
d5da7916e5 Placeholder not allowed in date input 2019-11-21 15:34:59 +01:00
simon lehericey
f45ede7f44 href should not contain space 2019-11-21 15:34:59 +01:00
clemkeirua
f2c69400aa add rescue_from to UserDeviseMailer 2019-11-21 14:59:30 +01:00
Pierre de La Morinerie
6de5c0c9d1 autosave: make requests time out
This avoids recent requests being stuck because an older request never
finished.
2019-11-21 14:00:06 +01:00
Pierre de La Morinerie
68f5aae99d autosave: add feature test 2019-11-21 14:00:06 +01:00
Pierre de La Morinerie
bff7892ba8 dossiers: autosave drafts 2019-11-21 14:00:06 +01:00
Paul Chavard
0c6705f7fd Drop old export service 2019-11-21 10:25:40 +01:00
clemkeirua
be7fde1103 fix UnknownFormat raised in Instructeurs::ProceduresController#download_export 2019-11-21 09:52:38 +01:00
Pierre de La Morinerie
74a9db6580 javascript: make utils resilient to missing elements 2019-11-20 17:36:09 +01:00
Christophe Robillard
b42f21264e permet le suivi auto après envoi instructeur
Close #4163
2019-11-20 16:41:30 +01:00
Pierre de La Morinerie
5f9a9d059e dossiers: render JSON if needed
When receiving a request that expects JSON, return a simple '200'.

This avoids the unecessary work of rendering all the HTML page (which
ultimately will not be used).
2019-11-20 11:30:27 +01:00
Pierre de La Morinerie
8b8a96abda dossiers: save draft by default (instead of submitting)
Make the default behavior of `update_brouillon` be to update the draft,
instead of submitting the dossier.

This makes all requests made to `update_brouillon` without specifying
an extra `submit_draft` parameter to just save the draft. It will make
autosaving the draft easier and safer.
2019-11-20 11:24:31 +01:00
Pierre de La Morinerie
03a7bc3d5a dossiers: give the edit form an unique id 2019-11-20 11:24:31 +01:00
Pierre de La Morinerie
b90cd9f28f styles: fix hover on dropdown items
More specifically, fix items in the Help dropdown displaying a pointer
cursor on the whole area – where only the links inside the item should
have the hover cursor.

Also, having a `cursor: pointer` rule applied only on hover state is
difficult to debug: better to apply it always, and let the browser
handle it.
2019-11-20 10:48:53 +01:00
simon lehericey
59d5cd7abc fix label > div by label > span 2019-11-19 15:14:06 +01:00
simon lehericey
45ff1fd697 Change span by div to fix Element p not allowed as child of element span 2019-11-19 15:14:06 +01:00
simon lehericey
4a5059ed34 Add alt='' to decorative image https://www.w3.org/WAI/tutorials/images/decorative/ 2019-11-19 15:14:06 +01:00
simon lehericey
0e6ffd0baa Fix table layout: tbody was wrapped in thead 2019-11-19 15:14:06 +01:00
simon lehericey
279696451e Fix html: Element div not allowed as child of element span 2019-11-19 15:14:06 +01:00
simon lehericey
59432594a0 Header: same outline for the search button 2019-11-19 15:14:06 +01:00
simon lehericey
9f6b9c5028 Make the help button accessible for keyboard 2019-11-19 15:14:06 +01:00
simon lehericey
0a3a47339c Add title to print button 2019-11-19 15:14:06 +01:00
simon lehericey
41445564b4 Remove unused .header-help div 2019-11-19 15:14:06 +01:00
simon lehericey
fa808c8010 Make login w3c compatible again 2019-11-19 15:14:06 +01:00
simon lehericey
dae7a3bfd0 [fix #4529] Log user email in manager space 2019-11-19 12:15:03 +01:00
Paul Chavard
e600aceccc [GraphQL]: add dossier state change mutations 2019-11-19 11:51:34 +01:00
simon lehericey
3217f18a0b Simple wording 2019-11-18 17:08:51 +01:00
simon lehericey
874439580b Pluralize some texts 2019-11-18 17:08:51 +01:00
simon lehericey
67495e9662 Add person icon to table 2019-11-18 17:08:51 +01:00
simon lehericey
9ca026a630 Use a select2 box for looking to instructeurs 2019-11-18 17:08:51 +01:00
benjaminhenkel
2f6b1fa302 Maj message quand messagerie désactivée 2019-11-18 14:28:05 +01:00
simon lehericey
efd35a3de7 Accessibility: outline links to ease keyboard navigation 2019-11-14 09:50:04 +01:00
Paul Chavard
ba03dbf8dd [GraphQL] Add dossierEnvoyerMessage mutation 2019-11-13 19:54:27 +01:00
Paul Chavard
3db741b6b6 [GraphQL]: add ValidationErrorType 2019-11-13 19:54:27 +01:00
Paul Chavard
9ce81f665b [GraphQL]: fix geo_areas docs 2019-11-13 15:53:56 +01:00
Paul Chavard
a23e84bc57 [GraphQL]: more docs 2019-11-13 15:53:56 +01:00
Paul Chavard
ea6667ff9f [GraphQL]: démarche and dossier number should be a number 2019-11-13 15:53:56 +01:00
Paul Chavard
556ec351f3 Drop email on instructeurs 2019-11-13 15:38:44 +01:00
Paul Chavard
2874b31c44 Bump activestorage-openstack 2019-11-13 11:59:43 +01:00
Pierre de La Morinerie
88373ddf20 individual: raise when the individual object cannot be created
Currently, a number of dossiers in production are for procedures for
individuals, but don't have a `individual` object.

This is probably because creating the Individual from France Connect
infos fails – but fails quietly, and nullify the relationship.

As a first step, we now raise an exception when the creation from FC
infos fails. We will then identify the issue, and see if we can fix it –
or if we should be resilient to this kind of issues.
2019-11-12 18:29:37 +01:00
Paul Chavard
ac092089ff Remove service.siret from manager 2019-11-12 17:39:36 +01:00
Paul Chavard
fa741c9bae [GraphQL]: do not return dossiers brouillons 2019-11-07 22:07:42 +01:00
Paul Chavard
990c867c2e [GraphQL] Add more filters to dossiers 2019-11-07 22:07:42 +01:00
Paul Chavard
5bc8b5fe12 Implement ActiveStorage::FileNotFoundError 2019-11-07 17:20:09 +01:00
Pierre de La Morinerie
8a7f4ec769 editor: reduce scroll duration when inserting a new champ
The previous default was 1s, which felt slooooow.
2019-11-07 15:49:15 +01:00
Pierre de La Morinerie
fc8a0d46ff editor: insert new champs after the last fully visible champ
Before, when the "Add new champ" button was clicked, the new champ
was inserted after the **first** fully visible champ.

That was most of the time unexpected. The correct behavior would be to
insert the new champ after the **last** fully visible champ.

That's what this commit does. Now the "Add new champ" behavior feels
much less confusing.
2019-11-07 15:19:11 +01:00
Paul Chavard
f22b39b7c5 Handle non unique champ repetable labels
fix #4466
2019-11-07 14:27:52 +01:00
Paul Chavard
2a61ed5b1c Export etablissement information in csv
fix #4440
2019-11-07 14:27:52 +01:00
Paul Chavard
4231b81727 [GraphQL] Add create direct upload mutation 2019-11-07 12:48:51 +01:00
simon lehericey
9469734f29 Follow flipper name convention to appears on manager admin page 2019-11-07 11:09:05 +01:00
clemkeirua
75923f7cb2 add explanation about rescue_from in application_mailer 2019-11-07 10:13:11 +01:00
clemkeirua
7f76ab6671 disable retry sending a mail with an invalid email adress 2019-11-07 10:11:48 +01:00
simon lehericey
1a1bd306b1 Add main and headers tags in layout (RGAA 9.2.1) 2019-11-06 17:18:08 +01:00
simon lehericey
9c7feae0b2 RGAA fix : 9.1.2 Dans chaque page Web, la hiérarchie entre les titres (balises h ou balise possédant un role ARIA "heading" associé à une propriété aria-level) est-elle pertinente ? 2019-11-06 17:01:07 +01:00
simon lehericey
b6765a03ae Footer: remove top list and make each column a list as service-public.fr
(note: not so sure because of https://www.service-public.fr/P10025)
2019-11-06 17:01:07 +01:00
simon lehericey
6ec2b084c7 h3 -> p 2019-11-06 17:01:07 +01:00
simon lehericey
16814af474 Make (part of) the html valid again
simple_format always wraps its content so the better idea I have got was to use a span to avoid p in p.
2019-11-06 17:01:07 +01:00
simon lehericey
8efac29eba Better structure footer-site-links in list
it follows service-public.fr structure

- remove extraneous footer-link class
- remove extraneous space with `>` haml weird stuff
- homogenize json-style hash
- merge classes on ul
- use pseudo element for eye candy
2019-11-06 17:01:07 +01:00
simon lehericey
79968f12fb RGAA A : h4 => span in top dropdown item to respect title hierarchy (9.1.2) 2019-11-06 17:01:07 +01:00
simon lehericey
daeeeda583 RGAA: ajout de title aux links 2019-11-06 17:01:07 +01:00
Chaïb Martinez
a00ce94eea RGAA A : ajout de l'attribut alt pour les images
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-11-06 17:01:07 +01:00
Chaïb Martinez
47b177fd31 RGAA A : L'attribut alt est absent pour le logo des demarches
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-11-06 16:50:10 +01:00
clemkeirua
04c13190c3 introduce smtp_key in order to use 2 different sendinblue keys
client_key is exposed to the client via gon, so if we use it for sending email too we are exposing a key so anybody could send an email.
The current client_key has a different level of right and can't send emails so it's ok to expose it.
2019-11-06 13:34:36 +01:00
clemkeirua
959aacdea5 Sendinblue email balancing using proper credentials
This reverts commit c61981e795.
2019-11-06 13:34:36 +01:00
Paul Chavard
0562e2728f Fix type_de_champ validation error 2019-11-06 12:54:07 +01:00
Paul Chavard
ee62d6fca4 Fix move type de champs 2019-11-06 12:54:07 +01:00
Paul Chavard
a708b071dd Do not crash with champ repetable with no children 2019-11-06 12:54:07 +01:00
Paul Chavard
f5c80f211d Guard for missing attestation on dossier 2019-11-06 12:54:07 +01:00
Paul Chavard
95f98fe605 API v1 correctly handle resultats_par_page 2019-11-06 12:54:07 +01:00
Pierre de La Morinerie
8df91df9fa assigns: strip and lowercase the search filter 2019-11-06 12:16:30 +01:00
Pierre de La Morinerie
0eeac59ecd assigns: fix search among the unassigned instructeurs
This was broken since moving the email out of the Instructeur column.
2019-11-06 12:16:30 +01:00
Paul Chavard
08b1a0f90d [API Carto]: use typhoeus and correctly handle errors 2019-11-06 11:10:56 +01:00
simon lehericey
9f5169eb7d Remove unused Administrateur.reset_password method 2019-11-05 14:10:39 +01:00
simon lehericey
395aba8bbc Remove administrateur active notion 2019-11-05 14:10:39 +01:00
simon lehericey
5643e671a0 Code use user.active? 2019-11-05 14:10:39 +01:00
simon lehericey
b193dd1465 User get the active notion 2019-11-05 14:10:39 +01:00
Pierre de La Morinerie
c37bfc7349 instructeurs: fix email casing in invitation
When inviting an instructeur, the code first looked up an existing
instructeur using the normalized (downcased) email address–but then
tried to promote it using the non-normalized version, which failed.

This fixes the issue by always using the normalized email.
2019-11-05 10:54:58 +01:00
simon lehericey
e3d7688e66 [fix #4473] Invite_administrateur!: do not reset password if the user is active 2019-11-05 10:29:39 +01:00
simon lehericey
243bc2887f Invite_administrateur!: remove unused return 2019-11-05 10:29:39 +01:00
Pierre de La Morinerie
f63cd86811 webhook: fix a crash when the Helpscout customer is unknown 2019-11-04 18:36:52 +01:00
clemkeirua
c61981e795 Revert "Sendinblue email balancing using interceptor"
This reverts commit b2135b6576.
2019-11-04 15:55:08 +01:00
Chaïb Martinez
b2135b6576 Sendinblue email balancing using interceptor
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-11-04 15:30:44 +01:00
Pierre de La Morinerie
2e8d365b93 instructeurs: disable the email column 2019-11-04 10:44:24 +01:00
Pierre de La Morinerie
f8358b3ae9 instructeurs: create without providing the email 2019-11-04 10:44:24 +01:00
Pierre de La Morinerie
f131dbb80d instructeurs: make the create form not using email directly
Before the form attempted to read an email value from the Instructeur
model, and failed (because the empty Instructeur had no user yet).

We could let `Instructeur#email` return `nil` if there is no User –
but as a created Instructeur is always supposed to have a User, this
seems like a nice safeguard to keep.

So instead this commit rewrites the create form, which now doesn’t
depend on an Instructeur model. Seems easy enough for now.
2019-11-04 10:44:24 +01:00
Pierre de La Morinerie
d78d206544 instructeurs: fix expert creation not to use Instructeur.email
It kind of worked until now, because the email field is disabled, and
thus never accessed.

But better make it clean, by accessing an object (User) where the email
field actually exists.
2019-11-04 10:44:24 +01:00
Pierre de La Morinerie
8e6930d257 instructeurs: fix ProcedurePresentation to use instructeur.user.email
The `joins` are declared explicitely in order to associate a predictable
name to the joined table.

Otherwise, when the query is joined with `:users`, ActiveRecord will
alias the join automatically  to solve the conflict. Unfortunately, the
automatic resolution means that the table name becomes unpredictable,
and thus unsuitable to perform queries on.
2019-11-04 10:44:24 +01:00
Pierre de La Morinerie
8b8213c301 instructeurs: always eager load the user relationship
Now that `Instructeur.email` is merely an alias to `instructeur.user.email`,
and we changed every occurence of `instructeurs.pluck(:email)` to
`instructeurs.map(&:email)`, the new version using `map` may cause N+1 queries
if the users have not been preloaded.

It makes sense to always preload the user when fetching an Instructeur:

- Instructeur and User have a strongly coupled relationship
- It avoids N+1 queries everywhere in the app

Of course fetching an instructeur without needing its user will now do an
unecessary fetch of the associated user. But it seems better than leaving
a risk of N+1 queries in many places.
2019-11-04 10:44:24 +01:00
Pierre de La Morinerie
a462edb9bc instructeurs: alias instructeur.email
This also means we need to replace instances of `pluck` on the email
column.
2019-11-04 10:44:24 +01:00
Pierre de La Morinerie
cd478b489e instructeurs: replace calls to Instructeur.find_by(email: …) 2019-11-04 10:44:23 +01:00
Paul Chavard
839b0d7e6d Add Entreprise raison sociale to dossier export
fix #4422
2019-10-31 17:11:46 +01:00
Paul Chavard
18e91e7ca3 Extend old export format till mid-November 2019-10-31 17:11:46 +01:00
Pierre de La Morinerie
627d30191f manager: allow hidden procedures to be searched
The Manager::DossiersController already allow hidden dossiers to be
searched and displayed. Give the same behavior to Procedures.
2019-10-31 17:03:02 +01:00
Pierre de La Morinerie
076e3a9294 procedure: improve layout of the "webhook" field 2019-10-31 16:04:47 +01:00
Pierre de La Morinerie
817662f7d9 procedure: move description to views/shared
Now that the description is used not only in the layout, but also in the
procedure form, better to make it an official shared partial.
2019-10-31 10:27:19 +01:00
Pierre de La Morinerie
2e0ef84941 images: rename 'attachment' icon to 'attached'
This avoids conflicts with the 'attachment' component.
2019-10-31 10:27:19 +01:00
Pierre de La Morinerie
aea93779cc procedure: use the attachment view to upload files 2019-10-31 10:27:19 +01:00
Pierre de La Morinerie
1c61f2de58 views: refactor the attachment/edit view
Make it more reusable, by:

- Renaming `attachment/update` to `attachment/edit`
- Refactoring the CSS styles into their own stylesheet
- Allow to specify the 'accept' option
2019-10-31 10:27:19 +01:00
Pierre de La Morinerie
5be83bd01e procedure: make the layout more similar to the mockup 2019-10-31 10:27:19 +01:00
Pierre de La Morinerie
02384b078c procedure: remove UI to edit the european flag
This is an option we want to deprecate, and remove entirely in the
future.

Admins can still add the EU flag manually to their uploaded logo.
2019-10-31 10:27:19 +01:00
Pierre de La Morinerie
112b44bdea procedure: align radio buttons vertically
- Remove the unused `.radios.vertical`
- Add a `.editable-champ-radio.vertical` variant for vertical radios
- Add an example of vertical radios to the patron
- Use vertical radios to display the procedure options
2019-10-31 10:27:19 +01:00
Nicolas Bouilleaud
72b7ff221c move procedure to new design 2019-10-31 10:27:19 +01:00
simon lehericey
652e95d0c5 Add link from instructeur procedure view 2019-10-30 14:27:51 +01:00
simon lehericey
477f7c9837 Remove instructeur 2019-10-30 14:27:51 +01:00
simon lehericey
79b808470c Add instructeur 2019-10-30 14:27:51 +01:00
simon lehericey
94081a3997 Show Groupe Instructeur 2019-10-30 14:27:51 +01:00
simon lehericey
4491dca19a Index Groupe Instructeur 2019-10-30 14:27:51 +01:00
simon lehericey
def9c67c56 Clean html 2019-10-30 14:27:51 +01:00
Paul Chavard
6a3d725134 Revert "Revert "Decommission ActiveStorage proxy service and use openstack service""
This reverts commit 71227be37f.
2019-10-30 12:11:45 +01:00
simon lehericey
71227be37f Revert "Decommission ActiveStorage proxy service and use openstack service"
This reverts commit 0ff6c793ae.
2019-10-29 10:30:40 +01:00
simon lehericey
4febf1851f notifications_for_procedure is now based on instructeur.groupe_instructeurs 2019-10-25 09:42:17 +02:00
simon lehericey
d411bfddc8 We can send a dossier to instructeurs from the same groupe 2019-10-25 09:42:17 +02:00
simon lehericey
e290fc3674 No need to update column as the sign_up process activates the user 2019-10-24 18:32:48 +02:00
simon lehericey
8ae592fe25 [fix #4361] administrateur active 2019-10-24 18:32:48 +02:00
Pierre de La Morinerie
dc1f3b4220 champs: add a "plus" icon to the "Add row" button 2019-10-24 16:52:29 +02:00
Pierre de La Morinerie
906f0fc468 champs: fix margin of "Add row" button in the Preview 2019-10-24 16:52:29 +02:00
Pierre de La Morinerie
35e97ac617 patron: add content to the repetition champ 2019-10-24 16:52:29 +02:00
Pierre de La Morinerie
8f4ead96b0 patron: make the labels more readable 2019-10-24 16:52:29 +02:00
clemkeirua
d9e993571c add a warning during export generation 2019-10-24 16:27:10 +02:00
clemkeirua
cb5f922bb6 cleanup the queue flag during cleanup job 2019-10-24 16:27:10 +02:00
clemkeirua
da590cc73a sequence async file generation so that the queue flag is cleared 2019-10-24 16:27:10 +02:00
Pierre de La Morinerie
bb024d1850 javascript: display a localized message on upload errors 2019-10-24 16:12:56 +02:00