Class: WorkflowsController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- WorkflowsController
- Includes:
- Tasks::CherrypickHandler, Tasks::PlateTemplateHandler, Tasks::PlateTransferHandler, Tasks::SetDescriptorsHandler
- Defined in:
- app/controllers/workflows_controller.rb
Overview
A large amount of the task processing actually occurs within the controller. These methods are included via the various Handler modules.
Controls progress through the tasks in a Workflow as part of taking a Batch through a Pipeline
#stage is the main processing step, and responds to all HTTP methods. The currently active task is supplied by params
If params is nil it will render the page associated with the current Task using Task#render_task If params is present it will perform the current Task using Task#do_task before incrementing the stage and rendering the next task. If there are no further tasks present, it will redirect to the finish_batch page.
Constant Summary
Constants included from FlashTruncation
FlashTruncation::STRING_OVERHEAD
Instance Attribute Summary collapse
-
#batch ⇒ Object
Returns the value of attribute batch.
-
#plate_purpose_options ⇒ Object
Returns the value of attribute plate_purpose_options.
-
#spreadsheet_layout ⇒ Object
Returns the value of attribute spreadsheet_layout.
Instance Method Summary collapse
-
#render_task(task, params) ⇒ Object
Default render task activity, eg.
-
#stage ⇒ Object
TODO: This needs to be made RESTful.
Methods included from Tasks::SetDescriptorsHandler
Methods included from Tasks::PlateTransferHandler
#do_plate_transfer_task, #find_or_create_target, #includes_for_plate_creation, #render_plate_transfer_task, #target_plate
Methods included from Tasks::PlateTemplateHandler
generate_spreadsheet, #render_plate_template_task
Methods included from Tasks::CherrypickHandler
#do_cherrypick_task, included, #render_cherrypick_task, #setup_input_params_for_pass_through
Methods inherited from ApplicationController
#block_api_access, #evil_parameter_hack!, #extract_header_info, #set_cache_disabled!
Methods included from AuthenticatedSystem
Methods included from FlashTruncation
#max_flash_size, #truncate_flash, #truncate_flash_array
Instance Attribute Details
#batch ⇒ Object
Returns the value of attribute batch.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/controllers/workflows_controller.rb', line 21 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |
#plate_purpose_options ⇒ Object
Returns the value of attribute plate_purpose_options.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/controllers/workflows_controller.rb', line 21 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |
#spreadsheet_layout ⇒ Object
Returns the value of attribute spreadsheet_layout.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/controllers/workflows_controller.rb', line 21 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |
Instance Method Details
#render_task(task, params) ⇒ Object
Default render task activity, eg. from Task#render_task
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'app/controllers/workflows_controller.rb', line 91 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |
#stage ⇒ Object
TODO: This needs to be made RESTful. 1: Routes need to be refactored to provide more sensible urls 2: We call them tasks in the code, and stages in the URL. They should be consistent 3: This endpoint currently does two jobs, executing the current task, and rendering the next 4: Some tasks rely on parameters passed in from the previous task. This isn't ideal, but it might be worth maintaining the behaviour until we solve the problems. 5: We need to improve the repeatability of tasks. 6: GET should be Idempotent. doing a task should be a POST rubocop:todo Metrics/PerceivedComplexity, Metrics/MethodLength, Metrics/AbcSize
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'app/controllers/workflows_controller.rb', line 39 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |