From 2b26600ab5a79dc4846d8ca0fa4123b373b15db6 Mon Sep 17 00:00:00 2001 From: Ken-ichi Ueda Date: Tue, 21 Apr 2015 23:43:35 -0700 Subject: [PATCH] Fixed export email route, project filtering by slug. --- app/controllers/observations_controller.rb | 9 +++++++-- config/locales/en.yml | 1 + config/routes.rb | 2 +- spec/models/observations_export_flow_task_spec.rb | 15 +++++++++++++++ 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/app/controllers/observations_controller.rb b/app/controllers/observations_controller.rb index 3e64a4c419b..c2e6743ee14 100644 --- a/app/controllers/observations_controller.rb +++ b/app/controllers/observations_controller.rb @@ -2233,8 +2233,13 @@ def get_search_params(params, options = {}) @user ||= User.find_by_login(params[:login]) end unless params[:projects].blank? - if p = Project.where(id: params[:projects]) - @projects = p unless p.empty? + @projects = Project.find([params[:projects]].flatten) rescue [] + @projects = @projects.compact + if @projects.blank? + params[:projects].each do |p| + @projects << Project.find(p) rescue nil + end + @projects = @projects.compact end end if (@pcid = params[:pcid]) && @pcid != 'any' diff --git a/config/locales/en.yml b/config/locales/en.yml index d465e53f0b9..878873ea687 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1133,6 +1133,7 @@ en: guide_was_successfully_created: Guide was successfully created. guide_was_successfully_published: Guide was successfully published. guide_was_successfully_updated: Guide was successfully updated. + guidelines: Guidelines has_been: has been has_already_been_flagged_by: has already been flagged by hasnt_contributed_any_observations: hasn't contributed any observations to this project. diff --git a/config/routes.rb b/config/routes.rb index 7da4da5ed44..fd736aa0396 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -167,7 +167,6 @@ get :accumulation get :phylogram get :export - post :email_export get :map end member do @@ -186,6 +185,7 @@ get 'observations/import' => 'observations#import', :as => :import_observations match 'observations/import_photos' => 'observations#import_photos', :as => :import_photos, via: [ :get, :post ] post 'observations/import_sounds' => 'observations#import_sounds', :as => :import_sounds + post 'observations/email_export/:id' => 'observations#email_export', :as => :email_export get 'observations/id_please' => 'observations#id_please', :as => :id_please get 'observations/selector' => 'observations#selector', :as => :observation_selector get '/observations/curation' => 'observations#curation', :as => :curate_observations diff --git a/spec/models/observations_export_flow_task_spec.rb b/spec/models/observations_export_flow_task_spec.rb index a8929fef13f..ac19316a10b 100644 --- a/spec/models/observations_export_flow_task_spec.rb +++ b/spec/models/observations_export_flow_task_spec.rb @@ -49,6 +49,21 @@ JSON.parse(open(File.join(ft.work_path, "#{ft.basename}.json")).read) }.should_not raise_error end + + it "should filter by project" do + u = User.make! + po = make_project_observation + in_project = po.observation + not_in_project = Observation.make! + ft = ObservationsExportFlowTask.make + ft.inputs.build(:extra => {:query => "projects%5B%5D=#{po.project.slug}"}) + ft.save! + ft.run + csv = CSV.open(File.join(ft.work_path, "#{ft.basename}.csv")).to_a + csv.size.should eq 2 + expect( csv.detect{|row| row.detect{|v| v == in_project.id.to_s}} ).not_to be_blank + expect( csv.detect{|row| row.detect{|v| v == not_in_project.id.to_s}} ).to be_blank + end end describe ObservationsExportFlowTask, "geoprivacy" do