Class: TaxonNamesController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- TaxonNamesController
- Defined in:
- app/controllers/taxon_names_controller.rb
Constant Summary
Constants included from ProjectsHelper
ProjectsHelper::CLASSIFIER, ProjectsHelper::CLASSIFIER_ANNOTATION
Instance Method Summary collapse
-
#api_catalog ⇒ Object
GET /api/v1/taxon_names/:id/inventory/catalog Contains stats block.
-
#api_index ⇒ Object
GET /api/v1/taxon_names.
- #api_origin_citation ⇒ Object
- #api_parse ⇒ Object
-
#api_show ⇒ Object
GET /api/v1/taxon_names/:id.
-
#api_summary ⇒ Object
GET /api/v1/taxon_names/:id/inventory/summary.
- #autocomplete ⇒ Object
- #autocomplete_params ⇒ Object private
- #batch_load ⇒ Object
- #batch_params ⇒ Object private
-
#batch_update ⇒ Object
PATCH /taxon_names/batch_update.json?taxon_names_query=<>&taxon_name=taxon_name_id=123}.
-
#create ⇒ Object
POST /taxon_names POST /taxon_names.json.
- #create_nomen_batch_load ⇒ Object
- #create_simple_batch_load ⇒ Object
-
#destroy ⇒ Object
DELETE /taxon_names/1 DELETE /taxon_names/1.json.
-
#download ⇒ Object
GET /taxon_names/download.
-
#edit ⇒ Object
GET /taxon_names/1/edit.
-
#index ⇒ Object
GET /taxon_names GET /taxon_names.json.
- #list ⇒ Object
-
#new ⇒ Object
GET /taxon_names/new.
-
#origin_citation ⇒ Object
GET /api/v1/taxon_names.
-
#original_combination ⇒ Object
GET /taxon_names/1/original_combination.
- #parse ⇒ Object
- #predicted_rank ⇒ Object
- #preview_nomen_batch_load ⇒ Object
- #preview_simple_batch_load ⇒ Object
- #random ⇒ Object
- #rank_table ⇒ Object
- #ranks ⇒ Object
- #search ⇒ Object
-
#select_options ⇒ Object
GET /taxon_names/select_options.
- #set_taxon_name ⇒ Object private
-
#show ⇒ Object
GET /taxon_names/1 GET /taxon_names/1.json.
- #taxon_name_params ⇒ Object private
-
#update ⇒ Object
PATCH/PUT /taxon_names/1 PATCH/PUT /taxon_names/1.json.
Methods included from DataControllerConfiguration::ProjectDataControllerConfiguration
Methods included from RedirectHelper
Methods included from RequestType
Methods included from LogRecent
Methods included from Cookies
#digest_cookie, #digested_cookie_exists?
Methods included from Whitelist
Methods included from ProjectsHelper
#cumulative_gb_per_year, #document_cumulative_gb_per_year, #document_gb_per_year, #gb_per_year, #image_cumulative_gb_per_year, #image_gb_per_year, #invalid_object, #project_classification, #project_link, #project_matches, #project_tag, #projects_list, #projects_search_form, #taxonworks_classification, #week_in_review_graphs
Methods included from Api::Intercept
Methods included from TokenAuthentication
#intercept_project, #intercept_user, #intercept_user_or_project, #project_token_authenticate, #token_authenticate
Instance Method Details
#api_catalog ⇒ Object
GET /api/v1/taxon_names/:id/inventory/catalog Contains stats block
275 276 277 278 |
# File 'app/controllers/taxon_names_controller.rb', line 275 def api_catalog @data = helpers.recursive_catalog_json(taxon_name: @taxon_name, target_depth: params[:target_depth] || 0 ) render '/taxon_names/api/v1/catalog' end |
#api_index ⇒ Object
GET /api/v1/taxon_names
243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
# File 'app/controllers/taxon_names_controller.rb', line 243 def api_index q = ::Queries::TaxonName::Filter.new(params.merge!(api: true)).all .where(project_id: sessions_current_project_id) .order('taxon_names.id') respond_to do |format| format.json { @taxon_names = q.page(params[:page]).per(params[:per]) render '/taxon_names/api/v1/index' } format.csv { @taxon_names = q send_data Export::CSV.generate_csv( @taxon_names, exclude_columns: %w{updated_by_id created_by_id project_id}, ), type: 'text', filename: "taxon_names_#{DateTime.now}.tsv" } end end |
#api_origin_citation ⇒ Object
310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 |
# File 'app/controllers/taxon_names_controller.rb', line 310 def api_origin_citation q = ::Queries::TaxonName::Filter.new(params).all .where(project_id: sessions_current_project_id) .order('taxon_names.id') respond_to do |format| format.json { @taxon_names = q.page(params[:page]).per(params[:per]) render '/taxon_names/origin_citation' } format.csv { @taxon_names = q send_data Export::CSV::TaxonNameOrigin.csv( @taxon_names, ).read, type: 'text', filename: "taxon_name_origin_citation_#{DateTime.now}.tsv" } end end |
#api_parse ⇒ Object
280 281 282 283 284 285 286 287 288 |
# File 'app/controllers/taxon_names_controller.rb', line 280 def api_parse @combination = Combination.where(project_id: sessions_current_project_id).find(params[:combination_id]) if params[:combination_id] @result = Vendor::Biodiversity::Result.new( query_string: params.require(:query_string), project_id: sessions_current_project_id, code: :iczn # !! TODO: generalize ).result render '/taxon_names/api/v1/parse' end |
#api_show ⇒ Object
GET /api/v1/taxon_names/:id
264 265 266 |
# File 'app/controllers/taxon_names_controller.rb', line 264 def api_show render '/taxon_names/api/v1/show' end |
#api_summary ⇒ Object
GET /api/v1/taxon_names/:id/inventory/summary
269 270 271 |
# File 'app/controllers/taxon_names_controller.rb', line 269 def api_summary render '/taxon_names/api/v1/summary' end |
#autocomplete ⇒ Object
94 95 96 97 98 99 100 101 |
# File 'app/controllers/taxon_names_controller.rb', line 94 def autocomplete render json: {} and return if params[:term].blank? @taxon_names = ::Queries::TaxonName::Autocomplete.new( params[:term], exact: 'true', **autocomplete_params ).autocomplete end |
#autocomplete_params ⇒ Object (private)
336 337 338 339 340 341 |
# File 'app/controllers/taxon_names_controller.rb', line 336 def autocomplete_params params.permit( :valid, :exact, :no_leaves, type: [], parent_id: [], nomenclature_group: [] ).to_h.symbolize_keys.merge(project_id: sessions_current_project_id) end |
#batch_load ⇒ Object
114 115 |
# File 'app/controllers/taxon_names_controller.rb', line 114 def batch_load end |
#batch_params ⇒ Object (private)
363 364 365 366 367 368 369 370 371 372 373 |
# File 'app/controllers/taxon_names_controller.rb', line 363 def batch_params params.permit( :file, :parent_taxon_name_id, :nomenclature_code, :also_create_otu, :import_level).merge( user_id: sessions_current_user_id, project_id: sessions_current_project_id ).to_h.symbolize_keys end |
#batch_update ⇒ Object
PATCH /taxon_names/batch_update.json?taxon_names_query=<>&taxon_name=taxon_name_id=123}
230 231 232 233 234 235 236 237 238 239 240 |
# File 'app/controllers/taxon_names_controller.rb', line 230 def batch_update if r = Protonym.batch_update( preview: params[:preview], taxon_name: taxon_name_params.merge(by: sessions_current_user_id), taxon_name_query: params[:taxon_name_query].merge(by: sessions_current_user_id), ) render json: r.to_json, status: :ok else render json: {}, status: :unprocessable_entity end end |
#create ⇒ Object
POST /taxon_names POST /taxon_names.json
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'app/controllers/taxon_names_controller.rb', line 39 def create @taxon_name = TaxonName.new(taxon_name_params) respond_to do |format| if @taxon_name.save format.html { redirect_to url_for(@taxon_name.), notice: "Taxon name '#{@taxon_name.name}' was successfully created." } format.json { render :show, status: :created, location: @taxon_name. } else format.html { render action: :new } format.json { render json: @taxon_name.errors, status: :unprocessable_entity } end end end |
#create_nomen_batch_load ⇒ Object
201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
# File 'app/controllers/taxon_names_controller.rb', line 201 def create_nomen_batch_load if params[:file] && (params[:file].tempfile, :nomen_taxon_names_md5) @result = BatchLoad::Import::TaxonNames::NomenInterpreter.new(**batch_params) if @result.create flash[:notice] = "Successfully proccessed file, #{@result.total_records_created} items were created." render 'taxon_names/batch_load/nomen/create' and return else flash[:alert] = 'Batch import failed.' end else flash[:alert] = 'File to batch upload must be supplied.' end render :batch_load end |
#create_simple_batch_load ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'app/controllers/taxon_names_controller.rb', line 173 def create_simple_batch_load if params[:file] && (params[:file].tempfile, :simple_taxon_names_md5) @result = BatchLoad::Import::TaxonifiToTaxonworks.new(**batch_params) if @result.create flash[:notice] = "Successfully proccessed file, #{@result.total_records_created} taxon names were created." render 'taxon_names/batch_load/simple/create' and return else flash[:alert] = 'Batch import failed.' end else flash[:alert] = 'File to batch upload must be supplied.' end render :batch_load end |
#destroy ⇒ Object
DELETE /taxon_names/1 DELETE /taxon_names/1.json
73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'app/controllers/taxon_names_controller.rb', line 73 def destroy @taxon_name.destroy respond_to do |format| if @taxon_name.destroyed? format.html { destroy_redirect @taxon_name, notice: 'TaxonName was successfully destroyed.' } format.json { head :no_content } else format.html { destroy_redirect @taxon_name, notice: 'TaxonName was not destroyed, ' + @taxon_name.errors..join('; ') } format.json { render json: @taxon_name.errors, status: :unprocessable_entity } end end end |
#download ⇒ Object
GET /taxon_names/download
108 109 110 111 112 |
# File 'app/controllers/taxon_names_controller.rb', line 108 def download send_data Export::CSV.generate_csv( TaxonName.where(project_id: sessions_current_project_id) ), type: 'text', filename: "taxon_names_#{DateTime.now}.tsv" end |
#edit ⇒ Object
GET /taxon_names/1/edit
34 35 |
# File 'app/controllers/taxon_names_controller.rb', line 34 def edit end |
#index ⇒ Object
GET /taxon_names GET /taxon_names.json
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'app/controllers/taxon_names_controller.rb', line 9 def index respond_to do |format| format.html do @recent_objects = TaxonName.recent_from_project_id(sessions_current_project_id).order(updated_at: :desc).limit(10) render '/shared/data/all/index' end format.json { @taxon_names = ::Queries::TaxonName::Filter.new(params).all .page(params[:page]) .per(params[:per]) } end end |
#list ⇒ Object
103 104 105 |
# File 'app/controllers/taxon_names_controller.rb', line 103 def list @taxon_names = TaxonName.with_project_id(sessions_current_project_id).order(:id).page(params[:page]) end |
#new ⇒ Object
GET /taxon_names/new
29 30 31 |
# File 'app/controllers/taxon_names_controller.rb', line 29 def new @taxon_name = Protonym.new(source: Source.new) end |
#origin_citation ⇒ Object
GET /api/v1/taxon_names
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 |
# File 'app/controllers/taxon_names_controller.rb', line 291 def origin_citation q = ::Queries::TaxonName::Filter.new(params).all .where(project_id: sessions_current_project_id) .order('taxon_names.id') respond_to do |format| format.json { @taxon_names = q.page(params[:page]).per(params[:per]) render '/taxon_names/origin_citation' } format.csv { @taxon_names = q send_data Export::CSV::TaxonNameOrigin.csv( @taxon_names, ).read, type: 'text', filename: "taxon_name_origin_citation_#{DateTime.now}.tsv" } end end |
#original_combination ⇒ Object
GET /taxon_names/1/original_combination
226 227 |
# File 'app/controllers/taxon_names_controller.rb', line 226 def original_combination end |
#parse ⇒ Object
216 217 218 219 220 221 222 223 |
# File 'app/controllers/taxon_names_controller.rb', line 216 def parse @combination = Combination.where(project_id: sessions_current_project_id).find(params[:combination_id]) if params[:combination_id] @result = Vendor::Biodiversity::Result.new( query_string: params.require(:query_string), project_id: sessions_current_project_id, code: :iczn # !! TODO: generalize ).result end |
#predicted_rank ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'app/controllers/taxon_names_controller.rb', line 121 def predicted_rank if params[:parent_id] p = TaxonName.find_by(id: params[:parent_id]) if p.nil? render json: {predicted_rank: ''}.to_json else render json: {predicted_rank: p.predicted_child_rank(params[:name]).to_s}.to_json end else render json: {predicted_rank: ''}.to_json end end |
#preview_nomen_batch_load ⇒ Object
190 191 192 193 194 195 196 197 198 199 |
# File 'app/controllers/taxon_names_controller.rb', line 190 def preview_nomen_batch_load if params[:file] @result = BatchLoad::Import::TaxonNames::NomenInterpreter.new(**batch_params) (params[:file].tempfile, :nomen_taxon_names_md5) render 'taxon_names/batch_load/nomen/preview' else flash[:notice] = 'No file provided!' redirect_to action: :batch_load end end |
#preview_simple_batch_load ⇒ Object
162 163 164 165 166 167 168 169 170 171 |
# File 'app/controllers/taxon_names_controller.rb', line 162 def preview_simple_batch_load if params[:file] @result = BatchLoad::Import::TaxonifiToTaxonworks.new(**batch_params) (params[:file].tempfile, :simple_taxon_names_md5) render 'taxon_names/batch_load/simple/preview' else flash[:notice] = 'No file provided!' redirect_to action: :batch_load end end |
#random ⇒ Object
134 135 136 137 138 |
# File 'app/controllers/taxon_names_controller.rb', line 134 def random redirect_to browse_nomenclature_task_path( taxon_name_id: TaxonName.where(project_id: sessions_current_project_id).order('random()').limit(1).pick(:id) ) end |
#rank_table ⇒ Object
140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'app/controllers/taxon_names_controller.rb', line 140 def rank_table @query = ::Queries::TaxonName::Tabular.new( taxon_name_id: params.require(:taxon_name_id), # this is one of the few places ranks: params.require(:ranks), fieldsets: params[:fieldsets], limit: params[:limit], validity: params[:validity], combinations: params[:combinations], project_id: sessions_current_project_id, rank_data: params[:rank_data] ) end |
#ranks ⇒ Object
117 118 119 |
# File 'app/controllers/taxon_names_controller.rb', line 117 def ranks render json: RANKS_JSON.to_json end |
#search ⇒ Object
86 87 88 89 90 91 92 |
# File 'app/controllers/taxon_names_controller.rb', line 86 def search if params[:id].blank? redirect_to taxon_names_path, alert: 'You must select an item from the list with a click or tab press before clicking show.' else redirect_to taxon_name_path(params[:id]) end end |
#select_options ⇒ Object
GET /taxon_names/select_options
154 155 156 157 158 159 160 |
# File 'app/controllers/taxon_names_controller.rb', line 154 def @taxon_names = TaxonName.select_optimized( sessions_current_user_id, sessions_current_project_id, target: params[:target] ) end |
#set_taxon_name ⇒ Object (private)
331 332 333 334 |
# File 'app/controllers/taxon_names_controller.rb', line 331 def set_taxon_name @taxon_name = TaxonName.with_project_id(sessions_current_project_id).includes(:creator, :updater).find(params[:id]) @recent_object = @taxon_name end |
#show ⇒ Object
GET /taxon_names/1 GET /taxon_names/1.json
25 26 |
# File 'app/controllers/taxon_names_controller.rb', line 25 def show end |
#taxon_name_params ⇒ Object (private)
343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 |
# File 'app/controllers/taxon_names_controller.rb', line 343 def taxon_name_params params.require(:taxon_name).permit( :name, :parent_id, :year_of_publication, :etymology, :verbatim_author, :verbatim_name, :rank_class, :type, :masculine_name, :feminine_name, :neuter_name, :also_create_otu, roles_attributes: [ :id, :_destroy, :type, :person_id, :position, person_attributes: [ :last_name, :first_name, :suffix, :prefix ] ], family_group_name_form_relationship_attributes: [:id, :_destroy, :object_taxon_name_id], origin_citation_attributes: [:id, :_destroy, :source_id, :pages], taxon_name_classifications_attributes: [:id, :_destroy, :type] ) end |
#update ⇒ Object
PATCH/PUT /taxon_names/1 PATCH/PUT /taxon_names/1.json
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'app/controllers/taxon_names_controller.rb', line 55 def update respond_to do |format| if @taxon_name.update(taxon_name_params) # TODO: WHY?! @taxon_name.reload format.html { redirect_to url_for(@taxon_name.), notice: 'Taxon name was successfully updated.' } format.json { render :show, status: :ok, location: @taxon_name. } else format.html { render action: :edit } format.json { render json: @taxon_name.errors, status: :unprocessable_entity } end end end |