Commit graph

432 commits

Author SHA1 Message Date
Pierre de La Morinerie
ad4a89f0f6 api_entreprise: raise on network error 2019-05-02 11:24:22 +02:00
simon lehericey
52e6632175 Add IPService 2019-04-03 15:21:19 +02:00
Frederic Merizen
c5f8aa2e0d [#2180] Fix updated_at for migration PJ champs 2019-03-28 17:55:16 +01:00
Frederic Merizen
4d021f1d85 [#2180] Handle additionnal wrapping layer in production 2019-03-28 16:05:09 +01:00
Frederic Merizen
9aebb76e77 [#2180] Avoid sending spurious notifications to instructeurs 2019-03-27 17:36:13 +01:00
Frederic Merizen
7d316b8369 [#2180] High-level PJ to champ PJ migration service 2019-03-27 17:36:13 +01:00
Frederic Merizen
e24242e4b2 [#2180] Low-level Carrierwave to ActiveStorage migration 2019-03-27 17:36:13 +01:00
Frederic Merizen
21dbe44e07 [#2180] Fix ordering of piece jointe champs 2019-03-27 17:36:13 +01:00
Paul Chavard
69a51e3296 Save SIRET data on search 2019-03-19 16:22:42 +01:00
simon lehericey
6607de4827 Notification: add service to send notifications 2019-03-18 16:37:51 +01:00
Paul Chavard
2e5647a926 Adapte AdministrateurUsageStatisticsService for multiadmin 2019-03-12 11:59:01 +01:00
Frederic Merizen
6b0832047b Service that computes administrator statistics and sends them to SendinBlue 2019-03-08 16:33:28 +01:00
gregoirenovel
27460b55a3 Use the new merge with multiple arguments 2019-02-25 16:57:51 +01:00
Mathieu Magnin
f6714cd9a3 If ClamavService fails then raise an error 2019-02-05 17:58:41 +01:00
Mathieu Magnin
f67fdae542 Add logs to AntivirusJob 2019-02-05 12:50:27 +01:00
Pierre de La Morinerie
437f73b4ce search: exclude more special characters 2019-01-22 17:16:49 +01:00
Frederic Merizen
bf23abdfe3 [#2180] Expose migrated PJs as legacy PJs in dossier API 2019-01-17 17:47:08 +01:00
Frederic Merizen
082255b489 [#2180] Expose migrated types PJ as legacy types PJ in procedure API 2019-01-17 17:46:56 +01:00
Frederic Merizen
8cb509d192 [#2180] Keep information that this type de champ was cloned from a PJ 2019-01-17 17:40:40 +01:00
Frederic Merizen
651fd6149b [#2180] When cloning a procedure, convert types de PJ to types de champ PJ 2019-01-17 17:40:40 +01:00
Paul Chavard
6036d7906f Enable champ_siret for all 2019-01-17 15:17:48 +01:00
Pierre de La Morinerie
4fd9fa6610 sign_in: extract the procedure context to a ProcedureContextConcern 2019-01-17 11:07:09 +01:00
gregoirenovel
083dfb4eaa Improve ProcedureExportService 2019-01-08 12:32:27 +01:00
gregoirenovel
4b4eb6d53e Simplify code 2019-01-08 12:32:26 +01:00
gregoirenovel
16bccb2386 Remove the useless #value_for_export method 2019-01-08 12:32:26 +01:00
Pierre de La Morinerie
dbbe96d333 signature: replace RbNaCl by ActiveSupport::MessageVerifier 2019-01-03 17:48:53 +01:00
gregoirenovel
9466442aff Remove the TypeDeChamp decorators 2019-01-03 12:08:25 +01:00
gregoirenovel
0c8b228fbf Enable the Lint/UselessAssignment cop 2019-01-03 10:53:50 +01:00
gregoirenovel
baf7977786 Enable the Lint/StringConversionInInterpolation cop 2019-01-03 10:53:50 +01:00
gregoirenovel
8b0b8162f0 Enable the Layout/SpaceAfterComma cop 2019-01-03 10:53:50 +01:00
Paul Chavard
eb9edc1cee Order types de champ in scope 2018-12-20 14:14:15 +01:00
Paul Chavard
5d1c24f3d8 Add type de champ repetition models (with row) 2018-12-19 15:31:11 +01:00
gregoirenovel
df7e0a9881 Remove dead code 2018-12-19 14:59:15 +01:00
gregoirenovel
e69310fe07 ModuleApiCartoService → ApiCartoService 2018-12-19 10:29:11 +01:00
gregoirenovel
3ce3d203d4 Simplify some code 2018-12-18 22:49:27 +01:00
gregoirenovel
81ee1c2961 Use a method instead of a comparison 2018-12-18 22:18:38 +01:00
gregoirenovel
026fd1aaa2 Use parentheses 2018-12-18 22:18:38 +01:00
Frederic Merizen
57a136c861 Make champ PJ generally available 2018-12-18 11:11:23 +01:00
pedong
de5de75869 [fix #2985] del champ_linked_dropdown in feature 2018-12-10 16:47:22 +01:00
simon lehericey
5a87fad02e [fix #3154] order export 2018-12-10 16:41:37 +01:00
Paul Chavard
35494df78e Procedure export dossiers with champs siret 2018-12-05 17:09:39 +01:00
Paul Chavard
a08f170dbd Assign users and gestionnaires to commentaires
fix #2052
2018-12-05 13:40:57 +01:00
Paul Chavard
35d2bc36fc cleanup selection_utilisateur geo_json 2018-11-29 17:10:14 +01:00
Paul Chavard
37a7e26fc3 Remove unused users/carte_controller 2018-11-27 16:11:25 +01:00
gregoirenovel
dffd132564 Remove a useless file 2018-11-22 01:51:55 +01:00
Paul Chavard
2462e42b53 Stop using legacy api carto after migration 2018-11-20 10:53:14 +01:00
Paul Chavard
1c87eda6e1 Move types_de_champ helper to service 2018-11-07 11:36:10 +01:00
Paul Chavard
2d647f9fa7 Move types_de_champ facade to service 2018-11-07 11:36:10 +01:00
Paul Chavard
5a8a4b393f Add RPG carte source 2018-10-23 18:13:44 +02:00
Paul Chavard
7ffbe417f9 Add ApiGeo RPG adapter 2018-10-23 18:13:44 +02:00
Paul Chavard
4249f8ae25 Add carte type de champ options 2018-10-23 09:35:25 +02:00
Frederic Merizen
447e54fe45 [Fix #2874] Allow archived dossiers to appear in search results 2018-10-18 16:05:19 +02:00
gregoirenovel
5db4de6c53 QuartiersPrioritaires::Adapter → QuartiersPrioritairesAdapter 2018-10-15 23:31:23 +02:00
gregoirenovel
918a91a985 ApiCarto::Cadastre::Adapter → ApiCarto::CadastreAdapter 2018-10-15 23:31:23 +02:00
gregoirenovel
d726fbf698 CARTO::SGMAP → ApiCarto 2018-10-15 20:55:46 +02:00
gregoirenovel
34ac68b27f 2018-10-15 17:12:34 +02:00
gregoirenovel
22beb41240 Unify #generate_qp with #generate_cadastre 2018-10-15 16:45:30 +02:00
gregoirenovel
2ed4c1da1c Use round brackets 2018-10-15 16:45:30 +02:00
Frederic Merizen
462c818025 [#2750] Move fields from DossierFieldService to ProcedurePresentation 2018-10-10 09:07:57 +02:00
Frederic Merizen
9fa7a6fd0e [#2750] Move get_value to ProcedurePresentation 2018-10-10 09:07:57 +02:00
Frederic Merizen
fc157c3e4c [#2750] Move sorted_ids to ProcedurePresentation 2018-10-10 09:07:57 +02:00
Frederic Merizen
2e9dafb4c3 [#2750] Move filtered_ids to ProcedurePresentation 2018-10-10 09:07:57 +02:00
Frederic Merizen
eafd0e8348 Evite de cacher la whitelist trop longtemps 2018-10-04 18:09:39 +02:00
gregoirenovel
12f0c99b5a Remove FC fields from instructeur table customisation 2018-10-04 13:54:07 +02:00
gregoirenovel
d9d4f6fe20 Enable Style/SymbolProc 2018-10-03 12:15:48 +02:00
gregoirenovel
ed240cb4d3 Enable Style/UnneededInterpolation 2018-10-03 12:03:21 +02:00
gregoirenovel
6eeba14885 Enable Style/WordArray 2018-10-03 12:03:21 +02:00
Frederic Merizen
103f466cb8 [Fix #2579] Protect get_value against method name injection 2018-10-03 10:17:46 +02:00
Frederic Merizen
1ac8840bc9 [#2579] Protect against SQL injection on column and table in filtered_ids 2018-10-03 10:17:46 +02:00
Frederic Merizen
670edc3279 [#2579] Sanitize order 2018-10-03 10:17:46 +02:00
Frederic Merizen
314e9354c1 [#2579] Simplify sorted_ids 2018-10-03 10:17:46 +02:00
Frederic Merizen
3bb6fd2d47 [#2579] Remove no-op
(sanitize_sql_for_order does not do anything when its argument is a string)
2018-10-03 10:17:46 +02:00
Frederic Merizen
b8f88ece5c [#2579] Fix injection SQL dans le filtrage instructeur 2018-10-03 10:17:46 +02:00
gregoirenovel
b994fa4206 Do one thing per line 2018-10-01 16:15:46 +02:00
Frederic Merizen
9beaa293cd [#1421] Use delegation rather than STI for TypeDeChamp 2018-09-25 08:26:56 +02:00
Frederic Merizen
112fdb71fb [#2613] Remove dead code 2018-09-24 20:19:26 +02:00
Frederic Merizen
26ece1d144 [Fix #2613] Filter by date creation entreprise 2018-09-24 20:19:26 +02:00
Frederic Merizen
89a1d990e9 [#2584] Minor cleanup of DossierFieldService 2018-09-18 13:49:49 +02:00
Frederic Merizen
63fc0b3bc3 [Fix #2584] Move Field related code to a service 2018-09-18 13:49:34 +02:00
Pierre de La Morinerie
750e1e0c83 gestionnaire: move commentaire creation into a service 2018-09-04 18:52:43 +02:00
gregoirenovel
47962ef795 Simplify route_authorization 2018-08-30 13:16:14 +02:00
gregoirenovel
2d3b553e4d Use enum to the fullest with TypeDeChamp.type_champs 2018-08-29 17:31:08 +02:00
Paul Chavard
14f4b16fa4 [ENV] Signing key config
# Conflicts:
#	config/secrets.yml
2018-08-23 15:55:32 +02:00
Mathieu Magnin
d37958d1ae [ENV] Basic auth config 2018-08-23 15:55:32 +02:00
simon lehericey
ee43650c32 Demande: add nb_of_procedure, deadline and nb_of_dossier fields 2018-08-23 12:12:39 +02:00
Frederic Merizen
cef0eafb1a [#2179] Tolerate spurious spaces around search terms 2018-08-23 11:57:06 +02:00
Frederic Merizen
d681b1116f [Fix #2179] Use new full text search 2018-08-23 11:57:06 +02:00
Frederic Merizen
8fc359c54d [#2179] Simplify matching_dossiers_for_gestionnaire 2018-08-23 11:57:06 +02:00
Frederic Merizen
8744e9b83d [#2179] Simplify dossier_by_exact_id_for_gestionnaire 2018-08-23 11:57:06 +02:00
Frederic Merizen
20b886fb85 [#2179] Simplify dossiers_by_id 2018-08-23 11:57:06 +02:00
Frederic Merizen
a42c4ade4c [#2179] Simplify id_compatible? 2018-08-23 11:57:06 +02:00
Frederic Merizen
b3cb06b7e5 [#2179] Extract dossier_by_full_text_for_gestionnaire method 2018-08-23 11:57:06 +02:00
Frederic Merizen
d734f978a3 [#2179] Extract dossiers_by_exact_id_for_gestionnaire method 2018-08-23 11:57:06 +02:00
Frederic Merizen
a72388bb37 [#2179] Don't depend on current_gestionnaire in DossierSearchService 2018-08-23 11:57:06 +02:00
Frederic Merizen
57fd59b8d5 [#2179] Move code to DossierSearchService 2018-08-23 11:57:06 +02:00
Frederic Merizen
521aec6af9 [#1568] Remove old previsualisation code 2018-06-19 12:42:46 +02:00
gregoirenovel
346b32fbd4 [Fix #1736] Assign the deal and person to the person who accepted them 2018-06-07 16:04:15 +02:00
gregoirenovel
3eab48c699 Simplify ApiEntrepriseService even further 2018-05-24 18:12:29 +02:00
gregoirenovel
5d188c191d Move transform_keys calls directly to #process_params methods 2018-05-24 17:54:51 +02:00
gregoirenovel
a3fd271b00 Remove legacy
Update EtablissementUpdateJob
2018-05-24 17:54:51 +02:00
simon lehericey
aaebcd3494 [fix #1701] Use DS form to enroll admin 2018-05-24 17:15:44 +02:00
gregoirenovel
be672e19bc ApiEntrepriseService #fetch -> #get_etablissement_params_for_siret 2018-04-10 12:26:06 +02:00
gregoirenovel
ace8441ec7 SIRETService -> ApiEntrepriseService 2018-04-10 12:24:49 +02:00
simon lehericey
0ab526de5a [fix #932] Let an adminstrateur upload a pj template 2018-04-09 18:19:24 +02:00
gregoirenovel
26b66aac96 Improve a method name 2018-04-09 09:54:11 +02:00
gregoirenovel
136f15b89c Improve some variable names 2018-04-09 09:54:11 +02:00
gregoirenovel
4c24c8346a Use better names for PipedriveService methods 2018-04-09 09:54:11 +02:00
gregoirenovel
1f226d882c Dont use the class << self pattern 2018-04-09 09:54:10 +02:00
gregoirenovel
e71d3a76fa Refactor Pipedrive: create adapters and an API files 2018-04-09 09:54:10 +02:00
gregoirenovel
82d6f0b8a8 Add a method name to better separate responsabilities
Also rename a method to better reflect what it does
2018-04-09 09:54:10 +02:00
Paul Chavard
714ebda2fe Add SignatureService 2018-04-04 18:44:08 +02:00
Paul Chavard
fd8674dffc Give procedure_id to SIRETService 2018-03-29 17:57:09 +02:00
gregoirenovel
8938a5b40d Delete SiretService.siren, move its code to EntrepriseAdapter#get_resource 2018-03-29 16:06:14 +02:00
gregoirenovel
5f1394cd7f ExercicesAdapter#to_array -> ExercicesAdapter#to_params 2018-03-29 11:44:59 +02:00
gregoirenovel
54ab0ec5f0 Extract code in a #handle_legacy_models! method 2018-03-29 11:44:59 +02:00
gregoirenovel
caf2e50954 Make #to_params return blank hashes if we have no data 2018-03-28 10:55:15 +02:00
gregoirenovel
0022ea71c5 Use #transform_keys instead of .map.to_h 2018-03-28 10:55:14 +02:00
gregoirenovel
7794973774 Simplify SIRETService#fetch 2018-03-28 10:55:14 +02:00
gregoirenovel
4b6b583120 Delete useless return statements 2018-03-28 10:55:14 +02:00
gregoirenovel
94a257f5b0 Add missing spaces 2018-03-28 10:55:14 +02:00
gregoirenovel
b479833699 Reduce method calls 2018-03-28 10:55:14 +02:00
gregoirenovel
8b46df3176 Add a new variable to improve readability 2018-03-28 10:55:14 +02:00
gregoirenovel
3dd76c3d68 Remove useless success? methods 2018-03-28 10:55:14 +02:00
gregoirenovel
182afee970 to_params -> to_array 2018-03-28 10:52:54 +02:00
simon lehericey
d0431a28f2 Pipedrive: manager can refuse a deal 2018-03-27 15:56:28 +02:00
simon lehericey
2102130fa3 Pipedrive: allow super admin to choose target pipeline 2018-03-27 14:52:39 +02:00
simon lehericey
6a74aaa42a [fix #1697] Pipedrive: use a job to process an admin creation 2018-03-27 14:52:39 +02:00
simon lehericey
31adc8e990 Pipedrive: Rename pipedrive_dev_id 2018-03-27 14:52:39 +02:00
simon lehericey
ec3d558af0 Pipedrive: extract methods in service 2018-03-27 14:52:39 +02:00
Frederic Merizen
2fa88a432b Add missing brackets around parameters in method definitions 2018-03-20 17:54:51 +01:00
gregoirenovel
5658aae96b SIADE -> ApiEntreprise 2018-03-19 11:39:46 +01:00
Mathieu Magnin
ab368d44a1 [Fix #1500] Add mandatory params to call api entreprise v2 2018-03-15 14:51:42 +01:00
gregoirenovel
0a9f442260 Enable some Rails cops 2018-03-06 17:18:44 +01:00
gregoirenovel
da3d9d403a Enable some more cops 2018-03-06 17:18:44 +01:00
Paul Chavard
896518f3d5 add SIRETService 2018-02-27 16:22:53 +01:00
gregoirenovel
280deea805 [Ref #1170] Fix a typo in #1267 2018-02-26 15:35:20 +01:00
gregoirenovel
1b1460c191 Move a service to the gestionnaire model 2018-02-23 17:12:24 +01:00
Paul Chavard
5470141ca4 Moulinette™ STI Champ et TypeDeChamp 2018-02-20 16:13:40 +01:00
gregoirenovel
ee145180a3 Add a piece_justificative_file attribute to Champ 2018-02-15 11:15:23 +01:00
Paul Chavard
31d638ae2a Remove TypeDeChampPublic/TypeDeChampPrivate STI 2018-02-14 11:49:06 +01:00
gregoirenovel
29d9b03672 Bump rails to 5.2.0.rc1 2018-02-07 16:18:42 +01:00
gregoirenovel
6320bfffbf Improve a comment 2018-02-06 14:07:20 +01:00
gregoirenovel
142241dd16 Remove notifications 2018-02-06 14:07:20 +01:00
Paul Chavard
8a55ac79f1 Remove global BROWSER and use browser helper 2018-02-05 10:35:51 +01:00
gregoirenovel
3fa9774123 params is now an object and no longer a hash 2018-01-30 16:56:46 +01:00
gregoirenovel
25aef60354 Use string interpolation 2018-01-30 15:50:52 +01:00
Paul Chavard
26b1de5883 [Closes #1170] Put tps-dev (staging) environement behind a BasicAuth 2018-01-18 18:09:46 +01:00
gregoirenovel
278a662350 Enable the Layout/SpaceAroundEqualsInParameterDefault cop 2018-01-18 10:53:34 +01:00
simon lehericey
02dd1e209c FC ParticulierController: implement auto reconciliation based on user email 2018-01-17 16:37:26 +01:00
gregoirenovel
80ed589a17 Use string interpolation 2018-01-16 11:08:57 +01:00
gregoirenovel
c3754a173f Use map instead of inject 2018-01-16 11:08:56 +01:00
gregoirenovel
73dd58b6cd Enable the Layout/MultilineMethodCallIndentation cop 2018-01-15 22:33:13 +01:00
gregoirenovel
b77837bfd1 Enable the Layout/MultilineMethodCallBraceLayout cop 2018-01-15 22:33:13 +01:00
gregoirenovel
3363e21427 Enable the Layout/IndentAssignment cop 2018-01-15 22:33:12 +01:00
gregoirenovel
9e0e553f80 Enable the Layout/IndentArray cop 2018-01-15 22:33:12 +01:00
gregoirenovel
5125cf8396 Enable the Layout/FirstParameterIndentation cop 2018-01-15 22:14:39 +01:00
gregoirenovel
08ed400ec2 Enable the Layout/FirstArrayElementLineBreak cop 2018-01-15 22:14:38 +01:00
simon lehericey
02395e732c FC service: return domain info 2018-01-15 17:14:12 +01:00
simon lehericey
8e26a50f16 FC service: clean syntax 2018-01-15 17:14:12 +01:00
simon lehericey
9dc242d907 FC Particulier Controller: simplier login 2018-01-15 17:14:12 +01:00
simon lehericey
f8519c5345 FC initializers: remove Hashie 2018-01-15 17:08:38 +01:00
Simon Lehericey
0d46f92795 FC: move FC constants under particulier namespace 2018-01-15 16:59:50 +01:00
simon lehericey
4c2da46dd8 FC ParticulierClient: simplier initialize 2018-01-15 16:59:48 +01:00
gregoirenovel
1368cd4b03 [Fix #1120] Delete the old accompagnateur UI 2018-01-15 10:02:10 +01:00
gregoirenovel
bbaebe0602 !foo.nil? -> foo.present? 2018-01-12 11:32:43 +01:00
gregoirenovel
7c34807f46 Don’t use unless 2018-01-12 11:32:43 +01:00
Simon Lehericey
1473577131 [fix #1033] Procedure Edition: add position field to order the champs 2018-01-10 13:27:22 +01:00
Simon Lehericey
40b9a77395 Dossier: replace nouveau scope by en_construction 2017-12-15 17:37:30 +01:00
gregoirenovel
379e7b74d6 Enable all the rubicop perf cops 2017-11-21 10:31:16 +01:00
Mathieu Magnin
36491230bb Rename variable path_file => file_path 2017-11-16 12:28:07 +01:00
Simon Lehericey
6f4ddb9e3e [fix #728] Reduce flash error size to avoid cookies overflow 2017-10-12 09:02:54 +02:00
gregoirenovel
88ad986143 Remove the ordering from the dossier scopes 2017-10-02 17:45:22 +02:00
Simon Lehericey
fb5472d3f6 Dossier: remove a_instruire scope
As it s a duplication of en_instruction
2017-09-26 14:42:54 +02:00
Simon Lehericey
030a11d98c [Fix #503] Dossier: remove unused ouvert state 2017-09-26 14:42:54 +02:00
Simon Lehericey
2eca14a731 DossierListGestionnaire: change a_traiter filter from ouvert to nouveau 2017-09-26 14:42:54 +02:00
gregoirenovel
650a39b371 Use delete_all instead of destroy_all to batch delete 2017-08-29 14:22:14 +02:00
Simon Lehericey
a7b00ee847 Rubocop: enable Layout/SpaceAroundOperators 2017-08-28 13:39:13 +02:00
gregoirenovel
82eb66cfe8 Enable the Layout/EmptyLinesAroundMethodBody cop 2017-06-13 10:35:33 +02:00
gregoirenovel
24e7537c49 Enable the Layout/EmptyLinesAroundClassBody cop 2017-06-13 10:35:32 +02:00
gregoirenovel
f496f1adab Enable the Layout/EmptyLines cop 2017-06-13 10:35:20 +02:00
gregoirenovel
ff1f679c7b Enable the Layout/EmptyLineBetweenDefs cop 2017-06-13 10:35:20 +02:00
gregoirenovel
1b78a8e957 Enable the Layout/CaseIndentation cop 2017-06-13 10:35:19 +02:00
gregoirenovel
bc16027ccc Enable the Layout/BlockEndNewline cop 2017-06-13 10:35:19 +02:00
gregoirenovel
0971ede57e Add a termine scope to Dossier 2017-06-01 11:08:00 +02:00
gregoirenovel
ab1c19c09b Rename some Dossier scopes 2017-06-01 10:58:08 +02:00
Simon Lehericey
cdcd5b951f AvisController: add a notification when a avis has been received 2017-05-29 11:44:28 +02:00
gregoirenovel
a58a8684d9 [Fix #285] Gestionnaire.dossiers_follow -> followed_dossiers 2017-05-15 15:51:51 +02:00
Mathieu Magnin
762a11fc6f Define .termine as a scope and remove archived=false filter 2017-04-21 14:36:50 +02:00
Mathieu Magnin
21a2a5402b Remove unused service 2017-04-21 14:36:50 +02:00
Simon Lehericey
2b969ef575 MandatoryAttachment: group missing errors logic together
and show errors only if not draft
2017-04-19 15:45:45 +02:00
gregoirenovel
b00eb914da Use case statements instead of if statements where appropriated 2017-04-19 11:57:49 +02:00
gregoirenovel
ddf02ccd6d Use a non-breaking space after the “numéro” contraction 2017-04-19 11:19:53 +02:00
gregoirenovel
ba4ee68019 Use masculine ordinal indicator instead of the degree sign
It’s the right way to contract “numéro”

We should use the superscript lowercase o but
it’s hard to do in places where only raw text is
available
2017-04-19 11:19:53 +02:00
Simon Lehericey
71542f6a3a PiecesJustificativesService: more explicit selection of content 2017-04-19 10:24:08 +02:00
Simon Lehericey
21d7a96062 PiecesJustificativesService: less violent error message in case of virus 2017-04-19 10:22:30 +02:00
Simon Lehericey
395c9d5bb1 PiecesJustificativesService: improve error message when the file cannot be saved 2017-04-19 10:20:32 +02:00
Simon Lehericey
e0828dda13 PiecesJustificativesService: save_pj returns nil if no errors 2017-04-19 10:16:30 +02:00
Simon Lehericey
367b7c6ae1 DescriptionController: use common system to redirect with errors 2017-04-18 17:48:03 +02:00
Simon Lehericey
591ed2037e PiecesJustificativesServices: refactor upload_one! 2017-04-18 17:48:03 +02:00
Simon Lehericey
03e9cd523e PiecesJustificativesService: mandatory pj check and add test 2017-04-18 17:48:03 +02:00