Class: AutomatedOrder

Inherits:
FlexibleSubmission show all
Defined in:
app/models/automated_order.rb

Overview

An automated order is created by an external application, such as Limber. Retrieval of studies/projects is surprisingly expensive, and isn't relevant for cross-project/study stuff anyway. Rather than COMPLETELY disabling validation of study/project presence, we use the current permissions for cross study/project-stuff, and auto populate the field elsewhere. If someone manages to somehow mix multiple assets in different single studies, we still throw validation errors

Constant Summary

Constants inherited from Order

Order::AssetTypeError, Order::DEFAULT_ASSET_INPUT_METHODS

Constants included from Submission::ProjectValidation

Submission::ProjectValidation::Error

Instance Attribute Summary

Attributes inherited from Order

#asset_input_methods, #info_differential, #input_field_infos, #request_type_ids_list

Instance Method Summary collapse

Methods inherited from FlexibleSubmission

#request_type_ids, #request_type_ids=, #request_type_multiplier

Methods included from Submission::Crossable

#cross_compatible?, #cross_project_allowed, #cross_study_allowed

Methods included from Submission::FlexibleRequestGraph::OrderMethods

#build_request_graph!

Methods inherited from Order

#add_comment, #all_assets, #all_samples, #asset_uuids, #assets=, #building?, #building_submission?, #calculated_request_metadata_by_request_key, #collect_gigabases_expected?, #complete_building, #create_request_of_type!, #cross_compatible?, #cross_project_allowed, #cross_study_allowed, #duplicates_within, #first_request_type, #friendly_name, #generate_broadcast_event, #json_root, #multiplexed?, #multiplier_for, #next_request_type_id, #not_ready_samples, #on_delete_destroy_submission, #project_not_set, render_class, #request_types_list, #samples, #sequencing_order?, #study_is_active, #subject_type

Methods included from Submission::RequestOptionsBehaviour

included, #request_options=

Methods included from Submission::ProjectValidation

#checking_project?, included, #save_after_unmarshalling, #submittable?, #validating?

Methods included from Submission::AssetGroupBehaviour

#complete_building_asset_group, included

Methods included from Uuid::Uuidable

included, #unsaved_uuid!, #uuid

Methods inherited from ApplicationRecord

alias_association, convert_labware_to_receptacle_for, find_by_id_or_name, find_by_id_or_name!

Methods included from Squishify

extended

Instance Method Details

#autodetection_defaultObject

When automating submission creation, it is really useful if we can auto-detect studies and projects based on their aliquots. For automated orders this is enabled by default.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/models/automated_order.rb', line 14

 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