diff --git a/README.md b/README.md index 8cbf87aef..c9373aa70 100644 --- a/README.md +++ b/README.md @@ -45,11 +45,11 @@ Les informations nécessaire à l'initialisation de la base doivent être pré-c Afin de générer la BDD de l'application, il est nécessaire d'exécuter les commandes suivantes : - # Create and load the schema for both databases - bin/rails db:create db:schema:load + # Create and initialize the database + bin/rails db:create db:schema:load db:seed # Migrate the development database and the test database - rails db:migrate + bin/rails db:migrate ## Bouchonnage de l’authentification @@ -81,21 +81,12 @@ Dans le fichier `config/intializers/token.rb`, ajouter *Note : les valeurs pour ces paramètres sont renseignées dans le Keepass* -## Création des comptes initiaux - - rails c - > email = "" - > password = "" - > Administration.create(email: email, password: password) - > Administrateur.create(email: email, password: password) - > Gestionnaire.create(email: email, password: password) - > User.create(email: email, password: password) - - ## Lancement de l'application overmind s +Un utilisateur de test est disponible, avec les identifiants `test@exemple.fr`/`testpassword`. + ## Programmation des jobs AutoArchiveProcedureJob.set(cron: "* * * * *").perform_later @@ -110,18 +101,18 @@ Pour exécuter les tests de l'application, plusieurs possibilités : - Lancer tous les tests - rake spec - rspec + bin/rake spec + bin/rspec - Lancer un test en particulier - rake spec SPEC=file_path/file_name_spec.rb:line_number - rspec file_path/file_name_spec.rb:line_number + bin/rake spec SPEC=file_path/file_name_spec.rb:line_number + bin/rspec file_path/file_name_spec.rb:line_number - Lancer tous les tests d'un fichier - rake spec SPEC=file_path/file_name_spec.rb - rspec file_path/file_name_spec.rb + bin/rake spec SPEC=file_path/file_name_spec.rb + bin/rspec file_path/file_name_spec.rb ## Debug @@ -145,18 +136,18 @@ Une fois `overmind` lancé, et un breakpoint `byebug` inséré dans le code, il ## Régénérer les binstubs bundle binstub railties --force - rake rails:update:bin + bin/rake rails:update:bin ## Tâches Super Admin - ajouter un compte super admin : - `bundle exec rake admin:create_admin[email-du-compte-github@exemple.com]` + `bin/rake admin:create_admin[email-du-compte-github@exemple.com]` - lister les comptes super admin : - `bundle exec rake admin:list` + `bin/rake admin:list` - supprimer un compte super admin : - `bundle exec rake admin:delete_admin[email-du-compte-github@exemple.com]` + `bin/rake admin:delete_admin[email-du-compte-github@exemple.com]` ## Compatibilité navigateurs diff --git a/app/controllers/manager/gestionnaires_controller.rb b/app/controllers/manager/gestionnaires_controller.rb index 859bf2749..408e788de 100644 --- a/app/controllers/manager/gestionnaires_controller.rb +++ b/app/controllers/manager/gestionnaires_controller.rb @@ -1,4 +1,10 @@ module Manager class GestionnairesController < Manager::ApplicationController + def reinvite + gestionnaire = Gestionnaire.find(params[:id]) + gestionnaire.invite! + flash[:notice] = "Gestionnaire réinvité." + redirect_to manager_gestionnaire_path(gestionnaire) + end end end diff --git a/app/mailers/devise_user_mailer.rb b/app/mailers/devise_user_mailer.rb index ad280ed8b..faea78ec5 100644 --- a/app/mailers/devise_user_mailer.rb +++ b/app/mailers/devise_user_mailer.rb @@ -1,6 +1,9 @@ class DeviseUserMailer < Devise::Mailer helper :application # gives access to all helpers defined within `application_helper`. include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url` - default template_path: 'devise_mailer' # to make sure that your mailer uses the devise views layout 'mailers/layout' + + def template_paths + ['devise_mailer'] + end end diff --git a/app/views/admin/procedures/show.html.haml b/app/views/admin/procedures/show.html.haml index 627515ffd..0c2803421 100644 --- a/app/views/admin/procedures/show.html.haml +++ b/app/views/admin/procedures/show.html.haml @@ -5,12 +5,13 @@ #procedure_show - if procedure.brouillon? - if procedure.gestionnaires.empty? || procedure.service.nil? - - message = '' + - missing_elements = [] - if procedure.gestionnaires.empty? - - message += 'Affectez des accompagnateurs à votre procédure.' + - missing_elements << 'des accompagnateurs' - if procedure.service.nil? - - message += 'Affectez un service à votre procédure.' - %a.action_button.btn.btn-success#publish-procedure{ style: 'float: right; margin-top: 10px;', disabled: 'disabled', 'data-toggle' => :tooltip, title: message } + - missing_elements << 'un service' + - message = "Affectez #{missing_elements.join(' et ')} à votre procédure." + %a.action_button.btn.btn-success#publish-procedure{ style: 'float: right; margin-top: 10px;', disabled: 'disabled', 'data-toggle' => :tooltip, 'data-placement' => :bottom, title: message } %i.fa.fa-eraser Publier - else @@ -103,7 +104,7 @@ .col-xs-6.col-md-3 %h4.text-info Conservation des données - durees_de_conservation.each do |text| - %p = text + %p= text %br %h3 diff --git a/app/views/devise_mailer/email_changed.html.haml b/app/views/devise_mailer/email_changed.html.haml new file mode 100644 index 000000000..fdc53dc5d --- /dev/null +++ b/app/views/devise_mailer/email_changed.html.haml @@ -0,0 +1,23 @@ +- content_for(:title, 'Votre nouvelle adresse électronique') + +%p + Bonjour, + +- unconfirmed_email = @resource.try(:unconfirmed_email?) +- if unconfirmed_email.present? + %p + Nous avons reçu une demande de changement d’adresse électronique pour votre + compte #{@email} sur demarches-simplifiees.fr. + Une fois la demande prise en compte, la nouvelle adresse électronique de + votre compte sera #{unconfirmed_email}. +- else + %p + Le changement d’adresse électronique de votre compte #{@email} sur + demarches-simplifiees.fr a bien été pris en compte. + Vous pouvez désormais vous connecter avec l’adresse #{@resource.email}. + +%p + Bonne journée, + +%p + L'équipe demarches-simplifiees.fr diff --git a/app/views/devise_mailer/password_change.html.haml b/app/views/devise_mailer/password_change.html.haml new file mode 100644 index 000000000..6e0de4026 --- /dev/null +++ b/app/views/devise_mailer/password_change.html.haml @@ -0,0 +1,14 @@ +- content_for(:title, 'Votre nouveau mot de passe') + +%p + Bonjour, + +%p + La demande de changement de mot de passe pour votre compte #{@resource.email} sur + demarches-simplifiees.fr a bien été prise en compte. + +%p + Bonne journée, + +%p + L'équipe demarches-simplifiees.fr diff --git a/app/views/devise_mailer/reset_password_instructions.html.haml b/app/views/devise_mailer/reset_password_instructions.html.haml index 20cfbe0ee..2b81633a1 100644 --- a/app/views/devise_mailer/reset_password_instructions.html.haml +++ b/app/views/devise_mailer/reset_password_instructions.html.haml @@ -7,7 +7,7 @@ = link_to edit_password_url(@resource, reset_password_token: @token), edit_password_url(@resource, reset_password_token: @token) %p - Si vous n'avez pas effectué une telle demande, merci d'ignorer ce mail. Votre mot de passe ne sera pas changé. + Si vous n'avez pas effectué une telle demande, merci d'ignorer ce courriel. Votre mot de passe ne sera pas changé. %p Bonne journée, diff --git a/app/views/devise_mailer/unlock_instructions.html.haml b/app/views/devise_mailer/unlock_instructions.html.haml new file mode 100644 index 000000000..d0b8dba91 --- /dev/null +++ b/app/views/devise_mailer/unlock_instructions.html.haml @@ -0,0 +1,20 @@ +- content_for(:title, 'Réactivez votre compte') + +%p + Bonjour, + +%p + Quelqu’un a tenté de se connecter un grand nombre de fois sans succès à votre + compte #{@resource.email} sur demarches-simplifiees.fr. Par mesure de précaution, + nous avons temporairement désactivé l’accès à votre compte. + +%p + Pour rétablir l’accès à votre compte, veuillez utiliser le lien ci-dessous. + +%p= link_to 'Déverrouiller mon compte', unlock_url(@resource, unlock_token: @token) + +%p + Bonne journée, + +%p + L'équipe demarches-simplifiees.fr diff --git a/app/views/manager/gestionnaires/show.html.erb b/app/views/manager/gestionnaires/show.html.erb new file mode 100644 index 000000000..9a2c8324f --- /dev/null +++ b/app/views/manager/gestionnaires/show.html.erb @@ -0,0 +1,54 @@ +<%# +# Show + +This view is the template for the show page. +It renders the attributes of a resource, +as well as a link to its edit page. + +## Local variables: + +- `page`: + An instance of [Administrate::Page::Show][1]. + Contains methods for accessing the resource to be displayed on the page, + as well as helpers for describing how each attribute of the resource + should be displayed. + +[1]: http://www.rubydoc.info/gems/administrate/Administrate/Page/Show +%> + +<% content_for(:title) { t("administrate.actions.show_resource", name: page.page_title) } %> +<% gestionnaire = page.resource %> + + + +
+
+ <% page.attributes.each do |attribute| %> +
+ <%= t( + "helpers.label.#{resource_name}.#{attribute.name}", + default: attribute.name.titleize, + ) %> +
+ +
<%= render_field attribute %>
+ <% end %> +
+
diff --git a/config/deploy.rb b/config/deploy.rb index 63920ad5b..5ce42d851 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -140,9 +140,8 @@ task :deploy => :environment do queue "/etc/init.d/#{user} upgrade " queue! %[sudo service delayed_job_#{user!} start] - queue "cd #{deploy_to}/#{current_path}/" - queue "bundle exec rake db:seed RAILS_ENV=#{rails_env}" - queue %[echo "-----> Rake Seeding Completed."] + # If you are deploying a review app on a fresh testing environment, + # now can be a good time to seed the database. end end end diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml index 6dd683b39..f8bc1580e 100755 --- a/config/locales/devise.fr.yml +++ b/config/locales/devise.fr.yml @@ -4,15 +4,15 @@ fr: devise: confirmations: confirmed: "Votre compte a été validé." - send_instructions: "Vous allez recevoir les instructions nécessaires à la confirmation de votre compte dans quelques minutes." - send_paranoid_instructions: "Si votre e-mail existe dans notre base de données, vous allez bientôt recevoir un e-mail contenant les instructions de confirmation de votre compte." + send_instructions: 'Vous allez recevoir un courriel avec les instructions nécessaires à la confirmation de votre compte dans quelques minutes.' + send_paranoid_instructions: "Si votre adresse électronique existe dans notre base de données, vous allez bientôt recevoir un courriel contenant les instructions de confirmation de votre compte." failure: already_authenticated: "Vous êtes déjà connecté" inactive: "Votre compte n'est pas encore activé." - invalid: "Email ou mot de passe incorrect." + invalid: "Adresse électronique ou mot de passe incorrect." last_attempt: "Vous avez droit à une tentative avant que votre compte ne soit verrouillé." locked: "Votre compte est verrouillé." - not_found_in_database: "Email ou mot de passe invalide." + not_found_in_database: "Adresse électronique ou mot de passe invalide." timeout: "Votre session est expirée. Veuillez vous reconnecter pour continuer." unauthenticated: "Vous devez vous connecter ou vous inscrire pour continuer." unconfirmed: "Vous devez valider votre compte pour continuer." @@ -23,15 +23,17 @@ fr: subject: "Instructions pour changer le mot de passe" unlock_instructions: subject: "Instructions pour déverrouiller le compte" + email_changed: + subject: "Changement d’adresse électronique" password_change: subject: "Votre mot de passe a été modifié avec succés." omniauth_callbacks: failure: "Nous n'avons pas pu vous authentifier via %{kind} : '%{reason}'." success: "Authentifié avec succès via %{kind}." passwords: - no_token: "Vous ne pouvez accéder à cette page sans passer par un e-mail de réinitialisation de mot de passe. Si vous êtes passé par un e-mail de ce type, assurez-vous d'utiliser l'URL complète." + no_token: "Vous ne pouvez accéder à cette page sans passer par un courriel de réinitialisation de mot de passe. Si vous êtes passé par un courriel de ce type, assurez-vous d'utiliser l'URL complète." send_instructions: "Vous allez recevoir les instructions de réinitialisation du mot de passe dans quelques instants" - send_paranoid_instructions: "Si votre e-mail existe dans notre base de données, vous allez recevoir un lien de réinitialisation par e-mail" + send_paranoid_instructions: "Si votre adresse électronique existe dans notre base de données, vous allez recevoir un lien de réinitialisation par courriel" updated: "Votre mot de passe a été édité avec succès, vous êtes maintenant connecté" updated_not_active: "Votre mot de passe a été changé avec succès." registrations: @@ -39,8 +41,8 @@ fr: signed_up: "Bienvenue, vous êtes connecté." signed_up_but_inactive: "Vous êtes bien enregistré. Vous ne pouvez cependant pas vous connecter car votre compte n'est pas encore activé." signed_up_but_locked: "Vous êtes bien enregistré. Vous ne pouvez cependant pas vous connecter car votre compte est verrouillé." - signed_up_but_unconfirmed: "Un message contenant un lien de confirmation a été envoyé à votre adresse email. Ouvrez ce lien pour activer votre compte." - update_needs_confirmation: "Votre compte a bien été mis à jour mais nous devons vérifier votre nouvelle adresse email. Merci de vérifier vos emails et de cliquer sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse." + signed_up_but_unconfirmed: "Un message contenant un lien de confirmation a été envoyé à votre adresse électronique. Ouvrez ce lien pour activer votre compte." + update_needs_confirmation: "Votre compte a bien été mis à jour mais nous devons vérifier votre nouvelle adresse électronique. Merci de vérifier vos courriels et de cliquer sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse." updated: "Votre compte a été modifié avec succès." sessions: signed_in: "Connecté." @@ -48,7 +50,7 @@ fr: already_signed_out: "Déconnecté." unlocks: send_instructions: "Vous allez recevoir les instructions nécessaires au déverrouillage de votre compte dans quelques instants" - send_paranoid_instructions: "Si votre compte existe, vous allez bientôt recevoir un email contenant les instructions pour le déverrouiller." + send_paranoid_instructions: "Si votre compte existe, vous allez bientôt recevoir un courriel contenant les instructions pour le déverrouiller." unlocked: "Votre compte a été déverrouillé avec succès, vous êtes maintenant connecté." errors: messages: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 5dede0967..907cb1841 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -89,6 +89,10 @@ fr: messages: blank: "doit être rempli" not_a_number: 'doit être un nombre' + greater_than: "doit être supérieur à %{count}" + greater_than_or_equal_to: "doit être supérieur ou égal à %{count}" + less_than: "doit être inférieur à %{count}" + less_than_or_equal_to: "doit être inférieur ou égal à %{count}" models: attestation_template: attributes: @@ -125,54 +129,6 @@ fr: password: too_short: ': Le mot de passe est trop court' - devise: - confirmations: - confirmed: 'Votre compte a été confirmé avec succès.' - send_instructions: 'Vous allez recevoir un e-mail avec les instructions nécessaires à la confirmation de votre compte dans quelques minutes.' - send_paranoid_instructions: 'Si votre e-mail existe dans notre base de données, vous allez bientôt recevoir un e-mail contenant les instructions de confirmation de votre compte.' - failure: - already_authenticated: "Vous êtes déjà connecté" - inactive: "Votre compte n'est pas encore activé." - invalid: "%{authentication_keys} ou mot de passe incorrect." - locked: "Votre compte est verrouillé." - last_attempt: "Vous avez droit à une tentative avant que votre compte ne soit verrouillé." - locked: "Votre compte est verrouillé." - not_found_in_database: "%{authentication_keys} ou mot de passe incorrect." - timeout: "Votre session est expirée. Veuillez vous reconnecter pour continuer." - unauthenticated: "Vous devez vous connecter ou vous inscrire pour continuer." - unconfirmed: "Vous devez confirmer votre compte pour continuer." - mailer: - confirmation_instructions: - subject: "Instructions de confirmation" - reset_password_instructions: - subject: "Instructions pour changer le mot de passe" - unlock_instructions: - subject: "Instructions pour déverrouiller le compte" - omniauth_callbacks: - failure: "Nous n'avons pas pu vous authentifier via %{kind} : '%{reason}'." - success: 'Authentifié avec succès via %{kind}.' - passwords: - no_token: "Vous ne pouvez accéder à cette page sans passer par un e-mail de réinitialisation de mot de passe. Si vous êtes passé par un e-mail de ce type, assurez-vous d'utiliser l'URL complète." - send_instructions: 'Vous allez recevoir les instructions de réinitialisation du mot de passe dans quelques instants' - send_paranoid_instructions: "Si votre e-mail existe dans notre base de données, vous allez recevoir un lien de réinitialisation par e-mail" - updated: 'Votre mot de passe a été édité avec succès, vous êtes maintenant connecté' - updated_not_active: 'Votre mot de passe a été changé avec succès.' - registrations: - destroyed: 'Votre compte a été supprimé avec succès. Nous espérons vous revoir bientôt.' - signed_up: 'Bienvenue, vous êtes connecté.' - signed_up_but_inactive: "Vous êtes bien enregistré. Vous ne pouvez cependant pas vous connecter car votre compte n'est pas encore activé." - signed_up_but_locked: "Vous êtes bien enregistré. Vous ne pouvez cependant pas vous connecter car votre compte est verrouillé." - signed_up_but_unconfirmed: 'Un message contenant un lien de confirmation a été envoyé à votre adresse email. Ouvrez ce lien pour confirmer votre compte.' - update_needs_confirmation: "Votre compte a bien été mis à jour mais nous devons vérifier votre nouvelle adresse email. Merci de vérifier vos emails et de cliquer sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse." - updated: 'Votre compte a été modifié avec succès.' - sessions: - signed_in: "Connecté avec succès." - signed_out: "Déconnecté avec succès." - already_signed_out: "Déconnecté avec succès." - unlocks: - send_instructions: 'Vous allez recevoir les instructions nécessaires au déverrouillage de votre compte dans quelques instants' - send_paranoid_instructions: 'Si votre compte existe, vous allez bientôt recevoir un email contenant les instructions pour le déverrouiller.' - unlocked: 'Votre compte a été déverrouillé avec succès, veuillez vous connecter pour continuer.' errors: messages: already_confirmed: "a déjà été validé(e), veuillez essayer de vous connecter" diff --git a/config/routes.rb b/config/routes.rb index a6816f131..27fe8ede9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,7 +12,10 @@ Rails.application.routes.draw do end resources :users, only: [:index, :show] - resources :gestionnaires, only: [:index, :show] + resources :gestionnaires, only: [:index, :show] do + post 'reinvite', on: :member + end + resources :dossiers, only: [:show] resources :demandes, only: [:index] diff --git a/db/seeds.rb b/db/seeds.rb index 4edb1e857..ef9828967 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,7 +1,15 @@ # This file should contain all the record creation needed to seed the database with its default values. # The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). + # -# Examples: +# Create an initial user who can use all roles # -# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) -# Mayor.create(name: 'Emanuel', city: cities.first) + +default_user = "test@exemple.fr" +default_password = "testpassword" + +puts "Create test user '#{default_user}'" +Administration.create!(email: default_user, password: default_password) +Administrateur.create!(email: default_user, password: default_password) +Gestionnaire.create!(email: default_user, password: default_password) +User.create!(email: default_user, password: default_password, confirmed_at: DateTime.now) diff --git a/lib/tasks/2017_07_26_clean_birthdate_on_individual.rake b/lib/tasks/2017_07_26_clean_birthdate_on_individual.rake index a9fcf1bcc..659d37633 100644 --- a/lib/tasks/2017_07_26_clean_birthdate_on_individual.rake +++ b/lib/tasks/2017_07_26_clean_birthdate_on_individual.rake @@ -1,3 +1,5 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2017_07_26_clean_birthdate_on_individual' do task clean: :environment do # remove duplicates @@ -10,13 +12,13 @@ namespace :'2017_07_26_clean_birthdate_on_individual' do individuals_with_date = Individual.where.not(birthdate: nil) # Match 31/12/2017 => 2017-12-31 individuals_with_date.select { |i| /^\d{2}\/\d{2}\/\d{4}$/.match(i.birthdate) }.each do |i| - puts "cleaning #{i.birthdate}" + rake_puts "cleaning #{i.birthdate}" i.update(birthdate: Date.parse(i.birthdate).iso8601) rescue nil end # Match 31/12/17 => 2017-12-31 individuals_with_date.select { |i| /^\d{2}\/\d{2}\/\d{2}$/.match(i.birthdate) }.each do |i| - puts "cleaning #{i.birthdate}" + rake_puts "cleaning #{i.birthdate}" new_date = Date.strptime(i.birthdate, "%d/%m/%y") if new_date.year > 2017 new_date = new_date - 100.years diff --git a/lib/tasks/2017_10_18_regenerate_attestation.rake b/lib/tasks/2017_10_18_regenerate_attestation.rake index 4efe08bd0..652bf0325 100644 --- a/lib/tasks/2017_10_18_regenerate_attestation.rake +++ b/lib/tasks/2017_10_18_regenerate_attestation.rake @@ -1,3 +1,5 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2017_10_18_regenerate_attestation' do task set: :environment do include ActiveSupport::Testing::TimeHelpers @@ -15,7 +17,7 @@ namespace :'2017_10_18_regenerate_attestation' do dossier = attestation.dossier procedure = dossier.procedure - puts "processing dossier #{dossier.id}" + rake_puts "processing dossier #{dossier.id}" travel_to(dossier.processed_at) do new_attestation = procedure.attestation_template.attestation_for(dossier) diff --git a/lib/tasks/2017_10_30_copy_commentaire_piece_justificative_to_file.rake b/lib/tasks/2017_10_30_copy_commentaire_piece_justificative_to_file.rake index 5da2e35e2..6aa945773 100644 --- a/lib/tasks/2017_10_30_copy_commentaire_piece_justificative_to_file.rake +++ b/lib/tasks/2017_10_30_copy_commentaire_piece_justificative_to_file.rake @@ -1,8 +1,10 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2017_10_30_copy_commentaire_piece_justificative_to_file' do task set: :environment do commentaires_to_process = Commentaire.where(file: nil).where.not(piece_justificative_id: nil).reorder(id: :desc) - puts "#{commentaires_to_process.count} commentaires to process..." + rake_puts "#{commentaires_to_process.count} commentaires to process..." commentaires_to_process.each do |c| process_commentaire(c) @@ -12,7 +14,7 @@ namespace :'2017_10_30_copy_commentaire_piece_justificative_to_file' do task fix: :environment do commentaires_to_fix = Commentaire.where.not(file: nil).where.not(piece_justificative_id: nil).reorder(id: :desc) - puts "#{commentaires_to_fix.count} commentaires to fix..." + rake_puts "#{commentaires_to_fix.count} commentaires to fix..." commentaires_to_fix.each do |c| process_commentaire(c) @@ -27,7 +29,7 @@ namespace :'2017_10_30_copy_commentaire_piece_justificative_to_file' do end def process_commentaire(commentaire) - puts "Processing commentaire #{commentaire.id}" + rake_puts "Processing commentaire #{commentaire.id}" if commentaire.piece_justificative.present? # https://github.com/carrierwaveuploader/carrierwave#uploading-files-from-a-remote-location commentaire.remote_file_url = commentaire.piece_justificative.content_url @@ -42,7 +44,7 @@ namespace :'2017_10_30_copy_commentaire_piece_justificative_to_file' do commentaire.save if commentaire.file.blank? - puts "Failed to save file for commentaire #{commentaire.id}" + rake_puts "Failed to save file for commentaire #{commentaire.id}" end end end diff --git a/lib/tasks/2017_12_05_initialize_timestamps_for_entreprises.rake b/lib/tasks/2017_12_05_initialize_timestamps_for_entreprises.rake index 2928c6635..7c807713a 100644 --- a/lib/tasks/2017_12_05_initialize_timestamps_for_entreprises.rake +++ b/lib/tasks/2017_12_05_initialize_timestamps_for_entreprises.rake @@ -1,18 +1,20 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2017_12_05_initialize_timestamps_for_entreprises' do task set: :environment do entreprises = Entreprise.where(created_at: nil).includes(:dossier) - puts "#{entreprises.count} to initialize..." + rake_puts "#{entreprises.count} to initialize..." entreprises.each { |e| initialize_entreprise(e) } end def initialize_entreprise(entreprise) - puts "initializing entreprise #{entreprise.id}" + rake_puts "initializing entreprise #{entreprise.id}" if entreprise.dossier.present? entreprise.update_columns(created_at: entreprise.dossier.created_at, updated_at: entreprise.dossier.created_at) else - puts "dossier #{entreprise.dossier_id} is missing for entreprise #{entreprise.id}" + rake_puts "dossier #{entreprise.dossier_id} is missing for entreprise #{entreprise.id}" entreprise.update_columns(created_at: DateTime.now, updated_at: DateTime.now) end end diff --git a/lib/tasks/2017_12_20_delete_old_administration.rake b/lib/tasks/2017_12_20_delete_old_administration.rake index 2f72d4165..2bb9e6b57 100644 --- a/lib/tasks/2017_12_20_delete_old_administration.rake +++ b/lib/tasks/2017_12_20_delete_old_administration.rake @@ -1,7 +1,9 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2017_12_20_delete_old_administration' do task set: :environment do Administration.all.each do |a| - puts "Deleting #{a.email}" + rake_puts "Deleting #{a.email}" a.destroy end end diff --git a/lib/tasks/2018_01_18_clean_datetime_in_champs.rake b/lib/tasks/2018_01_18_clean_datetime_in_champs.rake index 846b5c8be..6b5d48e0c 100644 --- a/lib/tasks/2018_01_18_clean_datetime_in_champs.rake +++ b/lib/tasks/2018_01_18_clean_datetime_in_champs.rake @@ -1,17 +1,19 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2018_01_18_clean_datetime_in_champs' do task clean: :environment do datetime_champs = TypeDeChamp.where(type_champ: "datetime").flat_map{ |t| t.champ } # Match " HH:MM" => nil a datetime is not valid if not composed by date AND time datetime_champs.select { |c| /^\s\d{2}:\d{2}$/.match(c.value) }.each do |c| - puts "cleaning #{c.value} => nil" + rake_puts "cleaning #{c.value} => nil" c.update_columns(value: nil) end # Match "dd/mm/YYYY HH:MM" => "YYYY-mm-dd HH:MM" datetime_champs.select { |c| /^\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}$/ =~ c.value }.each do |c| formated_date = DateTime.parse(c.value, "%d/%m/%Y %H:%M").strftime("%Y-%m-%d %H:%M") - puts "cleaning #{c.value} => #{formated_date}" + rake_puts "cleaning #{c.value} => #{formated_date}" c.update_columns(value: formated_date) end @@ -23,7 +25,7 @@ namespace :'2018_01_18_clean_datetime_in_champs' do hours = c.value[9,2] minutes = c.value[12,2] formated_date = "#{year}-#{month}-#{day} #{hours}:#{minutes}" - puts "cleaning #{c.value} => #{formated_date}" + rake_puts "cleaning #{c.value} => #{formated_date}" c.update_columns(value: formated_date) end end diff --git a/lib/tasks/2018_03_06_clean_html_textareas.rake b/lib/tasks/2018_03_06_clean_html_textareas.rake index ae66755ba..4a6240f1b 100644 --- a/lib/tasks/2018_03_06_clean_html_textareas.rake +++ b/lib/tasks/2018_03_06_clean_html_textareas.rake @@ -1,3 +1,4 @@ +require Rails.root.join("lib", "tasks", "task_helper") require Rails.root.join("app", "helpers", "html_to_string_helper") namespace :'2018_03_06_clean_html_textareas' do @@ -5,6 +6,8 @@ namespace :'2018_03_06_clean_html_textareas' do include ActionView::Helpers::TextHelper include HtmlToStringHelper + rake_puts "PUTS Will migrate champs" + champs = Champ.joins(:type_de_champ) .where(types_de_champ: { type_champ: "textarea" }) .where("value LIKE '%<%'") @@ -13,7 +16,7 @@ namespace :'2018_03_06_clean_html_textareas' do champs.find_each(batch_size: 100).with_index do |c, i| if (i % 100) == 0 - print "Champ #{i}/#{total}\n" + rake_puts "Champ #{i}/#{total}\n" end c.update_column(:value, html_to_string(c.value)) end diff --git a/lib/tasks/2018_03_29_remove_code_tags_from_mail_templates.rake b/lib/tasks/2018_03_29_remove_code_tags_from_mail_templates.rake index b6b9edbc9..3506ced0c 100644 --- a/lib/tasks/2018_03_29_remove_code_tags_from_mail_templates.rake +++ b/lib/tasks/2018_03_29_remove_code_tags_from_mail_templates.rake @@ -1,3 +1,5 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2018_03_29_remove_code_tags_from_mail_templates' do task clean: :environment do remove_code_tag_from_body(Mails::ClosedMail) @@ -9,9 +11,9 @@ namespace :'2018_03_29_remove_code_tags_from_mail_templates' do def remove_code_tag_from_body(model_class) mails = model_class.where("body LIKE ?", "%%") - puts "#{mails.count} #{model_class.name} to clean" + rake_puts "#{mails.count} #{model_class.name} to clean" mails.each do |m| - puts "cleaning #{model_class.name} ##{m.id}" + rake_puts "cleaning #{model_class.name} ##{m.id}" m.update(body: m.body.gsub("", "").gsub("", "")) end end diff --git a/lib/tasks/2018_04_04_fetch_etablissement_with_no_entreprise.rake b/lib/tasks/2018_04_04_fetch_etablissement_with_no_entreprise.rake index ed25fb96a..6609339fc 100644 --- a/lib/tasks/2018_04_04_fetch_etablissement_with_no_entreprise.rake +++ b/lib/tasks/2018_04_04_fetch_etablissement_with_no_entreprise.rake @@ -1,3 +1,5 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2018_04_04_fetch_etablissement_with_no_entreprise' do task fetch: :environment do dossiers = Entreprise.joins('LEFT JOIN etablissements et ON entreprises.id = et.entreprise_id') @@ -7,7 +9,7 @@ namespace :'2018_04_04_fetch_etablissement_with_no_entreprise' do dossiers.each do |dossier| siret = dossier.entreprise.siret_siege_social - puts "Fetch siret: #{siret} for dossier: #{dossier.id}" + rake_puts "Fetch siret: #{siret} for dossier: #{dossier.id}" if siret EtablissementUpdateJob.perform_later(dossier, siret) diff --git a/lib/tasks/2018_06_05_resend_attestations.rake b/lib/tasks/2018_06_05_resend_attestations.rake index 57f92f11e..de3e49b49 100644 --- a/lib/tasks/2018_06_05_resend_attestations.rake +++ b/lib/tasks/2018_06_05_resend_attestations.rake @@ -1,3 +1,5 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2018_06_05_resend_attestations' do task set: :environment do procedure = Procedure.find(4247) @@ -12,7 +14,7 @@ namespace :'2018_06_05_resend_attestations' do dossier.attestation = dossier.build_attestation ResendAttestationMailer.resend_attestation(dossier).deliver_later - puts "Email envoyé à #{dossier.user.email} pour le dossier #{dossier.id}" + rake_puts "Email envoyé à #{dossier.user.email} pour le dossier #{dossier.id}" end end end diff --git a/lib/tasks/2018_06_05_send_new_attestations.rake b/lib/tasks/2018_06_05_send_new_attestations.rake index 0f8fa6a3b..62d684663 100644 --- a/lib/tasks/2018_06_05_send_new_attestations.rake +++ b/lib/tasks/2018_06_05_send_new_attestations.rake @@ -1,3 +1,5 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2018_06_05_send_new_attestation' do task set: :environment do ids = [ @@ -37,14 +39,14 @@ namespace :'2018_06_05_send_new_attestation' do if attestation id = attestation.id attestation.destroy - puts "Attestation #{id} détruite" + rake_puts "Attestation #{id} détruite" end dossier.attestation = dossier.build_attestation NewAttestationMailer.new_attestation(dossier).deliver_later - puts "Email envoyé à #{dossier.user.email} pour le dossier #{dossier.id}" - puts + rake_puts "Email envoyé à #{dossier.user.email} pour le dossier #{dossier.id}" + rake_puts end end end diff --git a/lib/tasks/2018_06_06_users_for_admins_and_gestionnaires.rake b/lib/tasks/2018_06_06_users_for_admins_and_gestionnaires.rake index 532dd27c5..418642734 100644 --- a/lib/tasks/2018_06_06_users_for_admins_and_gestionnaires.rake +++ b/lib/tasks/2018_06_06_users_for_admins_and_gestionnaires.rake @@ -1,3 +1,5 @@ +require Rails.root.join("lib", "tasks", "task_helper") + namespace :'2018_06_06_users_for_admins_and_gestionnaires' do task preactivate: :environment do preactivate_users(Gestionnaire, 'accompagnateur') { |g| g.reset_password_token.nil? } @@ -14,7 +16,7 @@ namespace :'2018_06_06_users_for_admins_and_gestionnaires' do .to_a .select(&block) - puts("Sending emails to #{already_activated.count} #{table_name} that were already confirmed") + rake_puts "Sending emails to #{already_activated.count} #{table_name} that were already confirmed" already_activated.each { |m| PreactivateUsersMailer.reinvite(m, role_name).deliver_later } @@ -24,6 +26,6 @@ namespace :'2018_06_06_users_for_admins_and_gestionnaires' do .where(confirmed_at: nil) .update_all(confirmed_at: DateTime.now) - puts("Fixed #{count} #{table_name} with unconfirmed user") + rake_puts "Fixed #{count} #{table_name} with unconfirmed user" end end diff --git a/lib/tasks/task_helper.rb b/lib/tasks/task_helper.rb new file mode 100644 index 000000000..238ea9ced --- /dev/null +++ b/lib/tasks/task_helper.rb @@ -0,0 +1,10 @@ +# Write the given objects to the standard output – except if Rake is configured +# to be quiet. +# +# This is useful when running tests (when Rake is configured to be quiet), +# to avoid spamming the output with extra informations. +def rake_puts(*args) + if Rake.verbose + puts(*args) + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f73820cc5..4b8773121 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -118,6 +118,8 @@ RSpec.configure do |config| end config.before(:all) { + Rake.verbose false + Warden.test_mode! Typhoeus::Expectation.clear