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