Merge branch 'dev'

This commit is contained in:
Mathieu Magnin 2018-06-18 11:26:09 +02:00
commit b652e93e2e
28 changed files with 236 additions and 119 deletions

View file

@ -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 : 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 # Create and initialize the database
bin/rails db:create db:schema:load bin/rails db:create db:schema:load db:seed
# Migrate the development database and the test database # Migrate the development database and the test database
rails db:migrate bin/rails db:migrate
## Bouchonnage de lauthentification ## Bouchonnage de lauthentification
@ -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* *Note : les valeurs pour ces paramètres sont renseignées dans le Keepass*
## Création des comptes initiaux
rails c
> email = "<votre email>"
> password = "<votre mot de passe>"
> 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 ## Lancement de l'application
overmind s overmind s
Un utilisateur de test est disponible, avec les identifiants `test@exemple.fr`/`testpassword`.
## Programmation des jobs ## Programmation des jobs
AutoArchiveProcedureJob.set(cron: "* * * * *").perform_later AutoArchiveProcedureJob.set(cron: "* * * * *").perform_later
@ -110,18 +101,18 @@ Pour exécuter les tests de l'application, plusieurs possibilités :
- Lancer tous les tests - Lancer tous les tests
rake spec bin/rake spec
rspec bin/rspec
- Lancer un test en particulier - Lancer un test en particulier
rake spec SPEC=file_path/file_name_spec.rb:line_number bin/rake spec SPEC=file_path/file_name_spec.rb:line_number
rspec 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 - Lancer tous les tests d'un fichier
rake spec SPEC=file_path/file_name_spec.rb bin/rake spec SPEC=file_path/file_name_spec.rb
rspec file_path/file_name_spec.rb bin/rspec file_path/file_name_spec.rb
## Debug ## 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 ## Régénérer les binstubs
bundle binstub railties --force bundle binstub railties --force
rake rails:update:bin bin/rake rails:update:bin
## Tâches Super Admin ## Tâches Super Admin
- ajouter un compte 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 : - lister les comptes super admin :
`bundle exec rake admin:list` `bin/rake admin:list`
- supprimer un compte super admin : - 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 ## Compatibilité navigateurs

View file

@ -1,4 +1,10 @@
module Manager module Manager
class GestionnairesController < Manager::ApplicationController 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
end end

View file

@ -1,6 +1,9 @@
class DeviseUserMailer < Devise::Mailer class DeviseUserMailer < Devise::Mailer
helper :application # gives access to all helpers defined within `application_helper`. helper :application # gives access to all helpers defined within `application_helper`.
include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url` 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' layout 'mailers/layout'
def template_paths
['devise_mailer']
end
end end

View file

@ -5,12 +5,13 @@
#procedure_show #procedure_show
- if procedure.brouillon? - if procedure.brouillon?
- if procedure.gestionnaires.empty? || procedure.service.nil? - if procedure.gestionnaires.empty? || procedure.service.nil?
- message = '' - missing_elements = []
- if procedure.gestionnaires.empty? - if procedure.gestionnaires.empty?
- message += 'Affectez des accompagnateurs à votre procédure.' - missing_elements << 'des accompagnateurs'
- if procedure.service.nil? - if procedure.service.nil?
- message += 'Affectez un service à votre procédure.' - missing_elements << 'un service'
%a.action_button.btn.btn-success#publish-procedure{ style: 'float: right; margin-top: 10px;', disabled: 'disabled', 'data-toggle' => :tooltip, title: message } - 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 %i.fa.fa-eraser
Publier Publier
- else - else
@ -103,7 +104,7 @@
.col-xs-6.col-md-3 .col-xs-6.col-md-3
%h4.text-info Conservation des données %h4.text-info Conservation des données
- durees_de_conservation.each do |text| - durees_de_conservation.each do |text|
%p = text %p= text
%br %br
%h3 %h3

View file

@ -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 dadresse é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 dadresse électronique de votre compte #{@email} sur
demarches-simplifiees.fr a bien été pris en compte.
Vous pouvez désormais vous connecter avec ladresse #{@resource.email}.
%p
Bonne journée,
%p
L'équipe demarches-simplifiees.fr

View file

@ -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

View file

@ -7,7 +7,7 @@
= link_to edit_password_url(@resource, reset_password_token: @token), edit_password_url(@resource, reset_password_token: @token) = link_to edit_password_url(@resource, reset_password_token: @token), edit_password_url(@resource, reset_password_token: @token)
%p %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 %p
Bonne journée, Bonne journée,

View file

@ -0,0 +1,20 @@
- content_for(:title, 'Réactivez votre compte')
%p
Bonjour,
%p
Quelquun 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é laccès à votre compte.
%p
Pour rétablir laccè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

View file

@ -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 %>
<header class="main-content__header" role="banner">
<h1 class="main-content__page-title">
<%= content_for(:title) %>
</h1>
<div>
<%= link_to(
t("administrate.actions.edit_resource", name: page.page_title),
[:edit, namespace, page.resource],
class: "button",
) if valid_action?(:edit) && show_action?(:edit, page.resource) %>
</div>
<div>
<%= link_to 'Réinviter', reinvite_manager_gestionnaire_path(gestionnaire), method: :post, class: 'button' %>
<div>
</header>
<section class="main-content__body">
<dl>
<% page.attributes.each do |attribute| %>
<dt class="attribute-label" id="<%= attribute.name %>">
<%= t(
"helpers.label.#{resource_name}.#{attribute.name}",
default: attribute.name.titleize,
) %>
</dt>
<dd class="attribute-data attribute-data--<%=attribute.html_class%>"
><%= render_field attribute %></dd>
<% end %>
</dl>
</section>

View file

@ -140,9 +140,8 @@ task :deploy => :environment do
queue "/etc/init.d/#{user} upgrade " queue "/etc/init.d/#{user} upgrade "
queue! %[sudo service delayed_job_#{user!} start] queue! %[sudo service delayed_job_#{user!} start]
queue "cd #{deploy_to}/#{current_path}/" # If you are deploying a review app on a fresh testing environment,
queue "bundle exec rake db:seed RAILS_ENV=#{rails_env}" # now can be a good time to seed the database.
queue %[echo "-----> Rake Seeding Completed."]
end end
end end
end end

View file

@ -4,15 +4,15 @@ fr:
devise: devise:
confirmations: confirmations:
confirmed: "Votre compte a été validé." confirmed: "Votre compte a été validé."
send_instructions: "Vous allez recevoir les instructions nécessaires à la confirmation de votre compte dans quelques minutes." 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 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_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: failure:
already_authenticated: "Vous êtes déjà connecté" already_authenticated: "Vous êtes déjà connecté"
inactive: "Votre compte n'est pas encore activé." 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é." last_attempt: "Vous avez droit à une tentative avant que votre compte ne soit verrouillé."
locked: "Votre compte est 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." timeout: "Votre session est expirée. Veuillez vous reconnecter pour continuer."
unauthenticated: "Vous devez vous connecter ou vous inscrire pour continuer." unauthenticated: "Vous devez vous connecter ou vous inscrire pour continuer."
unconfirmed: "Vous devez valider votre compte pour continuer." unconfirmed: "Vous devez valider votre compte pour continuer."
@ -23,15 +23,17 @@ fr:
subject: "Instructions pour changer le mot de passe" subject: "Instructions pour changer le mot de passe"
unlock_instructions: unlock_instructions:
subject: "Instructions pour déverrouiller le compte" subject: "Instructions pour déverrouiller le compte"
email_changed:
subject: "Changement dadresse électronique"
password_change: password_change:
subject: "Votre mot de passe a été modifié avec succés." subject: "Votre mot de passe a été modifié avec succés."
omniauth_callbacks: omniauth_callbacks:
failure: "Nous n'avons pas pu vous authentifier via %{kind} : '%{reason}'." failure: "Nous n'avons pas pu vous authentifier via %{kind} : '%{reason}'."
success: "Authentifié avec succès via %{kind}." success: "Authentifié avec succès via %{kind}."
passwords: 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_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: "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." updated_not_active: "Votre mot de passe a été changé avec succès."
registrations: registrations:
@ -39,8 +41,8 @@ fr:
signed_up: "Bienvenue, vous êtes connecté." 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_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_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." 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 email. Merci de vérifier vos emails et de cliquer sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse." 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." updated: "Votre compte a été modifié avec succès."
sessions: sessions:
signed_in: "Connecté." signed_in: "Connecté."
@ -48,7 +50,7 @@ fr:
already_signed_out: "Déconnecté." already_signed_out: "Déconnecté."
unlocks: unlocks:
send_instructions: "Vous allez recevoir les instructions nécessaires au déverrouillage de votre compte dans quelques instants" 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é." unlocked: "Votre compte a été déverrouillé avec succès, vous êtes maintenant connecté."
errors: errors:
messages: messages:

View file

@ -89,6 +89,10 @@ fr:
messages: messages:
blank: "doit être rempli" blank: "doit être rempli"
not_a_number: 'doit être un nombre' 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: models:
attestation_template: attestation_template:
attributes: attributes:
@ -125,54 +129,6 @@ fr:
password: password:
too_short: ': Le mot de passe est trop court' 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: errors:
messages: messages:
already_confirmed: "a déjà été validé(e), veuillez essayer de vous connecter" already_confirmed: "a déjà été validé(e), veuillez essayer de vous connecter"

View file

@ -12,7 +12,10 @@ Rails.application.routes.draw do
end end
resources :users, only: [:index, :show] 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 :dossiers, only: [:show]
resources :demandes, only: [:index] resources :demandes, only: [:index]

View file

@ -1,7 +1,15 @@
# This file should contain all the record creation needed to seed the database with its default values. # 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). # 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)

View file

@ -1,3 +1,5 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2017_07_26_clean_birthdate_on_individual' do namespace :'2017_07_26_clean_birthdate_on_individual' do
task clean: :environment do task clean: :environment do
# remove duplicates # remove duplicates
@ -10,13 +12,13 @@ namespace :'2017_07_26_clean_birthdate_on_individual' do
individuals_with_date = Individual.where.not(birthdate: nil) individuals_with_date = Individual.where.not(birthdate: nil)
# Match 31/12/2017 => 2017-12-31 # Match 31/12/2017 => 2017-12-31
individuals_with_date.select { |i| /^\d{2}\/\d{2}\/\d{4}$/.match(i.birthdate) }.each do |i| 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 i.update(birthdate: Date.parse(i.birthdate).iso8601) rescue nil
end end
# Match 31/12/17 => 2017-12-31 # Match 31/12/17 => 2017-12-31
individuals_with_date.select { |i| /^\d{2}\/\d{2}\/\d{2}$/.match(i.birthdate) }.each do |i| 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") new_date = Date.strptime(i.birthdate, "%d/%m/%y")
if new_date.year > 2017 if new_date.year > 2017
new_date = new_date - 100.years new_date = new_date - 100.years

View file

@ -1,3 +1,5 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2017_10_18_regenerate_attestation' do namespace :'2017_10_18_regenerate_attestation' do
task set: :environment do task set: :environment do
include ActiveSupport::Testing::TimeHelpers include ActiveSupport::Testing::TimeHelpers
@ -15,7 +17,7 @@ namespace :'2017_10_18_regenerate_attestation' do
dossier = attestation.dossier dossier = attestation.dossier
procedure = dossier.procedure procedure = dossier.procedure
puts "processing dossier #{dossier.id}" rake_puts "processing dossier #{dossier.id}"
travel_to(dossier.processed_at) do travel_to(dossier.processed_at) do
new_attestation = procedure.attestation_template.attestation_for(dossier) new_attestation = procedure.attestation_template.attestation_for(dossier)

View file

@ -1,8 +1,10 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2017_10_30_copy_commentaire_piece_justificative_to_file' do namespace :'2017_10_30_copy_commentaire_piece_justificative_to_file' do
task set: :environment do task set: :environment do
commentaires_to_process = Commentaire.where(file: nil).where.not(piece_justificative_id: nil).reorder(id: :desc) 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| commentaires_to_process.each do |c|
process_commentaire(c) process_commentaire(c)
@ -12,7 +14,7 @@ namespace :'2017_10_30_copy_commentaire_piece_justificative_to_file' do
task fix: :environment do task fix: :environment do
commentaires_to_fix = Commentaire.where.not(file: nil).where.not(piece_justificative_id: nil).reorder(id: :desc) 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| commentaires_to_fix.each do |c|
process_commentaire(c) process_commentaire(c)
@ -27,7 +29,7 @@ namespace :'2017_10_30_copy_commentaire_piece_justificative_to_file' do
end end
def process_commentaire(commentaire) def process_commentaire(commentaire)
puts "Processing commentaire #{commentaire.id}" rake_puts "Processing commentaire #{commentaire.id}"
if commentaire.piece_justificative.present? if commentaire.piece_justificative.present?
# https://github.com/carrierwaveuploader/carrierwave#uploading-files-from-a-remote-location # https://github.com/carrierwaveuploader/carrierwave#uploading-files-from-a-remote-location
commentaire.remote_file_url = commentaire.piece_justificative.content_url 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 commentaire.save
if commentaire.file.blank? 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 end
end end

View file

@ -1,18 +1,20 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2017_12_05_initialize_timestamps_for_entreprises' do namespace :'2017_12_05_initialize_timestamps_for_entreprises' do
task set: :environment do task set: :environment do
entreprises = Entreprise.where(created_at: nil).includes(:dossier) 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) } entreprises.each { |e| initialize_entreprise(e) }
end end
def initialize_entreprise(entreprise) def initialize_entreprise(entreprise)
puts "initializing entreprise #{entreprise.id}" rake_puts "initializing entreprise #{entreprise.id}"
if entreprise.dossier.present? if entreprise.dossier.present?
entreprise.update_columns(created_at: entreprise.dossier.created_at, updated_at: entreprise.dossier.created_at) entreprise.update_columns(created_at: entreprise.dossier.created_at, updated_at: entreprise.dossier.created_at)
else 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) entreprise.update_columns(created_at: DateTime.now, updated_at: DateTime.now)
end end
end end

View file

@ -1,7 +1,9 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2017_12_20_delete_old_administration' do namespace :'2017_12_20_delete_old_administration' do
task set: :environment do task set: :environment do
Administration.all.each do |a| Administration.all.each do |a|
puts "Deleting #{a.email}" rake_puts "Deleting #{a.email}"
a.destroy a.destroy
end end
end end

View file

@ -1,17 +1,19 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2018_01_18_clean_datetime_in_champs' do namespace :'2018_01_18_clean_datetime_in_champs' do
task clean: :environment do task clean: :environment do
datetime_champs = TypeDeChamp.where(type_champ: "datetime").flat_map{ |t| t.champ } 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 # 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| 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) c.update_columns(value: nil)
end end
# Match "dd/mm/YYYY HH:MM" => "YYYY-mm-dd HH:MM" # 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| 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") 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) c.update_columns(value: formated_date)
end end
@ -23,7 +25,7 @@ namespace :'2018_01_18_clean_datetime_in_champs' do
hours = c.value[9,2] hours = c.value[9,2]
minutes = c.value[12,2] minutes = c.value[12,2]
formated_date = "#{year}-#{month}-#{day} #{hours}:#{minutes}" 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) c.update_columns(value: formated_date)
end end
end end

View file

@ -1,3 +1,4 @@
require Rails.root.join("lib", "tasks", "task_helper")
require Rails.root.join("app", "helpers", "html_to_string_helper") require Rails.root.join("app", "helpers", "html_to_string_helper")
namespace :'2018_03_06_clean_html_textareas' do 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 ActionView::Helpers::TextHelper
include HtmlToStringHelper include HtmlToStringHelper
rake_puts "PUTS Will migrate champs"
champs = Champ.joins(:type_de_champ) champs = Champ.joins(:type_de_champ)
.where(types_de_champ: { type_champ: "textarea" }) .where(types_de_champ: { type_champ: "textarea" })
.where("value LIKE '%<%'") .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| champs.find_each(batch_size: 100).with_index do |c, i|
if (i % 100) == 0 if (i % 100) == 0
print "Champ #{i}/#{total}\n" rake_puts "Champ #{i}/#{total}\n"
end end
c.update_column(:value, html_to_string(c.value)) c.update_column(:value, html_to_string(c.value))
end end

View file

@ -1,3 +1,5 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2018_03_29_remove_code_tags_from_mail_templates' do namespace :'2018_03_29_remove_code_tags_from_mail_templates' do
task clean: :environment do task clean: :environment do
remove_code_tag_from_body(Mails::ClosedMail) 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) def remove_code_tag_from_body(model_class)
mails = model_class.where("body LIKE ?", "%<code>%") mails = model_class.where("body LIKE ?", "%<code>%")
puts "#{mails.count} #{model_class.name} to clean" rake_puts "#{mails.count} #{model_class.name} to clean"
mails.each do |m| 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("<code>", "").gsub("</code>", "")) m.update(body: m.body.gsub("<code>", "").gsub("</code>", ""))
end end
end end

View file

@ -1,3 +1,5 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2018_04_04_fetch_etablissement_with_no_entreprise' do namespace :'2018_04_04_fetch_etablissement_with_no_entreprise' do
task fetch: :environment do task fetch: :environment do
dossiers = Entreprise.joins('LEFT JOIN etablissements et ON entreprises.id = et.entreprise_id') 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| dossiers.each do |dossier|
siret = dossier.entreprise.siret_siege_social 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 if siret
EtablissementUpdateJob.perform_later(dossier, siret) EtablissementUpdateJob.perform_later(dossier, siret)

View file

@ -1,3 +1,5 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2018_06_05_resend_attestations' do namespace :'2018_06_05_resend_attestations' do
task set: :environment do task set: :environment do
procedure = Procedure.find(4247) procedure = Procedure.find(4247)
@ -12,7 +14,7 @@ namespace :'2018_06_05_resend_attestations' do
dossier.attestation = dossier.build_attestation dossier.attestation = dossier.build_attestation
ResendAttestationMailer.resend_attestation(dossier).deliver_later 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 end
end end

View file

@ -1,3 +1,5 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2018_06_05_send_new_attestation' do namespace :'2018_06_05_send_new_attestation' do
task set: :environment do task set: :environment do
ids = [ ids = [
@ -37,14 +39,14 @@ namespace :'2018_06_05_send_new_attestation' do
if attestation if attestation
id = attestation.id id = attestation.id
attestation.destroy attestation.destroy
puts "Attestation #{id} détruite" rake_puts "Attestation #{id} détruite"
end end
dossier.attestation = dossier.build_attestation dossier.attestation = dossier.build_attestation
NewAttestationMailer.new_attestation(dossier).deliver_later NewAttestationMailer.new_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}"
puts rake_puts
end end
end end
end end

View file

@ -1,3 +1,5 @@
require Rails.root.join("lib", "tasks", "task_helper")
namespace :'2018_06_06_users_for_admins_and_gestionnaires' do namespace :'2018_06_06_users_for_admins_and_gestionnaires' do
task preactivate: :environment do task preactivate: :environment do
preactivate_users(Gestionnaire, 'accompagnateur') { |g| g.reset_password_token.nil? } 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 .to_a
.select(&block) .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 } 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) .where(confirmed_at: nil)
.update_all(confirmed_at: DateTime.now) .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
end end

10
lib/tasks/task_helper.rb Normal file
View file

@ -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

View file

@ -118,6 +118,8 @@ RSpec.configure do |config|
end end
config.before(:all) { config.before(:all) {
Rake.verbose false
Warden.test_mode! Warden.test_mode!
Typhoeus::Expectation.clear Typhoeus::Expectation.clear