Class: TaxonNamesController
Constant Summary
ProjectsHelper::CLASSIFIER, ProjectsHelper::CLASSIFIER_ANNOTATION
Instance Method Summary
collapse
#annotator_params
#destroy_redirect
#json_request?
Methods included from LogRecent
#log_user_recent_route
Methods included from Cookies
#digest_cookie, #digested_cookie_exists?
Methods included from Whitelist
#whitelist_constantize
#cumulative_gb_per_year, #cumulative_projects_created_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_initials, #project_link, #project_login_link, #project_matches, #project_tag, #projects_list, #projects_search_form, #sound_cumulative_gb_per_year, #sound_gb_per_year, #taxonworks_classification, #week_in_review_graphs
#intercept_api
#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
289
290
291
292
|
# File 'app/controllers/taxon_names_controller.rb', line 289
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
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
|
# File 'app/controllers/taxon_names_controller.rb', line 257
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
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
# File 'app/controllers/taxon_names_controller.rb', line 324
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
294
295
296
297
298
299
300
301
302
|
# File 'app/controllers/taxon_names_controller.rb', line 294
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 ).result
render '/taxon_names/api/v1/parse'
end
|
#api_show ⇒ Object
GET /api/v1/taxon_names/:id
278
279
280
|
# File 'app/controllers/taxon_names_controller.rb', line 278
def api_show
render '/taxon_names/api/v1/show'
end
|
#api_summary ⇒ Object
GET /api/v1/taxon_names/:id/inventory/summary
283
284
285
|
# File 'app/controllers/taxon_names_controller.rb', line 283
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
350
351
352
353
354
355
|
# File 'app/controllers/taxon_names_controller.rb', line 350
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
377
378
379
380
381
382
383
384
385
386
387
|
# File 'app/controllers/taxon_names_controller.rb', line 377
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}
243
244
245
246
247
248
249
250
251
252
253
254
|
# File 'app/controllers/taxon_names_controller.rb', line 243
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),
user_id: sessions_current_user_id,
project_id: sessions_current_project_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.metamorphosize),
notice: "Taxon name '#{@taxon_name.name}' was successfully created." }
format.json { render :show, status: :created, location: @taxon_name.metamorphosize }
else
format.html { render action: :new }
format.json { render json: @taxon_name.errors, status: :unprocessable_entity }
end
end
end
|
#create_nomen_batch_load ⇒ Object
209
210
211
212
213
214
215
216
217
218
219
220
221
222
|
# File 'app/controllers/taxon_names_controller.rb', line 209
def create_nomen_batch_load
if params[:file] && digested_cookie_exists?(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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
|
# File 'app/controllers/taxon_names_controller.rb', line 181
def create_simple_batch_load
if params[:file] && digested_cookie_exists?(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.full_messages.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
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
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
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
|
# File 'app/controllers/taxon_names_controller.rb', line 305
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
239
240
|
# File 'app/controllers/taxon_names_controller.rb', line 239
def original_combination
end
|
#parse ⇒ Object
224
225
226
227
228
229
230
231
|
# File 'app/controllers/taxon_names_controller.rb', line 224
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 ).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
198
199
200
201
202
203
204
205
206
207
|
# File 'app/controllers/taxon_names_controller.rb', line 198
def preview_nomen_batch_load
if params[:file]
@result = BatchLoad::Import::TaxonNames::NomenInterpreter.new(**batch_params)
digest_cookie(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
170
171
172
173
174
175
176
177
178
179
|
# File 'app/controllers/taxon_names_controller.rb', line 170
def preview_simple_batch_load
if params[:file]
@result = BatchLoad::Import::TaxonifiToTaxonworks.new(**batch_params)
digest_cookie(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
152
153
154
155
|
# 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), 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],
descriptors_scored_for_otu: params[:descriptors_scored_for_otu],
otu_observation_count: params[:otu_observation_count],
otu_observation_depictions: params[:otu_observation_depictions],
otus: params[:otus]
)
end
|
#ranks ⇒ Object
117
118
119
|
# File 'app/controllers/taxon_names_controller.rb', line 117
def ranks
render json: RANKS_JSON.to_json
end
|
#remove_authors ⇒ Object
233
234
235
236
|
# File 'app/controllers/taxon_names_controller.rb', line 233
def remove_authors
names = TaxonName.remove_authors(params['names'].first(5000))
render json: { names: }
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
162
163
164
165
166
167
168
|
# File 'app/controllers/taxon_names_controller.rb', line 162
def select_options
@taxon_names = TaxonName.select_optimized(
sessions_current_user_id,
sessions_current_project_id,
target: params[:target]
)
end
|
#set_taxon_name ⇒ Object
345
346
347
348
|
# File 'app/controllers/taxon_names_controller.rb', line 345
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
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
|
# File 'app/controllers/taxon_names_controller.rb', line 357
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
|
#taxonomy ⇒ Object
157
158
159
|
# File 'app/controllers/taxon_names_controller.rb', line 157
def taxonomy
@taxon_name = TaxonName.find(params[:id])
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)
@taxon_name.reload
format.html { redirect_to url_for(@taxon_name.metamorphosize), notice: 'Taxon name was successfully updated.' }
format.json { render :show, status: :ok, location: @taxon_name.metamorphosize }
else
format.html { render action: :edit }
format.json { render json: @taxon_name.errors, status: :unprocessable_entity }
end
end
end
|