kgrift 1.3.108

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.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/KGrift/Gemfile +22 -0
  3. data/KGrift/README.md +66 -0
  4. data/KGrift/bin/kgrift +11 -0
  5. data/KGrift/grifter.yml +224 -0
  6. data/KGrift/internal_test_graphs/basic_test_graph_definition.yml +2915 -0
  7. data/KGrift/internal_test_graphs/unicode_test_graph_definition.yml +3070 -0
  8. data/KGrift/knewton_grifts/analytics_grifts.rb +103 -0
  9. data/KGrift/knewton_grifts/async_helper_grifts.rb +63 -0
  10. data/KGrift/knewton_grifts/authenticator_grifts.rb +46 -0
  11. data/KGrift/knewton_grifts/basic_grifts.rb +29 -0
  12. data/KGrift/knewton_grifts/batch_grifts.rb +14 -0
  13. data/KGrift/knewton_grifts/content_collection_grifts.rb +204 -0
  14. data/KGrift/knewton_grifts/content_collection_v1_grifts.rb +521 -0
  15. data/KGrift/knewton_grifts/content_eid_grifts.rb +41 -0
  16. data/KGrift/knewton_grifts/copy_grifts.rb +151 -0
  17. data/KGrift/knewton_grifts/deprecated_graph_and_taxonomy_grifts.rb +353 -0
  18. data/KGrift/knewton_grifts/goal_grifts.rb +203 -0
  19. data/KGrift/knewton_grifts/graph_and_taxonomy_grifts.rb +136 -0
  20. data/KGrift/knewton_grifts/graph_create_grifts.rb +34 -0
  21. data/KGrift/knewton_grifts/graph_query_grifts.rb +448 -0
  22. data/KGrift/knewton_grifts/graph_tools_grifts.rb +151 -0
  23. data/KGrift/knewton_grifts/graph_validation_grifts.rb +447 -0
  24. data/KGrift/knewton_grifts/helper_grifts.rb +92 -0
  25. data/KGrift/knewton_grifts/jmeter_data_grifts.rb +56 -0
  26. data/KGrift/knewton_grifts/learning_instance_grifts.rb +46 -0
  27. data/KGrift/knewton_grifts/looper_grifts.rb +34 -0
  28. data/KGrift/knewton_grifts/moxy_grifts.rb +64 -0
  29. data/KGrift/knewton_grifts/oauth_grifts.rb +182 -0
  30. data/KGrift/knewton_grifts/partner_grifts.rb +70 -0
  31. data/KGrift/knewton_grifts/partner_support_grifts.rb +85 -0
  32. data/KGrift/knewton_grifts/recommendation_setup_grifts.rb +215 -0
  33. data/KGrift/knewton_grifts/registration_grifts.rb +159 -0
  34. data/KGrift/knewton_grifts/registration_info_grifts.rb +23 -0
  35. data/KGrift/knewton_grifts/report_grifts.rb +122 -0
  36. data/KGrift/knewton_grifts/shell_command_grifts.rb +21 -0
  37. data/KGrift/knewton_grifts/student_flow_grifts.rb +560 -0
  38. data/KGrift/knewton_grifts/tag_grifts.rb +41 -0
  39. data/KGrift/knewton_grifts/test_data_grifts.rb +328 -0
  40. data/KGrift/knewton_grifts/test_user_grifts.rb +264 -0
  41. data/KGrift/lib/dtrace.rb +20 -0
  42. data/KGrift/lib/kgrift.rb +7 -0
  43. data/KGrift/test_data_generators/basic_book_and_taxonomies.rb +35 -0
  44. data/KGrift/test_data_generators/lo_test_graph.rb +34 -0
  45. data/KGrift/test_data_generators/partner_owned_book_and_taxonomies.rb +28 -0
  46. data/KGrift/test_data_generators/partner_owned_book_and_taxonomies_unicode.rb +28 -0
  47. data/KGrift/test_data_generators/sandcastle_book_and_taxonomies.rb +13 -0
  48. data/KGrift/test_data_generators/sandcastle_book_and_taxonomies.yml +3709 -0
  49. data/KGrift/test_data_generators/sandcastle_graph.rb +8 -0
  50. data/KGrift/test_data_generators/sandcastle_graph_definition.json +4483 -0
  51. data/KGrift/test_data_generators/sandcastle_graph_full.rb +7 -0
  52. data/KGrift/test_data_generators/sandcastle_taxonomies.yml +378 -0
  53. data/KGrift/test_data_generators/sandcastle_with_taxons.rb +56 -0
  54. data/KGrift/test_data_generators/sandcastle_with_taxons.yml +3994 -0
  55. data/KGrift/test_data_generators/test_users_and_partners.rb +76 -0
  56. data/kgrift.gemspec +43 -0
  57. metadata +144 -0
@@ -0,0 +1,41 @@
1
+ def get_module_iid graph, eid
2
+ graph['nodes'].select{|n| n['temp_id'] and n['temp_id']==(graph['name']+':'+eid)}.first['id']
3
+ end
4
+
5
+ def get_full_taxon_path taxonomy, taxon_id, path=''
6
+ taxon = taxonomy['taxons'].select{|t| t['id']==taxon_id}.first
7
+ if taxon['parent_id']
8
+ get_full_taxon_path(taxonomy, taxon['parent_id']) + '|' + taxon['name'] + path
9
+ else
10
+ taxon['name'] + path
11
+ end
12
+ end
13
+
14
+ def construct_taxon_eid_map taxonomies
15
+ taxons = []
16
+ taxonomies.each do |taxonomy|
17
+ taxonomy_name = taxonomy['name']
18
+ taxonomy['taxons'].each do |taxon|
19
+ taxons << {
20
+ 'iid' => taxon['id'],
21
+ 'eid' => 'tref-' + taxonomy_name + ":" + get_full_taxon_path(taxonomy, taxon['id'])
22
+ }
23
+ end
24
+ end
25
+ taxons
26
+ end
27
+
28
+ def get_taxon_eid_to_iid_map_for_graph graph_id
29
+ #create LI, get taxonomies, and cleanup
30
+ dummy_li = create_learning_instance 'graph_id' => graph_id
31
+ taxonomies = get_referenced_taxonomies dummy_li['id']
32
+ delete_learning_instance dummy_li['id']
33
+ #construct map list
34
+ map_list = construct_taxon_eid_map taxonomies
35
+ #return hashmap
36
+ map = {}
37
+ map_list.each do |taxon|
38
+ map[taxon['eid']] = taxon['iid']
39
+ end
40
+ map
41
+ end
@@ -0,0 +1,151 @@
1
+ GRIFTER_INSTANCES_BY_ENVIRONMENT = {}
2
+
3
+ def get_grifter_instance_for_env env
4
+ if env
5
+ unless GRIFTER_INSTANCES_BY_ENVIRONMENT[env]
6
+ new_grifter_config = {environment: env}
7
+ new_grifter_config[:config_file] = grifter_configuration[:config_file] if grifter_configuration[:config_file]
8
+ GRIFTER_INSTANCES_BY_ENVIRONMENT[env] = Grifter.new new_grifter_config
9
+ end
10
+ GRIFTER_INSTANCES_BY_ENVIRONMENT[env]
11
+ else
12
+ self
13
+ end
14
+ end
15
+
16
+
17
+ def copy_learning_instance options={}
18
+ options = {
19
+ 'goal_target_score_override' => nil,
20
+ 'goal_days_from_now_override' => nil,
21
+ 'force_metrics' => false
22
+ }.merge(options)
23
+
24
+ source_environment = get_grifter_instance_for_env options['source_environment']
25
+
26
+ original_learning_instance = nil
27
+ original_partner_id = nil
28
+ source_environment.instance_eval do
29
+ set_account :knerd
30
+ # we'll get the learning instance in this special way so we can also get the partner id of it
31
+ # in case the graph_id is an eid, we'll need the partner id to translate it into an iid
32
+ original_learning_instance = get_learning_instance options['learning_instance_id'], additional_headers: { 'X-Include-Partner-Id' => 'true' }
33
+ original_partner_id = kapi.last_response['X-Partner-Id']
34
+ end
35
+
36
+ # figure out the graph id we want to use in our new learning instance
37
+ graph_id = if options['graph_id']
38
+ options['graph_id']
39
+ elsif original_learning_instance['graph_id'] =~ /^gref-/
40
+ source_environment.instance_eval do
41
+ set_account :knerd
42
+ translate_graph_gref_into_internal_id original_partner_id, original_learning_instance['graph_id']
43
+ end
44
+ else
45
+ original_learning_instance['graph_id']
46
+ end
47
+
48
+ new_learning_instance = create_learning_instance 'name' => "test learning instance for interesting goals made #{Time.now}",
49
+ 'graph_id' => graph_id
50
+
51
+ if options['goal_id']
52
+ goal_id_list = [ options['goal_id'] ]
53
+ elsif options['goal_id_list']
54
+ goal_id_list = options['goal_id_list']
55
+ end
56
+
57
+ if goal_id_list
58
+ new_goal_list = []
59
+ for goal_id in goal_id_list
60
+ goal_to_copy = source_environment.instance_eval do
61
+ get_goal original_learning_instance['id'], goal_id
62
+ end
63
+ # the API will create a new id for this new goal
64
+ goal_to_copy.delete('id')
65
+ # if this is an MTMPTS/LO goal, delete the target_ids too
66
+ for target_module in goal_to_copy['target_modules']
67
+ if target_module.include?('target_id')
68
+ target_module.delete('target_id')
69
+ end
70
+ end
71
+ if options['goal_target_score_override']
72
+ goal_to_copy['target_modules'].each {|tm| tm['target_score'] = options['goal_target_score_override'] }
73
+ end
74
+ if options['goal_days_from_now_override']
75
+ goal_target_date_override = days_from_now options['goal_days_from_now_override']
76
+ goal_to_copy['target_modules'].each {|tm| tm['target_date'] = goal_target_date_override }
77
+ end
78
+ if options['force_metrics']
79
+ goal_to_copy['metrics_enabled'] = true
80
+ end
81
+ new_goal = create_goal new_learning_instance['id'], goal_to_copy
82
+ new_goal_list << new_goal
83
+ end
84
+ else
85
+ new_goal_list = [ nil ] # previously-- if goal_id wasn't passed in, goal => nil was returned
86
+ end
87
+ if new_goal_list.length > 1
88
+ {
89
+ 'learning_instance' => new_learning_instance,
90
+ 'goal_list' => new_goal_list,
91
+ }
92
+ else
93
+ {
94
+ 'learning_instance' => new_learning_instance,
95
+ 'goal' => new_goal_list[0],
96
+ }
97
+ end
98
+ end
99
+
100
+
101
+ def prepare_graph_copy graph_id, options={}
102
+
103
+ options = {
104
+ remove_taxon_ids: true
105
+ }
106
+
107
+ graph = get_graph_and_cache_it graph_id
108
+
109
+ Log.info "Copying graph: #{graph['id']}"
110
+
111
+ orig_id = graph.delete 'id'
112
+ graph['name'] = "Copy of #{orig_id}(#{graph['name']})"
113
+
114
+
115
+ id_to_temp_id = {}
116
+ graph['nodes'].each_with_index do |node, i|
117
+ temp_id = get_mref_eid(i.to_s)
118
+ node['temp_id'] = temp_id
119
+ id_to_temp_id[node.delete('id')] = temp_id
120
+
121
+ node['name'] = "#{node['subtype']}-#{random_string(8)}" unless node['name']
122
+
123
+ if options[:remove_taxon_ids]
124
+ node.delete 'taxon_ids'
125
+ end
126
+
127
+ end
128
+
129
+ graph['edges'].each do |edge|
130
+ edge['start_temp_id'] = id_to_temp_id[edge.delete('start')]
131
+ edge['end_temp_id'] = id_to_temp_id[edge.delete('end')]
132
+ end
133
+
134
+ filename = "copy_#{orig_id}.json"
135
+ Log.info "Writing #{filename}"
136
+ File.open filename, 'w' do |f|
137
+ f.write(JSON.pretty_generate(graph))
138
+ end
139
+
140
+ end
141
+
142
+
143
+ def post_graph_from_file filename
144
+ graph_obj = YAML.load_file filename
145
+
146
+ p graph_obj['name']
147
+ graph = create_graph graph_obj
148
+
149
+ Log.info "Created graph: #{graph['id']}"
150
+ graph['id']
151
+ end
@@ -0,0 +1,353 @@
1
+ # DEPRECATED METHODS
2
+ # DELETE THESE ONCE OLYMPIK MIGRATION IS DONE
3
+ # TE-1225
4
+
5
+
6
+ def create_graph overrides={}, params={}
7
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
8
+ Log.info "Creating graph"
9
+ response = nil
10
+ temp_id_one = get_mref_eid('1')
11
+ temp_id_two = get_mref_eid('2')
12
+ do_as_knewton_partner overrides.delete('use_current_user') do
13
+ response = kapi.post '/v0/graphs?' + URI.encode_www_form(params), {
14
+ 'name' => random_graph_name,
15
+ 'nodes' => [
16
+ {'temp_id' => temp_id_one, 'type' => 'concept', 'name' => 'n1', 'subtype' => nil },
17
+ {'temp_id' => temp_id_two, 'type' => 'concept', 'name' => 'n2', 'subtype' => nil },
18
+ ],
19
+ 'edges' =>
20
+ [
21
+ {
22
+ 'start_temp_id' => temp_id_one,
23
+ 'end_temp_id' => temp_id_two,
24
+ 'type' => 'prerequisite',
25
+ 'custom_data' => {'custom_key' => 'custom_value'},
26
+ }
27
+ ]
28
+ }.merge(overrides)
29
+ end
30
+ Log.info "Waiting for titanik to create graph"
31
+ wait_for_code 200 do
32
+ get_graph_and_cache_it response["id"]
33
+ end
34
+ response
35
+ end
36
+
37
+ def create_basic_concept_graph uri_params={}
38
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
39
+ concept1 = get_mref_eid("concept1")
40
+
41
+ bndl1 = get_mref_eid("bndl1")
42
+ bndl2 = get_mref_eid("bndl2")
43
+ bndl3 = get_mref_eid("bndl3")
44
+
45
+ atom1 = get_mref_eid("atom1")
46
+ atom2 = get_mref_eid("atom2")
47
+ atom3 = get_mref_eid("atom3")
48
+ atom4 = get_mref_eid("atom4")
49
+
50
+ pool1 = get_mref_eid("pool1")
51
+ pool2 = get_mref_eid("pool2")
52
+
53
+ name = 'Single Concept Graph ' + random_string
54
+ graph_params = {
55
+ 'name' => name,
56
+ 'temp_id' => 'mref-'+name,
57
+ 'nodes' => [
58
+ { 'temp_id' => concept1, 'type' => 'concept', 'subtype' => nil, 'name' => 'Transgressive Placemaking' },
59
+
60
+ { 'temp_id' => bndl1, 'type' => 'module', 'subtype' => 'bndl', 'name' => 'History of Tresspassing' },
61
+ { 'temp_id' => bndl2, 'type' => 'module', 'subtype' => 'bndl', 'name' => 'Ethics of Tresspassing' },
62
+ { 'temp_id' => bndl3, 'type' => 'module', 'subtype' => 'bndl', 'name' => 'Laws of Tresspassing' },
63
+
64
+ { 'temp_id' => atom1, 'type' => 'module', 'subtype' => 'atom', 'name' => 'Emergence of private property' },
65
+ { 'temp_id' => atom2, 'type' => 'module', 'subtype' => 'atom', 'name' => 'Quiz #1 - Tresspasing concepts' },
66
+ { 'temp_id' => atom3, 'type' => 'module', 'subtype' => 'atom', 'name' => 'Natural rights vs Legal righhts' },
67
+ { 'temp_id' => atom4, 'type' => 'module', 'subtype' => 'atom', 'name' => 'Quiz #2 - Tresspassing Laws' },
68
+
69
+ { 'temp_id' => pool1, 'type' => 'module', 'subtype' => 'pool', 'name' => 'secret pool 1' },
70
+ { 'temp_id' => pool2, 'type' => 'module', 'subtype' => 'pool', 'name' => 'secret pool 2' },
71
+ ],
72
+ 'edges' => [
73
+ #one pool teaches, one pool assesses
74
+ { 'start_temp_id' => concept1, 'end_temp_id' => pool1, 'type' => 'taught_by' },
75
+ { 'start_temp_id' => concept1, 'end_temp_id' => pool2, 'type' => 'assessed_by' },
76
+
77
+ { 'start_temp_id' => pool1, 'end_temp_id' => atom1, 'type' => 'contains' },
78
+ { 'start_temp_id' => pool1, 'end_temp_id' => atom2, 'type' => 'contains' },
79
+ { 'start_temp_id' => pool1, 'end_temp_id' => atom3, 'type' => 'contains' },
80
+
81
+ { 'start_temp_id' => pool2, 'end_temp_id' => atom2, 'type' => 'contains' },
82
+ { 'start_temp_id' => pool2, 'end_temp_id' => atom3, 'type' => 'contains' },
83
+ { 'start_temp_id' => pool2, 'end_temp_id' => atom4, 'type' => 'contains' },
84
+
85
+ { 'start_temp_id' => bndl1, 'end_temp_id' => atom1, 'type' => 'contains' },
86
+ { 'start_temp_id' => bndl1, 'end_temp_id' => atom2, 'type' => 'contains' },
87
+
88
+ { 'start_temp_id' => bndl2, 'end_temp_id' => atom2, 'type' => 'contains' },
89
+ { 'start_temp_id' => bndl2, 'end_temp_id' => atom3, 'type' => 'contains' },
90
+
91
+ { 'start_temp_id' => bndl3, 'end_temp_id' => atom3, 'type' => 'contains' },
92
+ { 'start_temp_id' => bndl3, 'end_temp_id' => atom4, 'type' => 'contains' },
93
+ ],
94
+ }
95
+
96
+
97
+ create_graph graph_params, uri_params
98
+ end
99
+
100
+
101
+ # DEPRECATED
102
+ # this is the old graph_generator_grifts.rb
103
+
104
+
105
+ def create_test_graph options={}
106
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
107
+ graph_obj = generate_test_graph_object options
108
+ graph = create_graph graph_obj
109
+
110
+ graph['id']
111
+ end
112
+
113
+ #we used to have a real create_random_graph method
114
+ #it didnt make realistic graphs
115
+ #now it makes realistic graphs
116
+ def create_random_graph options={}
117
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
118
+ graph_obj = generate_test_graph_object options
119
+ graph = create_graph graph_obj
120
+ graph
121
+ end
122
+
123
+ def generate_test_graph_object options={}
124
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
125
+ options = {
126
+ concept_depth: 3,
127
+ num_starting_concepts: 1,
128
+ num_post_requisites_per_concept: 2,
129
+ }.merge(options)
130
+
131
+ graph = {
132
+ 'name' => "Generated test graph #{datetime}",
133
+ 'nodes' => [],
134
+ 'edges' => [],
135
+ }
136
+
137
+ concept_num = 1
138
+ prereqconcepts = []
139
+ options[:num_starting_concepts].times do
140
+ new_concept_tempid = add_concept_to_graph graph, [], options.merge({concept_num: concept_num})
141
+ prereqconcepts << new_concept_tempid
142
+ concept_num += 1
143
+ end
144
+
145
+ (options[:concept_depth] - 1).times do
146
+ new_concepts = []
147
+ prereqconcepts.each do |prereqconcept|
148
+ options[:num_post_requisites_per_concept].times do
149
+ new_concept_tempid = add_concept_to_graph graph, [prereqconcept], options.merge({concept_num: concept_num})
150
+ new_concepts << new_concept_tempid
151
+ concept_num += 1
152
+ end
153
+ end
154
+ prereqconcepts = new_concepts
155
+ end
156
+
157
+ return graph
158
+ end
159
+
160
+ def add_concept_to_graph graph, prereq_temp_ids=[], options={}
161
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
162
+ options = {
163
+ num_instructional_bundles_per_concept: 1,
164
+ num_atoms_per_instructional_bundle: 1,
165
+ num_assessment_bundles_per_concept: 1,
166
+ num_atoms_per_assessment_bundle: 3,
167
+ concept_num: random_string(8),
168
+ }.merge(options)
169
+
170
+ concept_name = get_mref_eid("concept-#{options[:concept_num]}")
171
+ assessing_pool_name = get_mref_eid('assessing_pool-'+concept_name)
172
+ teaching_pool_name = get_mref_eid('teaching_pool-'+concept_name)
173
+
174
+ concept = {
175
+ 'nodes' => [
176
+ { 'temp_id' => concept_name, 'type' => 'concept', 'subtype' => nil, 'name' => concept_name },
177
+ { 'temp_id' => teaching_pool_name, 'type' => 'module', 'subtype' => 'pool', 'name' => 'teaching_pool' },
178
+ { 'temp_id' => assessing_pool_name, 'type' => 'module', 'subtype' => 'pool', 'name' => 'assessing_pool' },
179
+ ],
180
+ 'edges' => prereq_temp_ids.map{|prereq| { 'start_temp_id' => prereq, 'end_temp_id' => concept_name, 'type' => 'prerequisite'}} +
181
+ [
182
+ { 'start_temp_id' => concept_name, 'end_temp_id' => teaching_pool_name, 'type' => 'taught_by' },
183
+ { 'start_temp_id' => concept_name, 'end_temp_id' => assessing_pool_name, 'type' => 'assessed_by' },
184
+ ],
185
+ }
186
+
187
+ options[:num_instructional_bundles_per_concept].times do |bndl_num|
188
+ bndl_name = concept_name + "-instructional-bundle-#{bndl_num}"
189
+ concept['nodes'] << {'temp_id' => bndl_name, 'type' => 'module', 'subtype' => 'bndl', 'name' => bndl_name }
190
+
191
+ options[:num_atoms_per_instructional_bundle].times do |atom_num|
192
+ atom_name = get_mref_eid(bndl_name + "-atom-#{atom_num}")
193
+ concept['nodes'] << {'temp_id' => atom_name, 'type' => 'module', 'subtype' => 'atom', 'name' => atom_name }
194
+ concept['edges'] << {'start_temp_id' => teaching_pool_name, 'end_temp_id' => atom_name, 'type' => 'contains' }
195
+ concept['edges'] << {'start_temp_id' => bndl_name, 'end_temp_id' => atom_name, 'type' => 'contains' }
196
+ end
197
+ end
198
+
199
+ options[:num_assessment_bundles_per_concept].times do |bndl_num|
200
+ bndl_name = concept_name + "-assessment-bundle-#{bndl_num}"
201
+ concept['nodes'] << {'temp_id' => bndl_name, 'type' => 'module', 'subtype' => 'bndl', 'name' => bndl_name }
202
+
203
+ options[:num_atoms_per_assessment_bundle].times do |atom_num|
204
+ atom_name = get_mref_eid(bndl_name + "-atom-#{atom_num}")
205
+ concept['nodes'] << {'temp_id' => atom_name, 'type' => 'module', 'subtype' => 'atom', 'name' => atom_name }
206
+ concept['edges'] << {'start_temp_id' => assessing_pool_name, 'end_temp_id' => atom_name, 'type' => 'contains' }
207
+ concept['edges'] << {'start_temp_id' => bndl_name, 'end_temp_id' => atom_name, 'type' => 'contains' }
208
+ end
209
+ end
210
+
211
+ graph['nodes'] += concept['nodes']
212
+ graph['edges'] += concept['edges']
213
+
214
+ return concept_name
215
+ end
216
+
217
+
218
+ # DEPRECATED TAXONOMY GET METHODS
219
+ # the old taxonomy_grifts.rb
220
+
221
+ def get_taxonomy (id, overrides={})
222
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
223
+ Log.info "Getting taxonomy by id: '#{id}'."
224
+ do_as_knewton_partner overrides.delete('use_current_user') do
225
+ kapi.get "/v0/taxonomies/#{id}"
226
+ end
227
+ end
228
+
229
+ def get_taxonomies_for_partner_id(partner_id, overrides={})
230
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
231
+ Log.info "Getting taxonomies for partner id: '#{partner_id}'."
232
+
233
+ do_as_knewton_partner overrides.delete('use_current_user') do
234
+ kapi.get "/v0/taxonomies?"+ URI.encode_www_form({"partner_id" => partner_id})
235
+ end
236
+ end
237
+
238
+ def get_referenced_taxonomies(learning_instance_id, overrides={})
239
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
240
+ Log.info "Getting referenced taxonomies by learning instance id: '#{learning_instance_id}'."
241
+
242
+ do_as_knewton_partner overrides.delete('use_current_user') do
243
+ kapi.get "/v0/taxonomies?"+ URI.encode_www_form({"learning_instance_id" => learning_instance_id})
244
+ end
245
+ end
246
+
247
+
248
+
249
+ def create_taxonomy (overrides={}, params={})
250
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
251
+ Log.info "Creating taxonomy."
252
+ do_as_knewton_partner overrides.delete('use_current_user') do
253
+ kapi.post '/v0/taxonomies?' + URI.encode_www_form(params), {
254
+ 'name' => random_taxonomy_name,
255
+ 'type' => 'role'
256
+ }.merge(overrides)
257
+ end
258
+ end
259
+
260
+
261
+ def create_taxon (taxonomy_id, overrides={})
262
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
263
+ Log.info "Creating taxon on taxonomy with id: '#{taxonomy_id}'."
264
+ response = nil
265
+ do_as_knewton_partner overrides.delete('use_current_user') do
266
+ response = kapi.post "/v0/taxonomies/#{taxonomy_id}/taxons", {
267
+ 'name' => 'footaxon',
268
+ }.merge(overrides)
269
+ end
270
+ Log.info "Waiting for Titanik to create taxon"
271
+ eventually do
272
+ taxonomy = get_taxonomy taxonomy_id
273
+ (taxonomy.find{|r| response['id']}).should_not == nil
274
+ end
275
+ response
276
+ end
277
+
278
+ def create_basic_taxonomy (overrides={}, params={})
279
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
280
+ basic_json = {
281
+ 'name' => 'taxidermy',
282
+ 'type' => 'role',
283
+ 'taxons' => [
284
+ {'path' => 'basics|methods|material|basics|clay'},
285
+ {'path' => 'basics|methods|material|chemicals|dextrin'},
286
+ {'path' => 'basics|methods|tools|fleshing|throat_scraper_cone'},
287
+ {'path' => 'animals|fish|blobfish'}
288
+ ]
289
+ }
290
+ response = create_taxonomy(basic_json.merge(overrides), params)
291
+ kapi.last_response.status.should == 201
292
+ Log.info "Waiting for titanik to create taxonomy"
293
+ eventually do
294
+ begin
295
+ get_taxonomy response["id"]
296
+ kapi.last_response.status.should == 200
297
+ rescue Grifter::RequestException
298
+ # ignored
299
+ end
300
+ kapi.last_response.status.should == 200
301
+ end
302
+ response
303
+ end
304
+
305
+ def create_basic_taxon_graph
306
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
307
+ taxonomy = create_basic_taxonomy
308
+ taxon_id1 = taxonomy['taxons'][0]['id']
309
+ taxon_id2 = taxonomy['taxons'][2]['id']
310
+
311
+ footempid1 = get_tref_eid("footempid1")
312
+ footempid2 = get_tref_eid("footempid2")
313
+ footempid3 = get_tref_eid("footempid3")
314
+ footempid4 = get_tref_eid("footempid4")
315
+ footempid5 = get_tref_eid("footempid5")
316
+ conceptparty = get_tref_eid("conceptparty")
317
+ poolparty = get_tref_eid("poolparty")
318
+
319
+ create_graph 'nodes' => [
320
+ {'temp_id' => footempid1, 'type' => 'module', 'name' => 'fooname1', 'subtype' => 'atom', 'taxon_ids' => [taxon_id1], 'is_taxon_recommendable' => true},
321
+ {'temp_id' => footempid2, 'type' => 'module', 'name' => 'fooname2', 'subtype' => 'atom', 'taxon_ids' => [taxon_id2], 'is_taxon_recommendable' => true},
322
+ {'temp_id' => footempid3, 'type' => 'module', 'name' => 'fooname3', 'subtype' => 'atom', 'taxon_ids' => [taxon_id2], 'is_taxon_recommendable' => true},
323
+ {'temp_id' => footempid4, 'type' => 'module', 'name' => 'fooname4', 'subtype' => 'atom', 'taxon_ids' => [taxon_id2], 'is_taxon_recommendable' => true},
324
+ {'temp_id' => footempid5, 'type' => 'module', 'name' => 'fooname5', 'subtype' => 'atom', 'taxon_ids' => [taxon_id2], 'is_taxon_recommendable' => true},
325
+ {'temp_id' => conceptparty, 'type' => 'concept', 'name' => 'some concept'},
326
+ {'temp_id' => poolparty, 'type' => 'module', 'subtype' => 'pool', 'name' => 'some pool', 'is_taxon_recommendable' => true},
327
+ ],
328
+ 'edges' => [
329
+ { 'type' => 'contains', 'start_temp_id' => poolparty, 'end_temp_id' => footempid1},
330
+ { 'type' => 'contains', 'start_temp_id' => poolparty, 'end_temp_id' => footempid2},
331
+ { 'type' => 'contains', 'start_temp_id' => poolparty, 'end_temp_id' => footempid3},
332
+ { 'type' => 'contains', 'start_temp_id' => poolparty, 'end_temp_id' => footempid4},
333
+ { 'type' => 'contains', 'start_temp_id' => poolparty, 'end_temp_id' => footempid5},
334
+ { 'type' => 'assessed_by', 'start_temp_id' => conceptparty, 'end_temp_id' => poolparty},
335
+ ]
336
+ end
337
+
338
+ def get_all_graph_taxonomies graph
339
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
340
+ graph['nodes'].select{ |node| node['type']=='module' and
341
+ (node['subtype']=='atom' or node['subtype']=='bndl')
342
+ }.map{ |node| node['taxon_ids'] }.flatten.uniq
343
+ end
344
+
345
+ def get_modules_by_taxonomy graph, taxon_id
346
+ Log.warn "DEPRECATED GRIFT CALLED: #{__method__}"
347
+ #select all modules by taxon id
348
+ all_module_ids = graph['nodes'].select{|node| node['type']=='module' and
349
+ (node['subtype']=='atom' or node['subtype']=='bndl') and
350
+ node['taxon_ids'].include?(taxon_id)
351
+ }.map{|node| node['id'] }
352
+ return all_module_ids
353
+ end