Merge pull request #9345 from adullact/feature-ouidou/existing_procedure_hidden_as_template

ETQ superadmin, je peux masquer une démarche de la liste des démarches proposées à la création
This commit is contained in:
krichtof 2023-09-25 08:46:31 +00:00 committed by GitHub
commit f019f1e316
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 113 additions and 7 deletions

View file

@ -79,6 +79,7 @@ module Administrateurs
significant_procedure_ids = Procedure
.publiees_ou_closes
.where(hidden_at_as_template: nil)
.where('unaccent(libelle) ILIKE unaccent(?)', "%#{query}%")
.joins(:dossiers)
.group("procedures.id")
@ -402,7 +403,7 @@ module Administrateurs
def administrateurs
@filter = ProceduresFilter.new(current_administrateur, params)
pids = AdministrateursProcedure.select(:administrateur_id).where(procedure: filter_procedures(@filter).map { |p| p["id"] })
@admins = Administrateur.includes(:user, :procedures).where(id: pids)
@admins = Administrateur.includes(:user, :procedures).where(id: pids, procedures: { hidden_at_as_template: nil })
@admins = @admins.where('unaccent(users.email) ILIKE unaccent(?)', "%#{@filter.email}%") if @filter.email.present?
@admins = paginate(@admins, 'users.email')
end
@ -417,6 +418,7 @@ module Administrateurs
procedures_result = Procedure.select(:id).left_joins(:procedures_zones).distinct.publiees_ou_closes
procedures_result = procedures_result.where(procedures_zones: { zone_id: filter.zone_ids }) if filter.zone_ids.present?
procedures_result = procedures_result.where(hidden_at_as_template: nil)
procedures_result = procedures_result.where(aasm_state: filter.statuses) if filter.statuses.present?
procedures_result = procedures_result.where("tags @> ARRAY[?]::text[]", filter.tags) if filter.tags.present?
procedures_result = procedures_result.where('published_at >= ?', filter.from_publication_date) if filter.from_publication_date.present?

View file

@ -27,6 +27,18 @@ module Manager
redirect_to manager_procedure_path(procedure)
end
def hide_as_template
procedure.hide_as_template!
flash[:notice] = "Démarche non visible dans les modèles."
redirect_to manager_procedure_path(procedure)
end
def unhide_as_template
procedure.unhide_as_template!
flash[:notice] = "Démarche visible dans les modèles."
redirect_to manager_procedure_path(procedure)
end
def discard
procedure.discard_and_keep_track!(current_super_admin)

View file

@ -5,8 +5,9 @@ class DubiousProcedureDashboard < Administrate::BaseDashboard
id: Field::Number,
libelle: Field::String,
dubious_champs: Field::String,
aasm_state: Field::String
aasm_state: Field::String,
hidden_at_as_template: Field::DateTime.with_options(format: "%d/%m/%Y")
}.freeze
COLLECTION_ATTRIBUTES = [:id, :libelle, :dubious_champs, :aasm_state].freeze
COLLECTION_ATTRIBUTES = [:id, :libelle, :dubious_champs, :aasm_state, :hidden_at_as_template].freeze
COLLECTION_FILTERS = {}.freeze
end

View file

@ -31,6 +31,7 @@ class ProcedureDashboard < Administrate::BaseDashboard
hidden_at: Field::DateTime,
closed_at: Field::DateTime,
whitelisted_at: Field::DateTime,
hidden_at_as_template: Field::DateTime,
service: Field::BelongsTo,
initiated_mail_template: MailTemplateField,
received_mail_template: MailTemplateField,
@ -84,6 +85,7 @@ class ProcedureDashboard < Administrate::BaseDashboard
:published_at,
:whitelisted_at,
:hidden_at,
:hidden_at_as_template,
:closed_at,
:unpublished_at,
:published_types_de_champ_public,

View file

@ -2,7 +2,7 @@ class DubiousProcedure
extend ActiveModel::Naming
extend ActiveModel::Translation
attr_accessor :id, :libelle, :dubious_champs, :aasm_state
attr_accessor :id, :libelle, :dubious_champs, :aasm_state, :hidden_at_as_template
FORBIDDEN_KEYWORDS = [
'NIR', 'RNIPP', 'race', 'religion', 'RIB',
@ -19,7 +19,7 @@ class DubiousProcedure
def self.all
procedures_with_forbidden_tdcs_sql = TypeDeChamp
.joins(:procedure)
.select("string_agg(types_de_champ.libelle, ' - ') as dubious_champs, procedures.id as procedure_id, procedures.libelle as procedure_libelle, procedures.aasm_state as procedure_aasm_state")
.select("string_agg(types_de_champ.libelle, ' - ') as dubious_champs, procedures.id as procedure_id, procedures.libelle as procedure_libelle, procedures.aasm_state as procedure_aasm_state, procedures.hidden_at_as_template as procedure_hidden_at_as_template")
.where("unaccent(types_de_champ.libelle) ~* unaccent(?)", forbidden_regexp)
.where(type_champ: [TypeDeChamp.type_champs.fetch(:text), TypeDeChamp.type_champs.fetch(:textarea)])
.where(procedures: { closed_at: nil, whitelisted_at: nil })
@ -33,6 +33,7 @@ class DubiousProcedure
p.dubious_champs = procedure["dubious_champs"]
p.libelle = procedure["procedure_libelle"]
p.aasm_state = procedure["procedure_aasm_state"]
p.hidden_at_as_template = procedure["procedure_hidden_at_as_template"]
p
end
end

View file

@ -540,6 +540,19 @@ class Procedure < ApplicationRecord
whitelisted_at.present?
end
def hidden_as_template?
hidden_at_as_template.present?
end
def hide_as_template!
touch(:hidden_at_as_template)
end
def unhide_as_template!
self.hidden_at_as_template = nil
save
end
def total_dossier
self.dossiers.state_not_brouillon.size
end

View file

@ -42,7 +42,7 @@
%td
%button.fr-icon-add-line.fr-icon--sm.fr-mr-1w.fr-mb-1w.fr-text-action-high--blue-france{ 'aria-hidden': 'true', 'data-expand-target': 'icon' }
%td= admin.email
%td= admin.procedures.count
%td= admin.procedures.size
%td= l(admin.created_at, format: :message_date_without_time)
%tr.hidden{ 'data-expand-target': 'content' }
%td.fr-highlight--beige-gris-galet{ colspan: '6' }

View file

@ -41,6 +41,12 @@ as well as a link to its edit page.
<%= link_to 'whitelister', whitelist_manager_procedure_path(procedure), method: :post, class: 'button' %>
<% end %>
<% if procedure.hidden_as_template? %>
<%= link_to 'autoriser l\'affichage dans les modèles', unhide_as_template_manager_procedure_path(procedure), method: :post, class: 'button' %>
<% else %>
<%= link_to 'masquer l\'affichage dans les modèles', hide_as_template_manager_procedure_path(procedure), method: :post, class: 'button' %>
<% end %>
<% if procedure.can_be_deleted_by_manager? %>
<%= link_to 'Supprimer la démarche', discard_manager_procedure_path(procedure), method: :post, class: 'button', data: { confirm: "Confirmez-vous la suppression de la démarche ?" } %>
<% elsif procedure.discarded? %>