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 :
# 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 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*
## 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
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

View file

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

View file

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

View file

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

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)
%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,

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! %[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

View file

@ -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 dadresse é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:

View file

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

View file

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

View file

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

View file

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

View file

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

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

View file

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

View file

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

View file

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

View file

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

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
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 ?", "%<code>%")
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("<code>", "").gsub("</code>", ""))
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
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)

View file

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

View file

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

View file

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

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
config.before(:all) {
Rake.verbose false
Warden.test_mode!
Typhoeus::Expectation.clear