sequencescape-client-api 0.3.10 → 0.4.0.pre.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +44 -0
- data/.rubocop_todo.yml +338 -0
- data/.ruby-version +1 -0
- data/Gemfile +1 -1
- data/README.markdown +13 -0
- data/lib/sequencescape-api.rb +1 -1
- data/lib/sequencescape-api/actions.rb +9 -8
- data/lib/sequencescape-api/associations.rb +8 -6
- data/lib/sequencescape-api/associations/base.rb +1 -1
- data/lib/sequencescape-api/associations/base/instance_methods.rb +10 -8
- data/lib/sequencescape-api/associations/belongs_to.rb +4 -4
- data/lib/sequencescape-api/associations/has_many.rb +14 -13
- data/lib/sequencescape-api/associations/has_many/json.rb +1 -1
- data/lib/sequencescape-api/associations/has_many/validation.rb +1 -1
- data/lib/sequencescape-api/composition.rb +11 -7
- data/lib/sequencescape-api/connection_factory.rb +6 -5
- data/lib/sequencescape-api/connection_factory/actions.rb +17 -12
- data/lib/sequencescape-api/core.rb +12 -7
- data/lib/sequencescape-api/core_ext/array.rb +1 -1
- data/lib/sequencescape-api/core_ext/hash.rb +3 -3
- data/lib/sequencescape-api/errors.rb +2 -2
- data/lib/sequencescape-api/finder_methods.rb +16 -11
- data/lib/sequencescape-api/rails.rb +8 -7
- data/lib/sequencescape-api/resource/active_model.rb +1 -1
- data/lib/sequencescape-api/resource/attribute_groups.rb +11 -7
- data/lib/sequencescape-api/resource/attributes.rb +8 -8
- data/lib/sequencescape-api/resource/instance_methods.rb +17 -9
- data/lib/sequencescape-api/resource/json.rb +18 -15
- data/lib/sequencescape-api/resource/modifications.rb +20 -11
- data/lib/sequencescape-api/resource_model_proxy.rb +7 -5
- data/lib/sequencescape-api/version.rb +1 -1
- data/lib/sequencescape.rb +1 -2
- data/lib/sequencescape/bait_library.rb +1 -1
- data/lib/sequencescape/bait_library_layout.rb +2 -2
- data/lib/sequencescape/barcoded_asset.rb +1 -1
- data/lib/sequencescape/batch.rb +6 -6
- data/lib/sequencescape/behaviour/qced.rb +3 -4
- data/lib/sequencescape/behaviour/receptacle.rb +3 -3
- data/lib/sequencescape/behaviour/state_driven.rb +4 -4
- data/lib/sequencescape/bulk_transfer.rb +1 -1
- data/lib/sequencescape/comment.rb +0 -2
- data/lib/sequencescape/extraction_attribute.rb +1 -1
- data/lib/sequencescape/library_event.rb +1 -1
- data/lib/sequencescape/library_tube.rb +1 -1
- data/lib/sequencescape/lot.rb +0 -1
- data/lib/sequencescape/lot_type.rb +1 -2
- data/lib/sequencescape/order_template.rb +1 -2
- data/lib/sequencescape/pipeline.rb +1 -1
- data/lib/sequencescape/plate.rb +19 -15
- data/lib/sequencescape/plate/pooling.rb +9 -3
- data/lib/sequencescape/plate/well_structure.rb +6 -6
- data/lib/sequencescape/plate_conversion.rb +3 -3
- data/lib/sequencescape/plate_creation.rb +3 -3
- data/lib/sequencescape/plate_purpose.rb +3 -3
- data/lib/sequencescape/plate_template.rb +0 -2
- data/lib/sequencescape/pooled_plate_creation.rb +3 -3
- data/lib/sequencescape/project.rb +2 -1
- data/lib/sequencescape/qc_decision.rb +0 -1
- data/lib/sequencescape/qc_file.rb +0 -3
- data/lib/sequencescape/qcable.rb +0 -3
- data/lib/sequencescape/qcable_creator.rb +0 -3
- data/lib/sequencescape/request.rb +3 -3
- data/lib/sequencescape/search.rb +10 -8
- data/lib/sequencescape/specific_tube_creation.rb +2 -2
- data/lib/sequencescape/stamp.rb +0 -1
- data/lib/sequencescape/state_change.rb +2 -2
- data/lib/sequencescape/study.rb +1 -1
- data/lib/sequencescape/submission.rb +1 -2
- data/lib/sequencescape/tag2_layout.rb +3 -3
- data/lib/sequencescape/tag2_layout_template.rb +2 -2
- data/lib/sequencescape/tag_group.rb +0 -1
- data/lib/sequencescape/tag_layout.rb +3 -3
- data/lib/sequencescape/tag_layout_template.rb +4 -4
- data/lib/sequencescape/transfer.rb +2 -2
- data/lib/sequencescape/transfer_request.rb +4 -5
- data/lib/sequencescape/transfer_template.rb +2 -2
- data/lib/sequencescape/tube.rb +3 -3
- data/lib/sequencescape/tube_creation.rb +3 -3
- data/lib/sequencescape/tube_from_tube_creation.rb +3 -3
- data/lib/sequencescape/tube_purpose.rb +3 -3
- data/lib/sequencescape/user.rb +2 -2
- data/lib/sequencescape/volume_update.rb +1 -1
- data/lib/sequencescape/well.rb +0 -2
- data/lib/sequencescape/work_completion.rb +1 -1
- data/sequencescape-api.gemspec +18 -17
- data/spec/sequencescape-api/associations_spec.rb +4 -2
- data/spec/sequencescape-api/finding_methods_spec.rb +3 -1
- data/spec/sequencescape-api/modifications_spec.rb +17 -16
- data/spec/sequencescape-api/root_spec.rb +11 -6
- data/spec/spec_helper.rb +3 -1
- data/spec/support/contract_helper.rb +18 -10
- data/spec/support/namespaces.rb +9 -9
- data/spec/support/shared_examples.rb +2 -0
- metadata +53 -35
- data/.rvmrc +0 -52
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
require 'sequencescape/asset'
|
|
2
2
|
|
|
3
3
|
class Sequencescape::PlateTemplate < ::Sequencescape::Asset
|
|
4
|
-
|
|
5
4
|
require 'sequencescape/plate/well_structure'
|
|
6
5
|
|
|
7
6
|
include Sequencescape::Plate::WellStructure
|
|
@@ -9,5 +8,4 @@ class Sequencescape::PlateTemplate < ::Sequencescape::Asset
|
|
|
9
8
|
has_many :wells
|
|
10
9
|
|
|
11
10
|
attribute_accessor :size, :name
|
|
12
|
-
|
|
13
11
|
end
|
|
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
|
|
|
2
2
|
|
|
3
3
|
class Sequencescape::PooledPlateCreation < ::Sequencescape::Api::Resource
|
|
4
4
|
belongs_to :user
|
|
5
|
-
has_many :parents, :
|
|
6
|
-
belongs_to :child_purpose, :
|
|
7
|
-
belongs_to :child, :
|
|
5
|
+
has_many :parents, class_name: 'Plate', disposition: :inline
|
|
6
|
+
belongs_to :child_purpose, class_name: 'PlatePurpose'
|
|
7
|
+
belongs_to :child, class_name: 'Plate'
|
|
8
8
|
end
|
|
@@ -5,7 +5,8 @@ class Sequencescape::Project < ::Sequencescape::Api::Resource
|
|
|
5
5
|
|
|
6
6
|
attribute_accessor :name
|
|
7
7
|
attribute_accessor :approved, :state
|
|
8
|
-
attribute_accessor :project_manager, :cost_code, :funding_comments, :external_funding_source, :budget_division
|
|
8
|
+
attribute_accessor :project_manager, :cost_code, :funding_comments, :external_funding_source, :budget_division
|
|
9
|
+
attribute_accessor :budget_cost_centre, :funding_model
|
|
9
10
|
attribute_accessor :collaborators
|
|
10
11
|
attribute_accessor :roles
|
|
11
12
|
end
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
1
|
require 'sequencescape-api/resource'
|
|
3
2
|
|
|
4
3
|
class Sequencescape::QcFile < ::Sequencescape::Api::Resource
|
|
5
|
-
|
|
6
4
|
belongs_to :asset
|
|
7
5
|
|
|
8
6
|
attribute_accessor :filename, :size
|
|
@@ -10,5 +8,4 @@ class Sequencescape::QcFile < ::Sequencescape::Api::Resource
|
|
|
10
8
|
def retrieve
|
|
11
9
|
api.retrieve(actions.read, Sequencescape::Api::ModifyingHandler.new(self), 'sequencescape/qc_file')
|
|
12
10
|
end
|
|
13
|
-
|
|
14
11
|
end
|
data/lib/sequencescape/qcable.rb
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
1
|
require 'sequencescape-api/resource'
|
|
3
2
|
|
|
4
3
|
class Sequencescape::Qcable < ::Sequencescape::Api::Resource
|
|
5
|
-
|
|
6
4
|
belongs_to :lot
|
|
7
5
|
belongs_to :qcable_creator
|
|
8
6
|
belongs_to :asset
|
|
@@ -14,5 +12,4 @@ class Sequencescape::Qcable < ::Sequencescape::Api::Resource
|
|
|
14
12
|
attribute_accessor :ean13 # The EAN13 barcode number
|
|
15
13
|
attribute_accessor :machine # The barcode printed on the label
|
|
16
14
|
end
|
|
17
|
-
|
|
18
15
|
end
|
|
@@ -6,11 +6,11 @@ class Sequencescape::Request < ::Sequencescape::Api::Resource
|
|
|
6
6
|
belongs_to :sample
|
|
7
7
|
belongs_to :submission
|
|
8
8
|
|
|
9
|
-
belongs_to :source_asset, :
|
|
10
|
-
belongs_to :target_asset, :
|
|
9
|
+
belongs_to :source_asset, class_name: 'Asset'
|
|
10
|
+
belongs_to :target_asset, class_name: 'Asset'
|
|
11
11
|
|
|
12
12
|
attribute_accessor :type, :state
|
|
13
|
-
validates_inclusion_of :state, :
|
|
13
|
+
validates_inclusion_of :state, in: %w[pending started failed passed cancelled blocked hold]
|
|
14
14
|
|
|
15
15
|
attribute_accessor :read_length, :library_type, :fragment_size
|
|
16
16
|
end
|
data/lib/sequencescape/search.rb
CHANGED
|
@@ -4,7 +4,7 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
|
|
|
4
4
|
class BaseHandler
|
|
5
5
|
include Sequencescape::Api::BasicErrorHandling
|
|
6
6
|
|
|
7
|
-
def success(
|
|
7
|
+
def success(_attributes)
|
|
8
8
|
raise Sequencescape::Api::Error, 'A success response from a search is unexpected'
|
|
9
9
|
end
|
|
10
10
|
end
|
|
@@ -17,7 +17,7 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
|
|
|
17
17
|
@api = api
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
def redirection(json
|
|
20
|
+
def redirection(json)
|
|
21
21
|
json.delete('uuids_to_ids')
|
|
22
22
|
Sequencescape::Api::FinderMethods::FindByUuidHandler.new(@api.send(json.keys.first)).success(json)
|
|
23
23
|
end
|
|
@@ -28,6 +28,7 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
|
|
|
28
28
|
class MultipleResultPaged
|
|
29
29
|
include Enumerable
|
|
30
30
|
attr_reader :objects, :size
|
|
31
|
+
|
|
31
32
|
def initialize(objects, size)
|
|
32
33
|
@objects = objects
|
|
33
34
|
@size = size
|
|
@@ -39,18 +40,19 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
|
|
|
39
40
|
# The response from the server contains the JSON for each of the resources found. We simply
|
|
40
41
|
# need to be able to create the resources from each of these.
|
|
41
42
|
class MultipleResultHandler
|
|
42
|
-
def initialize(api,model)
|
|
43
|
-
@api
|
|
43
|
+
def initialize(api, model)
|
|
44
|
+
@api = api
|
|
45
|
+
@model = model
|
|
44
46
|
end
|
|
45
47
|
|
|
46
|
-
def redirection(json
|
|
48
|
+
def redirection(json)
|
|
47
49
|
items = json['searches'].map(&method(:new))
|
|
48
50
|
size = json['size']
|
|
49
51
|
MultipleResultPaged.new(items, size)
|
|
50
52
|
end
|
|
51
53
|
|
|
52
54
|
def new(json)
|
|
53
|
-
args = [
|
|
55
|
+
args = [json, false]
|
|
54
56
|
args.unshift(@api) unless @model.is_a_proxied_model?
|
|
55
57
|
@model.new(*args)
|
|
56
58
|
end
|
|
@@ -59,11 +61,11 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
|
|
|
59
61
|
|
|
60
62
|
def self.search_action(name)
|
|
61
63
|
line = __LINE__ + 1
|
|
62
|
-
class_eval(
|
|
64
|
+
class_eval("
|
|
63
65
|
def #{name}(criteria = {})
|
|
64
66
|
api.create(actions.#{name}, { 'search' => criteria }, SingleResultHandler.new(api))
|
|
65
67
|
end
|
|
66
|
-
|
|
68
|
+
", __FILE__, line)
|
|
67
69
|
end
|
|
68
70
|
|
|
69
71
|
attribute_reader :name
|
|
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
|
|
|
2
2
|
|
|
3
3
|
class Sequencescape::SpecificTubeCreation < ::Sequencescape::Api::Resource
|
|
4
4
|
belongs_to :user
|
|
5
|
-
belongs_to :parent, :
|
|
5
|
+
belongs_to :parent, class_name: 'Plate'
|
|
6
6
|
attribute_writer :child_purposes, :tube_attributes
|
|
7
|
-
has_many :children, :
|
|
7
|
+
has_many :children, class_name: 'Tube'
|
|
8
8
|
end
|
data/lib/sequencescape/stamp.rb
CHANGED
|
@@ -2,8 +2,8 @@ require 'sequencescape-api/resource'
|
|
|
2
2
|
|
|
3
3
|
class Sequencescape::StateChange < ::Sequencescape::Api::Resource
|
|
4
4
|
belongs_to :user
|
|
5
|
-
belongs_to :target, :
|
|
6
|
-
attribute_accessor :contents
|
|
5
|
+
belongs_to :target, class_name: 'Asset', disposition: :inline
|
|
6
|
+
attribute_accessor :contents # Array of "contents" to fail, deciphered by the target, can be nil
|
|
7
7
|
attribute_accessor :target_state
|
|
8
8
|
attribute_accessor :previous_state
|
|
9
9
|
attribute_accessor :reason
|
data/lib/sequencescape/study.rb
CHANGED
|
@@ -10,5 +10,5 @@ class Sequencescape::Study < ::Sequencescape::Api::Resource
|
|
|
10
10
|
attribute_accessor :contaminated_human_dna, :contains_human_dna
|
|
11
11
|
attribute_accessor :data_release_sort_of_study, :data_release_strategy
|
|
12
12
|
|
|
13
|
-
validates :name, :
|
|
13
|
+
validates :name, presence: true
|
|
14
14
|
end
|
|
@@ -8,9 +8,8 @@ class Sequencescape::Submission < ::Sequencescape::Api::Resource
|
|
|
8
8
|
# TODO: use a has many, but ensure it works
|
|
9
9
|
attribute_accessor :orders
|
|
10
10
|
|
|
11
|
-
has_update_action :submit!, :
|
|
11
|
+
has_update_action :submit!, action: 'submit', verb: :create, skip_json: true
|
|
12
12
|
|
|
13
13
|
attribute_reader :state
|
|
14
14
|
attribute_reader :asset_group_name
|
|
15
|
-
|
|
16
15
|
end
|
|
@@ -3,8 +3,8 @@ require 'sequencescape/tag'
|
|
|
3
3
|
|
|
4
4
|
class Sequencescape::Tag2Layout < ::Sequencescape::Api::Resource
|
|
5
5
|
belongs_to :user
|
|
6
|
-
belongs_to :plate, :
|
|
7
|
-
belongs_to :source, :
|
|
8
|
-
composed_of :tag, :
|
|
6
|
+
belongs_to :plate, class_name: 'Plate'
|
|
7
|
+
belongs_to :source, class_name: 'Asset'
|
|
8
|
+
composed_of :tag, class_name: 'Tag'
|
|
9
9
|
attribute_reader :target_well_locations
|
|
10
10
|
end
|
|
@@ -3,7 +3,7 @@ require 'sequencescape/tag'
|
|
|
3
3
|
|
|
4
4
|
class Sequencescape::Tag2LayoutTemplate < ::Sequencescape::Api::Resource
|
|
5
5
|
attribute_reader :name
|
|
6
|
-
composed_of :tag, :
|
|
6
|
+
composed_of :tag, class_name: 'Tag'
|
|
7
7
|
|
|
8
|
-
has_create_action :
|
|
8
|
+
has_create_action resource: 'tag2_layout'
|
|
9
9
|
end
|
|
@@ -3,9 +3,9 @@ require 'sequencescape/tag'
|
|
|
3
3
|
|
|
4
4
|
class Sequencescape::TagLayout < ::Sequencescape::Api::Resource
|
|
5
5
|
belongs_to :user
|
|
6
|
-
belongs_to :plate, :
|
|
7
|
-
composed_of :tag_group, :
|
|
8
|
-
composed_of :tag2_group, :
|
|
6
|
+
belongs_to :plate, class_name: 'Plate'
|
|
7
|
+
composed_of :tag_group, class_name: 'Tag::Group'
|
|
8
|
+
composed_of :tag2_group, class_name: 'Tag::Group'
|
|
9
9
|
|
|
10
10
|
attribute_accessor :substitutions, :direction, :walking_by, :initial_tag, :tags_per_well
|
|
11
11
|
end
|
|
@@ -3,11 +3,11 @@ require 'sequencescape/tag'
|
|
|
3
3
|
|
|
4
4
|
class Sequencescape::TagLayoutTemplate < ::Sequencescape::Api::Resource
|
|
5
5
|
attribute_reader :name, :direction, :walking_by
|
|
6
|
-
belongs_to :plate, :
|
|
7
|
-
composed_of :tag_group, :
|
|
8
|
-
composed_of :tag2_group, :
|
|
6
|
+
belongs_to :plate, class_name: 'Plate'
|
|
7
|
+
composed_of :tag_group, class_name: 'Tag::Group'
|
|
8
|
+
composed_of :tag2_group, class_name: 'Tag::Group'
|
|
9
9
|
|
|
10
|
-
has_create_action :
|
|
10
|
+
has_create_action resource: 'tag_layout'
|
|
11
11
|
|
|
12
12
|
def dual_index?
|
|
13
13
|
tag2_group.present?
|
|
@@ -2,8 +2,8 @@ require 'sequencescape-api/resource'
|
|
|
2
2
|
|
|
3
3
|
class Sequencescape::Transfer < ::Sequencescape::Api::Resource
|
|
4
4
|
belongs_to :user
|
|
5
|
-
belongs_to :source, :
|
|
6
|
-
belongs_to :destination, :
|
|
5
|
+
belongs_to :source, class_name: 'BarcodedAsset', disposition: :inline
|
|
6
|
+
belongs_to :destination, class_name: 'BarcodedAsset', disposition: :inline
|
|
7
7
|
attribute_reader :transfers
|
|
8
8
|
attribute_accessor :targets
|
|
9
9
|
end
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
require 'sequencescape-api/resource'
|
|
2
2
|
|
|
3
3
|
class Sequencescape::TransferRequest < ::Sequencescape::Api::Resource
|
|
4
|
-
|
|
5
|
-
belongs_to :
|
|
6
|
-
belongs_to :
|
|
7
|
-
belongs_to :
|
|
8
|
-
belongs_to :outer_request, :class_name => 'Request'
|
|
4
|
+
belongs_to :source_asset, class_name: 'Asset'
|
|
5
|
+
belongs_to :target_asset, class_name: 'Asset'
|
|
6
|
+
belongs_to :submission, class_name: 'Submission'
|
|
7
|
+
belongs_to :outer_request, class_name: 'Request'
|
|
9
8
|
|
|
10
9
|
attribute_accessor :type, :state, :submission_id, :volume, :merge_equivalent_aliquots
|
|
11
10
|
end
|
|
@@ -4,6 +4,6 @@ class Sequencescape::TransferTemplate < ::Sequencescape::Api::Resource
|
|
|
4
4
|
attribute_reader :name
|
|
5
5
|
attribute_reader :transfers
|
|
6
6
|
|
|
7
|
-
has_create_action :
|
|
8
|
-
has_create_action :preview!, :
|
|
7
|
+
has_create_action resource: 'transfer'
|
|
8
|
+
has_create_action :preview!, action: :preview, resource: 'transfer'
|
|
9
9
|
end
|
data/lib/sequencescape/tube.rb
CHANGED
|
@@ -14,13 +14,13 @@ class Sequencescape::Tube < ::Sequencescape::Asset
|
|
|
14
14
|
|
|
15
15
|
attribute_accessor :closed
|
|
16
16
|
attribute_accessor :concentration, :volume
|
|
17
|
-
attribute_accessor :scanned_in_date, :
|
|
17
|
+
attribute_accessor :scanned_in_date, conversion: :to_time
|
|
18
18
|
|
|
19
19
|
attribute_reader :state
|
|
20
20
|
|
|
21
21
|
attribute_accessor :sibling_tubes
|
|
22
22
|
|
|
23
|
-
belongs_to :purpose, :
|
|
24
|
-
belongs_to :stock_plate, :
|
|
23
|
+
belongs_to :purpose, class_name: 'TubePurpose'
|
|
24
|
+
belongs_to :stock_plate, class_name: 'Plate'
|
|
25
25
|
belongs_to :custom_metadatum_collection
|
|
26
26
|
end
|
|
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
|
|
|
2
2
|
|
|
3
3
|
class Sequencescape::TubeCreation < ::Sequencescape::Api::Resource
|
|
4
4
|
belongs_to :user
|
|
5
|
-
belongs_to :parent, :
|
|
6
|
-
belongs_to :child_purpose, :
|
|
7
|
-
has_many :children, :
|
|
5
|
+
belongs_to :parent, class_name: 'Plate'
|
|
6
|
+
belongs_to :child_purpose, class_name: 'TubePurpose'
|
|
7
|
+
has_many :children, class_name: 'Tube'
|
|
8
8
|
end
|
|
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
|
|
|
2
2
|
|
|
3
3
|
class Sequencescape::TubeFromTubeCreation < ::Sequencescape::Api::Resource
|
|
4
4
|
belongs_to :user
|
|
5
|
-
belongs_to :parent, :
|
|
6
|
-
belongs_to :child_purpose, :
|
|
7
|
-
belongs_to :child, :
|
|
5
|
+
belongs_to :parent, class_name: 'Plate'
|
|
6
|
+
belongs_to :child_purpose, class_name: 'TubePurpose'
|
|
7
|
+
belongs_to :child, class_name: 'Tube'
|
|
8
8
|
end
|
|
@@ -4,7 +4,7 @@ class Sequencescape::TubePurpose < ::Sequencescape::Api::Resource
|
|
|
4
4
|
module TubeCreation
|
|
5
5
|
def create!(attributes = nil)
|
|
6
6
|
attributes ||= {}
|
|
7
|
-
attributes[:wells].delete_if { |_,v| v.blank? } if attributes.key?(:wells)
|
|
7
|
+
attributes[:wells].delete_if { |_, v| v.blank? } if attributes.key?(:wells)
|
|
8
8
|
|
|
9
9
|
new({}, false).tap do |plate|
|
|
10
10
|
api.create(actions.create, { 'plate' => attributes }, Sequencescape::Api::ModifyingHandler.new(plate))
|
|
@@ -12,8 +12,8 @@ class Sequencescape::TubePurpose < ::Sequencescape::Api::Resource
|
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
has_many :children, :
|
|
16
|
-
has_many :parents, :
|
|
15
|
+
has_many :children, class_name: 'TubePurpose'
|
|
16
|
+
has_many :parents, class_name: 'TubePurpose'
|
|
17
17
|
|
|
18
18
|
has_many :tubes do
|
|
19
19
|
include Sequencescape::TubePurpose::TubeCreation
|
data/lib/sequencescape/user.rb
CHANGED
|
@@ -5,8 +5,8 @@ class Sequencescape::User < ::Sequencescape::Api::Resource
|
|
|
5
5
|
attribute_accessor :last_name
|
|
6
6
|
attribute_accessor :barcode
|
|
7
7
|
|
|
8
|
-
#TODO make swipecard_code readonly. Can't at the moment because of a bug
|
|
9
|
-
#attribute_writer :swipecard_code
|
|
8
|
+
# TODO: make swipecard_code readonly. Can't at the moment because of a bug
|
|
9
|
+
# attribute_writer :swipecard_code
|
|
10
10
|
attribute_accessor :swipecard_code
|
|
11
11
|
|
|
12
12
|
attribute_reader :has_a_swipecard_code
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'sequencescape-api/resource'
|
|
2
2
|
|
|
3
3
|
class Sequencescape::VolumeUpdate < ::Sequencescape::Api::Resource
|
|
4
|
-
belongs_to :target, :
|
|
4
|
+
belongs_to :target, class_name: 'Asset', disposition: :inline
|
|
5
5
|
attribute_accessor :volume_change, :created_by
|
|
6
6
|
end
|
data/lib/sequencescape/well.rb
CHANGED
|
@@ -3,7 +3,6 @@ require 'sequencescape/behaviour/receptacle'
|
|
|
3
3
|
require 'sequencescape/behaviour/state_driven'
|
|
4
4
|
|
|
5
5
|
class Sequencescape::Well < ::Sequencescape::Asset
|
|
6
|
-
|
|
7
6
|
include Sequencescape::Behaviour::Receptacle
|
|
8
7
|
include Sequencescape::Behaviour::StateDriven
|
|
9
8
|
|
|
@@ -15,5 +14,4 @@ class Sequencescape::Well < ::Sequencescape::Asset
|
|
|
15
14
|
def pool_id
|
|
16
15
|
pool.nil? ? nil : pool['id']
|
|
17
16
|
end
|
|
18
|
-
|
|
19
17
|
end
|
|
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
|
|
|
2
2
|
|
|
3
3
|
class Sequencescape::WorkCompletion < ::Sequencescape::Api::Resource
|
|
4
4
|
belongs_to :user
|
|
5
|
-
belongs_to :target, :
|
|
5
|
+
belongs_to :target, class_name: 'Asset'
|
|
6
6
|
|
|
7
7
|
# This should really be a has_many, but we'll need
|
|
8
8
|
# to get assignment from arrays of strings working first.
|
data/sequencescape-api.gemspec
CHANGED
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require "sequencescape-api/version"
|
|
1
|
+
$LOAD_PATH.push File.expand_path('lib', __dir__)
|
|
2
|
+
require 'sequencescape-api/version'
|
|
4
3
|
|
|
5
4
|
Gem::Specification.new do |s|
|
|
6
|
-
s.name =
|
|
5
|
+
s.name = 'sequencescape-client-api'
|
|
7
6
|
s.version = Sequencescape::Api::VERSION
|
|
8
7
|
s.platform = Gem::Platform::RUBY
|
|
9
|
-
s.authors = [
|
|
10
|
-
s.email = [
|
|
11
|
-
s.homepage =
|
|
12
|
-
s.summary =
|
|
13
|
-
s.description =
|
|
8
|
+
s.authors = ['Matthew Denner', 'James Glover', 'Eduardo Martin Rojo']
|
|
9
|
+
s.email = ['md12@sanger.ac.uk', 'james.glover@sanger.ac.uk', 'emr@sanger.ac.uk']
|
|
10
|
+
s.homepage = ''
|
|
11
|
+
s.summary = 'Gem for the client side of the Sequencescape API'
|
|
12
|
+
s.description = 'Provides all of the necessary code for interacting with the Sequencescape API'
|
|
14
13
|
|
|
15
|
-
s.rubyforge_project =
|
|
14
|
+
s.rubyforge_project = 'sequencescape-client-api'
|
|
16
15
|
|
|
17
16
|
s.files = `git ls-files`.split("\n")
|
|
18
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
19
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
20
|
-
s.require_paths = [
|
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
|
19
|
+
s.require_paths = ['lib']
|
|
21
20
|
|
|
22
|
-
s.add_dependency('
|
|
23
|
-
s.add_dependency('
|
|
21
|
+
s.add_dependency('activemodel', '>= 5.0.0')
|
|
22
|
+
s.add_dependency('activesupport', '>= 5.0.0')
|
|
24
23
|
s.add_dependency('i18n')
|
|
25
|
-
s.add_dependency('yajl-ruby', '>= 1.
|
|
24
|
+
s.add_dependency('yajl-ruby', '>= 1.4.1')
|
|
26
25
|
|
|
27
|
-
s.add_development_dependency('rspec', '~> 2.11.0')
|
|
28
26
|
s.add_development_dependency('pry')
|
|
27
|
+
s.add_development_dependency('rake')
|
|
28
|
+
s.add_development_dependency('redcarpet')
|
|
29
|
+
s.add_development_dependency('rspec', '~> 2.11.0')
|
|
30
|
+
s.add_development_dependency('rubocop', '~> 0.84.0')
|
|
29
31
|
s.add_development_dependency('webmock')
|
|
30
32
|
s.add_development_dependency('yard')
|
|
31
|
-
s.add_development_dependency('redcarpet')
|
|
32
33
|
end
|