commit
dcc109d6c9
19 changed files with 134 additions and 64 deletions
91
.rubocop.yml
91
.rubocop.yml
|
@ -674,15 +674,24 @@ Performance/UnfreezeString:
|
|||
Performance/UriDefaultParser:
|
||||
Enabled: true
|
||||
|
||||
Rails:
|
||||
Enabled: true
|
||||
|
||||
Rails/ActionFilter:
|
||||
Enabled: true
|
||||
|
||||
Rails/ActiveRecordAliases:
|
||||
Enabled: true
|
||||
|
||||
Rails/ActiveRecordCallbacksOrder:
|
||||
Enabled: false
|
||||
|
||||
Rails/ActiveSupportAliases:
|
||||
Enabled: true
|
||||
|
||||
Rails/AfterCommitOverride:
|
||||
Enabled: true
|
||||
|
||||
Rails/ApplicationJob:
|
||||
Enabled: true
|
||||
|
||||
|
@ -692,8 +701,8 @@ Rails/ApplicationRecord:
|
|||
Rails/ApplicationController:
|
||||
Enabled: false
|
||||
|
||||
Rails/RakeEnvironment:
|
||||
Enabled: false
|
||||
Rails/AttributeDefaultBlockValue:
|
||||
Enabled: true
|
||||
|
||||
Rails/Blank:
|
||||
Enabled: true
|
||||
|
@ -739,6 +748,9 @@ Rails/FilePath:
|
|||
Rails/FindBy:
|
||||
Enabled: true
|
||||
|
||||
Rails/FindById:
|
||||
Enabled: true
|
||||
|
||||
Rails/FindEach:
|
||||
Enabled: true
|
||||
|
||||
|
@ -754,12 +766,24 @@ Rails/HttpPositionalArguments:
|
|||
Rails/HttpStatus:
|
||||
Enabled: false
|
||||
|
||||
Rails/Inquiry:
|
||||
Enabled: true
|
||||
|
||||
Rails/InverseOf:
|
||||
Enabled: true
|
||||
|
||||
Rails/LexicallyScopedActionFilter:
|
||||
Enabled: false
|
||||
|
||||
Rails/MailerName:
|
||||
Enabled: true
|
||||
|
||||
Rails/MatchRoute:
|
||||
Enabled: true
|
||||
|
||||
Rails/NegateInclude:
|
||||
Enabled: false
|
||||
|
||||
Rails/NotNullColumn:
|
||||
Enabled: false
|
||||
|
||||
|
@ -769,6 +793,12 @@ Rails/Output:
|
|||
Rails/OutputSafety:
|
||||
Enabled: true
|
||||
|
||||
Rails/Pluck:
|
||||
Enabled: false
|
||||
|
||||
Rails/PluckInWhere:
|
||||
Enabled: true
|
||||
|
||||
Rails/PluralizationGrammar:
|
||||
Enabled: true
|
||||
|
||||
|
@ -778,6 +808,9 @@ Rails/Presence:
|
|||
Rails/Present:
|
||||
Enabled: true
|
||||
|
||||
Rails/RakeEnvironment:
|
||||
Enabled: false
|
||||
|
||||
Rails/ReadWriteAttribute:
|
||||
Enabled: false
|
||||
|
||||
|
@ -790,6 +823,12 @@ Rails/RedundantReceiverInWithOptions:
|
|||
Rails/RelativeDateConstant:
|
||||
Enabled: true
|
||||
|
||||
Rails/RenderInline:
|
||||
Enabled: true
|
||||
|
||||
Rails/RenderPlainText:
|
||||
Enabled: true
|
||||
|
||||
Rails/RequestReferer:
|
||||
Enabled: true
|
||||
|
||||
|
@ -802,9 +841,15 @@ Rails/SaveBang:
|
|||
Rails/ScopeArgs:
|
||||
Enabled: true
|
||||
|
||||
Rails/ShortI18n:
|
||||
Enabled: true
|
||||
|
||||
Rails/SkipsModelValidations:
|
||||
Enabled: false
|
||||
|
||||
Rails/SquishedSQLHeredocs:
|
||||
Enabled: true
|
||||
|
||||
Rails/TimeZone:
|
||||
EnforcedStyle: strict
|
||||
|
||||
|
@ -820,7 +865,13 @@ Rails/UnknownEnv:
|
|||
Rails/Validation:
|
||||
Enabled: true
|
||||
|
||||
Rails:
|
||||
Rails/WhereEquals:
|
||||
Enabled: true
|
||||
|
||||
Rails/WhereExists:
|
||||
Enabled: true
|
||||
|
||||
Rails/WhereNot:
|
||||
Enabled: true
|
||||
|
||||
RSpec/Focused:
|
||||
|
@ -1323,37 +1374,3 @@ Style/YodaCondition:
|
|||
Style/ZeroLengthPredicate:
|
||||
Enabled: true
|
||||
|
||||
Rails/ActiveRecordCallbacksOrder:
|
||||
Enabled: false
|
||||
Rails/AfterCommitOverride:
|
||||
Enabled: true
|
||||
Rails/AttributeDefaultBlockValue:
|
||||
Enabled: true
|
||||
Rails/FindById:
|
||||
Enabled: true
|
||||
Rails/Inquiry:
|
||||
Enabled: true
|
||||
Rails/MailerName:
|
||||
Enabled: true
|
||||
Rails/MatchRoute:
|
||||
Enabled: true
|
||||
Rails/NegateInclude:
|
||||
Enabled: false
|
||||
Rails/Pluck:
|
||||
Enabled: false
|
||||
Rails/PluckInWhere:
|
||||
Enabled: true
|
||||
Rails/RenderInline:
|
||||
Enabled: true
|
||||
Rails/RenderPlainText:
|
||||
Enabled: true
|
||||
Rails/ShortI18n:
|
||||
Enabled: true
|
||||
Rails/SquishedSQLHeredocs:
|
||||
Enabled: true
|
||||
Rails/WhereEquals:
|
||||
Enabled: true
|
||||
Rails/WhereExists:
|
||||
Enabled: true
|
||||
Rails/WhereNot:
|
||||
Enabled: true
|
||||
|
|
|
@ -29,9 +29,8 @@ footer {
|
|||
@extend %horizontal-list-item;
|
||||
font-size: 14px;
|
||||
vertical-align: top;
|
||||
flex-grow: 1;
|
||||
flex: 0 0 33.333333%;
|
||||
min-width: 280px;
|
||||
margin: 0 20px;
|
||||
margin-bottom: 30px;
|
||||
|
||||
@media (max-width: 550px) {
|
||||
|
@ -68,19 +67,12 @@ footer {
|
|||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.footer-logo-dinum {
|
||||
@include ie-compatible-background-image("footer/logo-dinum.png");
|
||||
|
||||
height: 150px;
|
||||
width: 202px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.footer-logo-beta-gouv-fr {
|
||||
@include ie-compatible-background-image("footer/logo-beta-gouv-fr.svg");
|
||||
|
||||
width: 150px;
|
||||
height: 25px;
|
||||
margin-top: 14px;
|
||||
}
|
||||
|
||||
.footer-logo-france {
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
@import "colors";
|
||||
@import "constants";
|
||||
|
||||
$dark-grey: #333333;
|
||||
$light-grey: #999999;
|
||||
|
||||
|
@ -152,6 +154,7 @@ $big-number-card-padding: 2 * $segmented-control-item-border-radius;
|
|||
|
||||
.big-number-card-detail {
|
||||
display: block;
|
||||
margin-top: $default-padding;
|
||||
text-align: center;
|
||||
color: $blue-france-500;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ class Cron::PurgeManagerAdministrateurSessionsJob < Cron::CronJob
|
|||
self.schedule_expression = "every day at 3 am"
|
||||
|
||||
def perform
|
||||
AdministrateursProcedure.where(manager: true).destroy_all
|
||||
# TODO: add id column to administrateurs_procedures and use destroy_all
|
||||
AdministrateursProcedure.where(manager: true).delete_all
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,7 +12,7 @@ class TitreIdentiteWatermarkJob < ApplicationJob
|
|||
|
||||
MAX_IMAGE_SIZE = 1500
|
||||
SCALE = 0.9
|
||||
WATERMARK = Rails.root.join("app/assets/images/#{WATERMARK_FILE}")
|
||||
WATERMARK = URI.parse(WATERMARK_FILE).is_a?(URI::HTTP) ? WATERMARK_FILE : Rails.root.join("app/assets/images/#{WATERMARK_FILE}")
|
||||
|
||||
def perform(blob)
|
||||
if blob.virus_scanner.pending? then raise FileNotScannedYetError end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#footer
|
||||
%p{ class: "copyright col-md-push-#{12-main_container_size} col-md-#{main_container_size} col-lg-push-#{12-main_container_size} col-lg-#{main_container_size} text-muted small" }
|
||||
= link_to 'DINUM', 'https://www.numerique.gouv.fr/dinum/'
|
||||
= link_to PROVIDER_NAME, PROVIDER_URL
|
||||
= Time.zone.now.year
|
||||
\-
|
||||
= link_to 'Nouveautés', DOC_NOUVEAUTES_URL, target: '_blank'
|
||||
|
|
|
@ -145,7 +145,7 @@
|
|||
<tr>
|
||||
<td style="word-wrap:break-word;font-size:0px;padding:0px 20px 0px 20px;padding-top:0px;padding-bottom:0px;" align="center">
|
||||
<div class="" style="cursor:auto;color:#55575d;font-family:Helvetica, Arial, sans-serif;font-size:11px;line-height:22px;text-align:center;">
|
||||
<%= "#{APPLICATION_NAME}" %> est un service fourni par la DINUM
|
||||
<%= "#{APPLICATION_NAME}" %> est un service fourni par <%= PROVIDED_BY %>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -5,12 +5,13 @@
|
|||
%li.footer-column
|
||||
%ul.footer-logos
|
||||
%li.footer-text
|
||||
Un service fourni par la
|
||||
= link_to "DINUM", "https://numerique.gouv.fr/", title: "Direction Interministérielle au Numérique"
|
||||
Un service fourni par
|
||||
= link_to PROVIDED_BY, PROVIDER_URL, title: PROVIDER_TITLE
|
||||
%br
|
||||
%li
|
||||
= link_to "https://numerique.gouv.fr/", title: "DINUM", 'aria-label': 'DINUM' do
|
||||
%span.footer-logo.footer-logo-dinum{ role: 'img', 'aria-label': 'Logo DINUM' }
|
||||
= link_to PROVIDER_URL, title: PROVIDER_NAME, 'aria-label': PROVIDER_NAME do
|
||||
%span.footer-logo{ role: 'img', 'aria-label': PROVIDER_LOGO_ALT }
|
||||
= image_tag PROVIDER_LOGO_SRC, alt: PROVIDER_LOGO_ALT, width: PROVIDER_LOGO_WIDTH, height: PROVIDER_LOGO_HEIGHT, loading: 'lazy'
|
||||
= link_to "https://beta.gouv.fr", title: "le site de Beta.gouv.fr", 'aria-label': 'beta.gouv.fr' do
|
||||
%span.footer-logo.footer-logo-beta-gouv-fr{ role: 'img', 'aria-label': 'Logo beta.gouv.fr' }
|
||||
|
||||
|
|
|
@ -89,3 +89,13 @@ DS_ENV="staging"
|
|||
|
||||
# Admins and instructeurs can freely change their email to these domains
|
||||
# LEGIT_ADMIN_DOMAINS = "domaine_1.com;domaine_2.com"
|
||||
|
||||
# Instance provider
|
||||
# PROVIDED_BY="la DINUM"
|
||||
# PROVIDER_NAME="DINUM"
|
||||
# PROVIDER_TITLE="Direction Interministérielle au Numérique"
|
||||
# PROVIDER_URL="https://numerique.gouv.fr/"
|
||||
# PROVIDER_LOGO_SRC="footer/logo-dinum.png"
|
||||
# PROVIDER_LOGO_ALT="Logo DINUM"
|
||||
# PROVIDER_LOGO_HEIGHT="161"
|
||||
# PROVIDER_LOGO_WIDTH="138"
|
||||
|
|
10
config/initializers/provider.rb
Normal file
10
config/initializers/provider.rb
Normal file
|
@ -0,0 +1,10 @@
|
|||
# Instance provider
|
||||
PROVIDED_BY = ENV.fetch("PROVIDED_BY", "la DINUM")
|
||||
PROVIDER_NAME = ENV.fetch("PROVIDER_NAME", "DINUM")
|
||||
PROVIDER_TITLE = ENV.fetch("PROVIDER_TITLE", "Direction Interministérielle au Numérique")
|
||||
PROVIDER_URL = ENV.fetch("PROVIDER_URL", "https://numerique.gouv.fr/")
|
||||
|
||||
PROVIDER_LOGO_SRC = ENV.fetch("PROVIDER_LOGO_SRC", "footer/logo-dinum.png")
|
||||
PROVIDER_LOGO_ALT = ENV.fetch("PROVIDER_LOGO_ALT", "Logo DINUM")
|
||||
PROVIDER_LOGO_HEIGHT = ENV.fetch("PROVIDER_LOGO_HEIGHT", "161")
|
||||
PROVIDER_LOGO_WIDTH = ENV.fetch("PROVIDER_LOGO_WIDTH", "138")
|
|
@ -446,7 +446,7 @@ en:
|
|||
procedures:
|
||||
stats:
|
||||
usual_processing_time: "Usual processing time"
|
||||
processing_time_description: "%{percentile}% of submitted files in the last %{span} days were processed in less than %{days} days."
|
||||
processing_time_description: "%{percentile}% of submitted files in the last %{span} days were processed in less than %{days}."
|
||||
processing_time: "Processing time"
|
||||
since_procedure_creation: "since the procedure was created"
|
||||
nb_days: "Nb Days"
|
||||
|
|
|
@ -487,7 +487,7 @@ fr:
|
|||
procedures:
|
||||
stats:
|
||||
usual_processing_time: "Temps de traitement usuel"
|
||||
processing_time_description: "%{percentile}% des demandes des %{span} derniers jours ont été traitées en moins de %{days} jours."
|
||||
processing_time_description: "%{percentile}% des demandes des %{span} derniers jours ont été traitées en moins de %{days}."
|
||||
processing_time: "Temps de traitement"
|
||||
since_procedure_creation: "depuis le lancement de la démarche"
|
||||
nb_days: "Nb Jours"
|
||||
|
|
|
@ -83,11 +83,11 @@ development:
|
|||
|
||||
test:
|
||||
<<: *defaults
|
||||
secret_key_base: aa52abc3f3a629d04a61e9899a24c12f52b24c679cbf45f8ec0cdcc64ab9526d673adca84212882dff3911ac98e0c32ec4729ca7b3429ba18ef4dfd1bd18bc7a
|
||||
encryption_service_salt: QUDyMoXyw2YXU8pHnpts3w9MyMpsMQ6BgP62obgCf7PQv
|
||||
otp_secret_key: 78ddda3679dc0ba2c99f50bcff04f49d862358dbeb7ead50368fdd6de14392be884ee10a204a0375b4b382e1a842fafe40d7858b7ab4796ec3a67c518d31112b
|
||||
secret_key_base: aa52abc3f3a629d04a61e9899a24c12f52b24c679cbf45f8ec0cdcc64ab9526d673adca84212882dff3911ac98e0c32ec4729ca7b3429ba18ef4dfd1bd18bc7a # ggignore
|
||||
encryption_service_salt: QUDyMoXyw2YXU8pHnpts3w9MyMpsMQ6BgP62obgCf7PQv # ggignore
|
||||
otp_secret_key: 78ddda3679dc0ba2c99f50bcff04f49d862358dbeb7ead50368fdd6de14392be884ee10a204a0375b4b382e1a842fafe40d7858b7ab4796ec3a67c518d31112b # ggignore
|
||||
api_entreprise:
|
||||
key: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ik9oIHllYWgiLCJpYXQiOjE1MTYyMzkwMjJ9.f06sBo3q2Yxnw_TYPFUEs0CozBmcV-XniH_DeKNWzKE"
|
||||
key: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ik9oIHllYWgiLCJpYXQiOjE1MTYyMzkwMjJ9.f06sBo3q2Yxnw_TYPFUEs0CozBmcV-XniH_DeKNWzKE" # ggignore
|
||||
pipedrive:
|
||||
key: pipedrive_test_key
|
||||
france_connect_particulier:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
namespace :after_party do
|
||||
desc 'Deployment task: backfill_experts_procedure_id_on_avis_table'
|
||||
task backfill_experts_procedure_id_on_avis_table: :environment do
|
||||
puts "Running deploy task 'backfill_experts_procedure_id_on_avis_table'"
|
||||
task backfill_experts_procedure_id_on_avis_table_again: :environment do
|
||||
puts "Running deploy task 'backfill_experts_procedure_id_on_avis_table_again'"
|
||||
|
||||
without_instructeur = Avis.where(experts_procedure_id: nil, instructeur_id: nil).where.not(email: nil)
|
||||
with_instructeur = Avis.where(experts_procedure_id: nil, email: nil).where.not(instructeur_id: nil)
|
||||
|
|
|
@ -5,6 +5,9 @@ namespace :after_party do
|
|||
|
||||
BATCH_SIZE = 20_000
|
||||
|
||||
ignored_columns = Dossier.ignored_columns.dup
|
||||
Dossier.ignored_columns -= ["en_construction_conservation_extension"]
|
||||
|
||||
dossiers = Dossier.state_en_construction.where.not(en_construction_conservation_extension: 0.days)
|
||||
progress = ProgressReport.new((dossiers.count.to_f / BATCH_SIZE).round)
|
||||
dossiers.in_batches(of: BATCH_SIZE) do |relation|
|
||||
|
@ -13,6 +16,8 @@ namespace :after_party do
|
|||
end
|
||||
progress.finish
|
||||
|
||||
Dossier.ignored_columns = ignored_columns
|
||||
|
||||
dossiers_without_conservation_extension = Dossier.where(conservation_extension: nil)
|
||||
progress = ProgressReport.new((dossiers_without_conservation_extension.count.to_f / BATCH_SIZE).round)
|
||||
dossiers_without_conservation_extension.in_batches(of: BATCH_SIZE) do |relation|
|
||||
|
|
|
@ -164,7 +164,7 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
|
|||
it { expect(gi_1_2.dossiers.with_discarded.count).to be(2) }
|
||||
it { expect(gi_1_2.dossiers.last.id).to be(dossier12.id) }
|
||||
it { expect(dossier12.groupe_instructeur.id).to be(gi_1_2.id) }
|
||||
it { expect(bulk_message.groupe_instructeurs).to eq([gi_1_2, gi_1_3]) }
|
||||
it { expect(bulk_message.groupe_instructeurs).to contain_exactly(gi_1_2, gi_1_3) }
|
||||
end
|
||||
|
||||
describe 'when the target group is not a possible group' do
|
||||
|
|
|
@ -149,6 +149,7 @@ describe FranceConnect::ParticulierController, type: :controller do
|
|||
RSpec.shared_examples "a method that needs a valid merge token" do
|
||||
context 'when the merge token is invalid' do
|
||||
before do
|
||||
stub_const("APPLICATION_NAME", "demarches-simplifiees.fr")
|
||||
merge_token
|
||||
fci.update(merge_token_created_at: 2.years.ago)
|
||||
end
|
||||
|
@ -181,6 +182,10 @@ describe FranceConnect::ParticulierController, type: :controller do
|
|||
context 'when the merge token does not exist' do
|
||||
let(:merge_token) { 'i do not exist' }
|
||||
|
||||
before do
|
||||
stub_const("APPLICATION_NAME", "demarches-simplifiees.fr")
|
||||
end
|
||||
|
||||
it do
|
||||
expect(subject).to redirect_to root_path
|
||||
expect(flash.alert).to eq("Le délai pour fusionner les comptes FranceConnect et demarches-simplifiees.fr est expirée. Veuillez recommencer la procédure pour vous fusionner les comptes.")
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
RSpec.describe Cron::PurgeManagerAdministrateurSessionsJob, type: :job do
|
||||
describe 'perform' do
|
||||
let(:administrateur) { create(:administrateur) }
|
||||
let(:procedure) { create(:procedure) }
|
||||
|
||||
subject { Cron::PurgeManagerAdministrateurSessionsJob.perform_now }
|
||||
|
||||
context "with an inactive administrateur" do
|
||||
before do
|
||||
AdministrateursProcedure.create(procedure: procedure, administrateur: administrateur, manager: true)
|
||||
expect(AdministrateursProcedure.where(manager: true).count).to eq(1)
|
||||
expect(AdministrateursProcedure.count).to eq(2)
|
||||
subject
|
||||
end
|
||||
|
||||
it {
|
||||
expect(AdministrateursProcedure.where(manager: true).count).to eq(0)
|
||||
expect(AdministrateursProcedure.count).to eq(1)
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
|
@ -10,6 +10,10 @@ describe 'Inviting an expert:', js: true do
|
|||
let(:dossier) { create(:dossier, :en_construction, :with_dossier_link, procedure: procedure) }
|
||||
let(:linked_dossier) { Dossier.find_by(id: dossier.reload.champs.filter(&:dossier_link?).filter_map(&:value)) }
|
||||
|
||||
before do
|
||||
clear_emails
|
||||
end
|
||||
|
||||
context 'as an Instructeur' do
|
||||
scenario 'I can invite an expert' do
|
||||
allow(ClamavService).to receive(:safe_file?).and_return(true)
|
||||
|
|
Loading…
Reference in a new issue