diff --git a/app/controllers/champs/carte_controller.rb b/app/controllers/champs/carte_controller.rb
index d3a7dbb38..857970ac2 100644
--- a/app/controllers/champs/carte_controller.rb
+++ b/app/controllers/champs/carte_controller.rb
@@ -14,7 +14,7 @@ class Champs::CarteController < ApplicationController
@champ = Champ
.joins(:dossier)
.where(dossiers: { user_id: logged_user_ids })
- .find_by(id: params[:champ_id])
+ .find(params[:champ_id])
else
@champ = Champs::CarteChamp.new(type_de_champ: TypeDeChamp.new(
type_champ: TypeDeChamp.type_champs.fetch(:carte),
@@ -30,6 +30,8 @@ class Champs::CarteController < ApplicationController
if geo_json.first == ["error", "TooManyPolygons"]
@error = true
+ @champ.value = nil
+ @champ.geo_areas = []
elsif geo_json.present?
if @champ.cadastres?
cadastres = ModuleApiCartoService.generate_cadastre(geo_json)
@@ -54,13 +56,13 @@ class Champs::CarteController < ApplicationController
parcelle_agricole
end
end
- end
- @champ.geo_areas = geo_areas.map do |geo_area|
- GeoArea.new(geo_area)
- end
+ @champ.geo_areas = geo_areas.map do |geo_area|
+ GeoArea.new(geo_area)
+ end
- @champ.value = geo_json.to_json
+ @champ.value = geo_json.to_json
+ end
if @champ.persisted?
@champ.save
diff --git a/app/controllers/manager/procedures_controller.rb b/app/controllers/manager/procedures_controller.rb
index 4035c968c..6dd920f94 100644
--- a/app/controllers/manager/procedures_controller.rb
+++ b/app/controllers/manager/procedures_controller.rb
@@ -17,5 +17,12 @@ module Manager
end
redirect_to manager_procedure_path(procedure)
end
+
+ def hide
+ procedure = Procedure.find(params[:id])
+ procedure.hide!
+ flash[:notice] = "La démarche a bien été supprimée, en cas d'erreur contactez un développeur."
+ redirect_to manager_procedure_path(procedure)
+ end
end
end
diff --git a/app/uploaders/piece_justificative_uploader.rb b/app/uploaders/piece_justificative_uploader.rb
index f4fb1ce67..62cdb6c40 100644
--- a/app/uploaders/piece_justificative_uploader.rb
+++ b/app/uploaders/piece_justificative_uploader.rb
@@ -25,9 +25,9 @@ class PieceJustificativeUploader < BaseUploader
def filename
if original_filename.present? || model.content_secure_token
if Flipflop.remote_storage?
- filename = "#{model.class.to_s.underscore}-#{secure_token}.#{file.extension.downcase}"
+ filename = "#{model.class.to_s.underscore}-#{secure_token}.#{file.extension&.downcase}"
else
- filename = "#{model.class.to_s.underscore}.#{file.extension.downcase}"
+ filename = "#{model.class.to_s.underscore}.#{file.extension&.downcase}"
end
end
filename
diff --git a/app/views/fields/mail_template_field/_show.html.haml b/app/views/fields/mail_template_field/_show.html.haml
index e505a4989..47ffac191 100644
--- a/app/views/fields/mail_template_field/_show.html.haml
+++ b/app/views/fields/mail_template_field/_show.html.haml
@@ -1,7 +1,7 @@
%strong Sujet
-%pre
+%pre{ style: "white-space: pre-wrap;" }
= field.data.subject
%strong Corps
-%pre
+%pre{ style: "white-space: pre-wrap;" }
= field.data.body
diff --git a/app/views/manager/procedures/show.html.erb b/app/views/manager/procedures/show.html.erb
index deb79a1f3..8985c02a0 100644
--- a/app/views/manager/procedures/show.html.erb
+++ b/app/views/manager/procedures/show.html.erb
@@ -40,6 +40,8 @@ as well as a link to its edit page.
<% if procedure.publiee? && procedure.dossiers.empty? %>
<%= link_to 'passer en brouillon', draft_manager_procedure_path(procedure), method: :post, class: 'button' %>
<% end %>
+
+ <%= link_to 'supprimer la démarche', hide_manager_procedure_path(procedure), method: :post, class: 'button', data: { confirm: "Confirmez-vous la suppression de la démarche ?" } %>
diff --git a/config/environments/development.rb b/config/environments/development.rb
index f600e1bba..4dfddc69c 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -46,6 +46,13 @@ Rails.application.configure do
# Action Mailer settings
config.action_mailer.delivery_method = :letter_opener_web
+ # Configure default root URL for generating URLs to routes
+ config.action_mailer.default_url_options = {
+ host: 'localhost',
+ port: 3000
+ }
+ # Configure default root URL for email assets
+ config.action_mailer.asset_host = "http://" + ENV['APP_HOST']
Rails.application.routes.default_url_options = {
host: 'localhost',
diff --git a/config/environments/production.rb b/config/environments/production.rb
index b79e63fbb..07e86f837 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -81,10 +81,13 @@ Rails.application.configure do
config.action_mailer.delivery_method = :mailjet
end
+ # Configure default root URL for generating URLs to routes
config.action_mailer.default_url_options = {
protocol: :https,
host: ENV['APP_HOST']
}
+ # Configure default root URL for email assets
+ config.action_mailer.asset_host = "https://" + ENV['APP_HOST']
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation cannot be found).
diff --git a/config/routes.rb b/config/routes.rb
index 7ca89638c..cf427f12d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -9,6 +9,7 @@ Rails.application.routes.draw do
resources :procedures, only: [:index, :show] do
post 'whitelist', on: :member
post 'draft', on: :member
+ post 'hide', on: :member
end
resources :dossiers, only: [:index, :show] do
diff --git a/public/robots.txt b/public/robots.txt
index 3c9c7c01f..257836137 100644
--- a/public/robots.txt
+++ b/public/robots.txt
@@ -1,5 +1,5 @@
# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
#
# To ban all spiders from the entire site uncomment the next two lines:
-# User-agent: *
-# Disallow: /
+User-agent: *
+Disallow: /commencer*
diff --git a/spec/controllers/champs/carte_controller_spec.rb b/spec/controllers/champs/carte_controller_spec.rb
index 9a9d56896..267f6d3b2 100644
--- a/spec/controllers/champs/carte_controller_spec.rb
+++ b/spec/controllers/champs/carte_controller_spec.rb
@@ -15,10 +15,11 @@ describe Champs::CarteController, type: :controller do
champ_id: champ.id
}
end
+ let(:geojson) { [] }
let(:champ) do
create(:type_de_champ_carte, options: {
quartiers_prioritaires: true
- }).champ.create(dossier: dossier)
+ }).champ.create(dossier: dossier, value: geojson.to_json)
end
describe 'POST #show' do
@@ -46,5 +47,15 @@ describe Champs::CarteController, type: :controller do
it { expect(response.body).to include('MultiPolygon') }
it { expect(response.body).to include('[2.38715792094576,48.8723062632126]') }
end
+
+ context 'when error' do
+ let(:geojson) { [[{ "lat": 48.87442541960633, "lng": 2.3859214782714844 }, { "lat": 48.87273183590832, "lng": 2.3850631713867183 }, { "lat": 48.87081237174292, "lng": 2.3809432983398438 }, { "lat": 48.8712640169951, "lng": 2.377510070800781 }, { "lat": 48.87510283703279, "lng": 2.3778533935546875 }, { "lat": 48.87544154230615, "lng": 2.382831573486328 }, { "lat": 48.87442541960633, "lng": 2.3859214782714844 }]] }
+ let(:selection) { { error: "TooManyPolygons" } }
+
+ it {
+ expect(champ.reload.value).to eq(nil)
+ expect(champ.reload.geo_areas).to eq([])
+ }
+ end
end
end
diff --git a/spec/mailers/dossier_mailer_spec.rb b/spec/mailers/dossier_mailer_spec.rb
index d98dfb4ea..eaec0fc93 100644
--- a/spec/mailers/dossier_mailer_spec.rb
+++ b/spec/mailers/dossier_mailer_spec.rb
@@ -9,7 +9,7 @@ RSpec.describe DossierMailer, type: :mailer do
subject { described_class.notify_new_draft(dossier) }
it { expect(subject.subject).to include("brouillon") }
- it { expect(subject.subject).to include(dossier.id.to_s) }
+ it { expect(subject.subject).to include(dossier.procedure.libelle) }
it { expect(subject.body).to include(dossier.procedure.libelle) }
it { expect(subject.body).to include(dossier_url(dossier)) }
end
diff --git a/spec/uploaders/piece_justificative_uploader_spec.rb b/spec/uploaders/piece_justificative_uploader_spec.rb
new file mode 100644
index 000000000..61078c3c6
--- /dev/null
+++ b/spec/uploaders/piece_justificative_uploader_spec.rb
@@ -0,0 +1,14 @@
+require 'spec_helper'
+
+describe PieceJustificativeUploader do
+ let(:pj) { create(:piece_justificative, :rib) }
+
+ it { expect(pj.content.filename).to eq 'piece_justificative.pdf' }
+
+ context 'when extension is nil' do
+ it do
+ expect(pj.content.file).to receive(:extension).and_return(nil)
+ expect(pj.content.filename).to eq 'piece_justificative.'
+ end
+ end
+end