Commit graph

5031 commits

Author SHA1 Message Date
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
Pierre de La Morinerie
a3057afc22 javascript: report upload errors to Sentry 2019-10-24 16:12:56 +02:00
Paul Chavard
a192924ee5 Fix infinit rerendering of TypeDeChamp component
fix #4428
2019-10-24 13:31:54 +02:00
simon lehericey
90ae4181bf fix dossier_linked_path in routed procedure 2019-10-23 21:47:20 +02:00
simon lehericey
fbe93e0fce Fix pluralization in search page 2019-10-23 21:47:20 +02:00
simon lehericey
35bba62297 Update routing critéria name 2019-10-23 21:47:20 +02:00
simon lehericey
d136d023cd Add feature flipped link in admin nav bar 2019-10-23 21:47:20 +02:00
simon lehericey
a5ffe9f54b Remove instructeur from the group 2019-10-23 21:47:20 +02:00
simon lehericey
a6deafd885 Add instructeurs to groupe 2019-10-23 21:47:20 +02:00
simon lehericey
3dd3af8482 Groupe instructeur update 2019-10-23 21:47:20 +02:00
simon lehericey
9a6336f508 Groupe instructeur create 2019-10-23 21:47:20 +02:00
simon lehericey
733e83cc54 Groupe instructeur show 2019-10-23 21:47:20 +02:00
simon lehericey
2749c00ce3 Groupe instructeur index 2019-10-23 21:47:20 +02:00
simon lehericey
6a974663b0 An instructeur owns procedure with groupe instructeur mechanisme 2019-10-23 21:47:20 +02:00
simon lehericey
1fa149575c Add constraints to GroupeInstructeur 2019-10-23 21:47:20 +02:00
simon lehericey
4b058001aa Fix active link in left panel 2019-10-23 21:47:20 +02:00
Paul Chavard
0ff6c793ae Decommission ActiveStorage proxy service and use openstack service
We are making these changes in order to always use DS_Proxy. Before this change DS_Proxy was not used to write files when ActiveStorage was used directly and not through “direct upload”.
2019-10-23 17:58:00 +02:00
Paul Chavard
86b271997b Invite experts to linked dossiers
closes #3669
2019-10-23 13:10:09 +02:00
Pierre de La Morinerie
d542bca8de admin: relabel the number champ
Avoid two type de champs having the same label.

Soon this champ will even be deprecated and disappear.

Ref #4414
2019-10-22 15:59:43 +02:00
clemkeirua
ec78c99a2a ajout d'un job de suppression des vieux exports 2019-10-22 15:23:49 +02:00
clemkeirua
7290214624 uniformize export wording in UI 2019-10-22 12:15:49 +02:00
clemkeirua
4a6893d88b migrate sendinblue API to v3 2019-10-22 10:06:53 +02:00
clemkeirua
87741f4b49 introduce constant for exports 2019-10-22 09:51:14 +02:00
clemkeirua
cdab08b198 UI work 2019-10-22 09:51:14 +02:00
clemkeirua
43424e4f4e merge with the work of paul, using 3 links 2019-10-22 09:51:14 +02:00
clemkeirua
70ea5e167e procedure download is performed through a controller in order not to leak the URL 2019-10-22 09:50:58 +02:00
clemkeirua
1af2b63ed1 initial implementation of async export 2019-10-22 09:50:58 +02:00
simon lehericey
18de25fac7 Display the dossier.groupe_instructeur.label on various screens 2019-10-17 15:48:14 +02:00
simon lehericey
b7434c3132 User can choose its gi 2019-10-17 15:48:14 +02:00
simon lehericey
6b8cefa551 Procedure: defaut_groupe_instructeur is the first group
Especially useful when the defaut groupe is renamed ...
2019-10-17 15:48:14 +02:00
simon lehericey
5897464224 Build Dossier champ only once 2019-10-17 15:48:14 +02:00
Pierre de La Morinerie
db0fede521 views: improve the state button
- Turn the "accepted" infos into standard dropdown sections
- Display the justificatif even if there is no motivation
2019-10-15 12:48:14 +02:00
Pierre de La Morinerie
dd57953b76 views: refactor the state button
Now that all states have a dropdown, we can simplify the code.

This also brings the "Repasser en instruction" action for all states
(including when no attestation or motivation is present).
2019-10-15 12:48:14 +02:00
Pierre de La Morinerie
07f75ff20e views: fix missing attestation link
- Fix the missing link to see attestations (see #4400)
- Fix the "Repasser en instruction" wording being confusing for
  accepted state
- Add lot of tests
2019-10-15 12:48:14 +02:00
Pierre de La Morinerie
0e5f66c5ba views: make the "Voir l'attestation" UI simpler
Instead of adding a button, just turn the "attestation" text into a link
2019-10-15 12:41:37 +02:00
Pierre de La Morinerie
0064c2c610 views: tell an attestation will be sent only if it is true
Previously the message stating "an attestation will be sent" was
displayed even when the attestation was disabled.
2019-10-15 12:41:37 +02:00
Pierre de La Morinerie
e0571a8ae3 avis: improve layout and wording 2019-10-14 16:03:08 +02:00
Pierre de La Morinerie
c2e82e4145 champ_policy: allow instructeurs to access private annotations
Fix #4388
2019-10-08 14:34:12 +02:00
Pierre de La Morinerie
a20b6b73a2 policies: rename "Scope" to "ApplicationScope"
For clarity.
2019-10-08 14:28:26 +02:00
simon lehericey
785b8fd78f Remove simple form from mail_templates 2019-10-08 10:57:35 +02:00
simon lehericey
0c15326df6 User: inactive user have never signed_in 2019-10-08 10:09:16 +02:00
simon lehericey
3e0f1b9c66 User: eager load instructeur and administrateur to remove 2 db requests per http request 2019-10-08 09:53:40 +02:00
simon lehericey
5143d341ec Admin: 1 query for crips 2019-10-08 09:53:40 +02:00
Paul Chavard
e7ed408e08 Auto-link valeur des champs
closes #2865
2019-10-07 21:20:24 +02:00
clemkeirua
053cc5cfc5 [fix #4058] instructeur peut passer accepte → instruction 2019-10-07 15:17:33 +02:00
clemkeirua
d3063c0b63 remove download_as_zip feature flag 2019-10-03 10:48:24 +02:00
clemkeirua
d8bc73b972 fix wording 2019-10-01 15:32:03 +02:00
clemkeirua
49cc3d4ba5 merci: ne pas afficher qu'un dossier peut être modifié si pas possible 2019-10-01 15:32:03 +02:00
Chaïb Martinez
d71ab9a7a8 Add "continuer" button 👉
[fix #4369]

Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-10-01 10:26:42 +02:00
Chaïb Martinez
19590d9814 add "sortir" link
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-10-01 10:16:02 +02:00
Chaïb Martinez
4225951a1d minor fix
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-10-01 10:16:02 +02:00
Chaïb Martinez
9b98bcd176 remove duplicate link
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-10-01 10:16:02 +02:00
Chaïb Martinez
8b895df34c Update "nouveauté" link
Signed-off-by: Chaïb Martinez <chaibax@gmail.com>
2019-10-01 10:16:01 +02:00
simon lehericey
451387d32d Dossier: add conditions on joins for with_notifications scope 2019-09-26 15:46:20 +02:00
Paul Chavard
3f36153807 [GraphQL] Add groupe_instructeurs to demarche 2019-09-26 11:25:14 +02:00
Nicolas Bouilleaud
03c950ea97 Move followed_dossiers_with_notifications to a Dossier scope
Instead of instructeur.followed_dossiers_with_notifications, we can now write instructeur.followed_dossiers.with_notifications.

Yay composition!
2019-09-25 14:10:00 +02:00
Nicolas Bouilleaud
1505d45be1 Optimize notifications queries for badges by using exists?, not present?
`ActiveRecord::Relation.exists?` yields a SQL EXISTS query, while `present?` is a method of Enumerable, which needs the actual result array to be queried.
2019-09-25 14:10:00 +02:00
Nicolas Bouilleaud
a4166d3c57 Refactor Instructeur.notifications_* methods
- rename `dossiers_id_with_notifications` to `followed_dossiers_with_notifications`,
- rename `notifications_per_procedure` to `procedures_with_notifications`,
- return an ActiveRecord::Relation instead of the result of the query, so that the call place can compose it,
- `merge` with the wanted Dossier scope in the call places, don’t bother passing it as a parameter,
- use the “state” (now “scope”) parameter as a scope method that can be just applied on `Dossier`.
2019-09-25 14:10:00 +02:00
Nicolas Bouilleaud
650e973d0a Fix plural in entreprise(s).data.gouv.fr 2019-09-24 16:20:34 +02:00
Vini75
8c977dca09
Adjust link to entreprisedatagouv 2019-09-24 16:14:31 +02:00
Vini75
9968eb69c0
Adjust link to entreprisedatagouv 2019-09-24 16:14:23 +02:00
Vini75
7f1b34926f
link to entreprisedatagouv.fr on user 2019-09-24 15:55:06 +02:00
Vini75
606c084914
Add link to entreprises datagouv.fr 2019-09-24 15:49:25 +02:00
Paul Chavard
da4523612a Update graphql schema 2019-09-24 10:47:21 +02:00
Paul Chavard
5a7e415474 Put graphql behind a feature flag 2019-09-24 10:47:21 +02:00
Paul Chavard
eb7aba18e6 Add dossier champs and annotations types 2019-09-24 10:47:21 +02:00
Paul Chavard
1c10718c11 Add messages and avis types 2019-09-24 10:47:21 +02:00
Paul Chavard
8928eaba11 Add demarche champs and annotations types 2019-09-24 10:47:21 +02:00
Paul Chavard
bf6fbbf2b6 Add graphql end point 2019-09-24 10:47:21 +02:00
Paul Chavard
5a7eb734ff Dump graphql schema for reference 2019-09-24 10:47:21 +02:00
Paul Chavard
ba683a107c Add authorizations to root queries 2019-09-24 10:47:21 +02:00
Paul Chavard
a7fc4df09b Resolve models and types 2019-09-24 10:47:21 +02:00
Paul Chavard
e06051bc96 Add graphql root types 2019-09-24 10:47:21 +02:00
Paul Chavard
52e84f2ffe Add graphql object types 2019-09-24 10:47:21 +02:00
Paul Chavard
9bb52dfb8c Add graphql base types 2019-09-24 10:47:21 +02:00
Paul Chavard
d2fdaacb5d Add Api::V2::Schema 2019-09-24 10:47:21 +02:00
Paul Chavard
2e854f2ac3 Add graph loading scopes to Dossier and Procedure 2019-09-24 10:47:21 +02:00
Nicolas Bouilleaud
e962fb26e0 Allow sorting Dossiers by “has notifications” in traites
fixes #4351
2019-09-24 09:37:42 +02:00
Nicolas Bouilleaud
00b1aa0ea1 Disable turbolinks for links to Stats pages
This is a workaround for #350
2019-09-23 14:25:04 +02:00
Nicolas Bouilleaud
f74fde3f80 Avoid sending notification emails about archived dossiers 2019-09-20 11:06:33 +02:00
Nicolas Bouilleaud
a2131d0fcc Don’t unfollow when archiving
It was slightly broken in two ways:
- it doesn’t make other instructeurs unfollow the dossier
- if the dossier is unarchived, instructeurs don’t refollow automatically.
2019-09-20 11:06:33 +02:00
Nicolas Bouilleaud
769621de46 Explicitly pass the “state” param in notifications_*_procedure methods 2019-09-20 11:06:33 +02:00
Nicolas Bouilleaud
8a06c01f13 Reorder methods in instructeur.rb
Move token stuff together, out of notification-related stuff.
2019-09-20 10:48:08 +02:00
Nicolas Bouilleaud
4f0871dab0 Use a single query in dossiers_id_with_notifications (instead of four)
This is used in /procedures#show and /procedures#index, to display badges on the “suivis” and “traités” tabs of each procedure. Rails cache helps when it’s the exact same query, but it’s not the case for different tabs.

I’m not certain it’ll be a visible performance improvement but it shouldn’t hurt.
2019-09-20 09:45:59 +02:00
simon lehericey
faddbc23ef Eager load procedure: :groupe_instructeurs for export 2019-09-19 12:30:12 +02:00
simon lehericey
a2f82ab8be Add groupe_instructeur_label to export v2 2019-09-19 12:30:12 +02:00
simon lehericey
f577484aa2 Add groupe_instructeur_label to export v1 2019-09-19 12:30:12 +02:00
simon lehericey
3bc20bdb06 Procedure.routee? 2019-09-19 12:30:12 +02:00
simon lehericey
8660d4af30 Instructeur: only export its dossiers 2019-09-19 12:24:40 +02:00
Paul Chavard
f4d4a896a0
Merge pull request #4342 from tchak/revert-proxy
Revert "Upload through proxy"
2019-09-19 09:14:32 +02:00
Paul Chavard
6533ec420b Revert "Upload through proxy"
This reverts commit 91815ad709.
2019-09-19 09:13:41 +02:00
simon lehericey
e2acb0a946 ProcedurePresentation: can use groupe instructeur 2019-09-18 15:51:02 +02:00
simon lehericey
f5bbc9e2f9 InstructeurProcedureShow: show dossier for all the gi involved 2019-09-18 15:51:02 +02:00