canvas_sync 0.20.0 → 0.20.3
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/lib/canvas_sync/concerns/ability_helper.rb +1 -0
- data/lib/canvas_sync/generators/templates/migrations/create_learning_outcome_results.rb +46 -0
- data/lib/canvas_sync/generators/templates/models/learning_outcome_result.rb +48 -0
- data/lib/canvas_sync/importers/bulk_importer.rb +17 -8
- data/lib/canvas_sync/processors/model_mappings.yml +73 -0
- data/lib/canvas_sync/processors/provisioning_report_processor.rb +4 -0
- data/lib/canvas_sync/record.rb +1 -0
- data/lib/canvas_sync/version.rb +1 -1
- data/lib/canvas_sync.rb +2 -1
- data/spec/canvas_sync/processors/provisioning_report_processor_spec.rb +12 -0
- data/spec/dummy/app/models/learning_outcome_result.rb +54 -0
- data/spec/dummy/db/migrate/20240523101010_create_learning_outcome_results.rb +52 -0
- data/spec/dummy/db/schema.rb +41 -1
- data/spec/support/fixtures/reports/learning_outcome_results.csv +3 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43303b8631013b7ccf949d391e027e98fb8c18abfbd36f22cddedc8ee2bfda7d
|
4
|
+
data.tar.gz: 35ded010f078affa8a164f7168c313318e90c9c1415afbc1c049a059912204d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 214cf249fbadc69713bd7a29159874fc64891e886438f72a43f02c08d2f45b46f8d52fd7c3916d12fe260d94f669df42a1f9c46f69c8c56915760fd73878ff14
|
7
|
+
data.tar.gz: b8c1b5b0038f12a676704e8b957894441f9566dfcfa1a91132436520aa12b0d86590a57f5d74fccc27f769fc82b1530ad908e88693d2213b7888ad739e07a087
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# <%= autogenerated_migration_warning %>
|
2
|
+
|
3
|
+
class CreateLearningOutcomeResults < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
create_table :learning_outcome_results do |t|
|
6
|
+
t.bigint :canvas_id, null: false
|
7
|
+
t.bigint :canvas_context_id
|
8
|
+
t.string :canvas_context_type
|
9
|
+
t.bigint :canvas_association_id
|
10
|
+
t.string :canvas_association_type
|
11
|
+
t.bigint :canvas_content_tag_id
|
12
|
+
t.bigint :canvas_learning_outcome_id
|
13
|
+
t.bigint :canvas_user_id
|
14
|
+
t.boolean :mastery
|
15
|
+
t.boolean :original_mastery
|
16
|
+
t.bigint :canvas_artifact_id
|
17
|
+
t.string :canvas_artifact_type
|
18
|
+
t.datetime :assessed_at
|
19
|
+
t.string :title
|
20
|
+
t.float :percent
|
21
|
+
t.bigint :canvas_associated_asset_id
|
22
|
+
t.string :canvas_associated_asset_type
|
23
|
+
t.integer :attempt
|
24
|
+
t.float :score
|
25
|
+
t.float :possible
|
26
|
+
t.float :original_score
|
27
|
+
t.float :original_possible
|
28
|
+
t.string :workflow_state
|
29
|
+
|
30
|
+
t.timestamps
|
31
|
+
end
|
32
|
+
|
33
|
+
add_index :learning_outcome_results, :canvas_id, unique: true
|
34
|
+
add_index :learning_outcome_results, %i[
|
35
|
+
canvas_user_id
|
36
|
+
canvas_content_tag_id
|
37
|
+
canvas_association_id
|
38
|
+
canvas_association_type
|
39
|
+
canvas_associated_asset_id
|
40
|
+
canvas_associated_asset_type
|
41
|
+
], unique: true, name: :index_learning_outcome_results_association
|
42
|
+
add_index :learning_outcome_results, :canvas_content_tag_id
|
43
|
+
add_index :learning_outcome_results, :canvas_learning_outcome_id
|
44
|
+
add_index :learning_outcome_results, %i[canvas_artifact_id canvas_artifact_type], name: :index_learning_outcome_results_on_canvas_arid_and_artype
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# # <%= autogenerated_model_warning %>
|
4
|
+
|
5
|
+
class LearningOutcomeResult < ActiveRecord::Base
|
6
|
+
include CanvasSync::Record
|
7
|
+
include CanvasSync::Concerns::ApiSyncable
|
8
|
+
|
9
|
+
belongs_to :user, primary_key: :canvas_id, foreign_key: :canvas_user_id, optional: true
|
10
|
+
belongs_to :learning_outcome, primary_key: :canvas_id, foreign_key: :canvas_learning_outcome_id, optional: true
|
11
|
+
belongs_to :alignment, class_name: "ContentTag", primary_key: :canvas_id, foreign_key: :canvas_content_tag_id, optional: true
|
12
|
+
belongs_to :association_object,
|
13
|
+
polymorphic: [:rubric_association, :assignment],
|
14
|
+
foreign_key: :association_id,
|
15
|
+
foreign_type: :association_type,
|
16
|
+
optional: true
|
17
|
+
belongs_to :artifact,
|
18
|
+
polymorphic: [:rubric_assessment, :submission],
|
19
|
+
primary_key: :canvas_artifact_id,
|
20
|
+
foreign_key: :canvas_artifact_id,
|
21
|
+
foreign_type: :canvas_artifact_type,
|
22
|
+
optional: true
|
23
|
+
|
24
|
+
belongs_to :context, polymorphic: [:course], primary_key: :canvas_id, foreign_key: :canvas_context_id, foreign_type: :canvas_context_type, optional: true
|
25
|
+
|
26
|
+
# Not yet implemented in CanvasSync
|
27
|
+
# belongs_to :associated_asset,
|
28
|
+
# polymorphic:
|
29
|
+
# [:assessment_question,
|
30
|
+
# :assignment,
|
31
|
+
# { quiz: "Quizzes::Quiz", assessment: "LiveAssessments::Assessment" }],
|
32
|
+
# polymorphic_prefix: true
|
33
|
+
|
34
|
+
# Not yet implemented in CanvasSync
|
35
|
+
# has_many :learning_outcome_question_results, dependent: :destroy
|
36
|
+
|
37
|
+
api_syncable({
|
38
|
+
canvas_id: :id,
|
39
|
+
canvas_content_tag_id: :links&.[]("alignment"),
|
40
|
+
canvas_learning_outcome_id: :links&.[]("learning_outcome"),
|
41
|
+
canvas_user_id: :links&.[]("user"),
|
42
|
+
score: :score,
|
43
|
+
assessed_at: :submitted_or_assessed_at,
|
44
|
+
percent: :percent
|
45
|
+
}, ->(api) {
|
46
|
+
api.get("/api/v1/courses/#{self.canvas_context_id}/#{self.canvas_id}")&.find { |item| item[:id] == self.canvas_id }
|
47
|
+
})
|
48
|
+
end
|
@@ -102,15 +102,24 @@ module CanvasSync
|
|
102
102
|
options = { validate: false, on_duplicate_key_update: update_conditions }.merge(import_args)
|
103
103
|
options.delete(:on_duplicate_key_update) if options.key?(:on_duplicate_key_ignore)
|
104
104
|
|
105
|
-
result =
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
105
|
+
result = nil
|
106
|
+
callback_env = {
|
107
|
+
batch: rows,
|
108
|
+
import_result: nil,
|
109
|
+
import_options: options,
|
110
110
|
}
|
111
|
-
|
112
|
-
|
113
|
-
|
111
|
+
ClassCallbackExecutor.run_if_defined(klass, :sync_batch_import, env: callback_env) do
|
112
|
+
result = klass.import(columns, rows, options)
|
113
|
+
callback_env[:import_result] = result
|
114
|
+
|
115
|
+
global_updates = {
|
116
|
+
canvas_synced_at: DateTime.now,
|
117
|
+
canvas_sync_batch_id: JobBatches::Batch.current_context[:sync_batch_id],
|
118
|
+
}
|
119
|
+
global_updates.slice!(*klass.column_names.map(&:to_sym))
|
120
|
+
if global_updates.present? && result.ids.present?
|
121
|
+
klass.where(id: result.ids).update_all(global_updates)
|
122
|
+
end
|
114
123
|
end
|
115
124
|
|
116
125
|
result
|
@@ -569,6 +569,79 @@ learning_outcomes:
|
|
569
569
|
database_column_name: short_description
|
570
570
|
type: text
|
571
571
|
|
572
|
+
learning_outcome_results:
|
573
|
+
conflict_target: id
|
574
|
+
report_columns:
|
575
|
+
id:
|
576
|
+
database_column_name: canvas_id
|
577
|
+
type: integer
|
578
|
+
context_id:
|
579
|
+
database_column_name: canvas_context_id
|
580
|
+
type: integer
|
581
|
+
context_type:
|
582
|
+
database_column_name: canvas_context_type
|
583
|
+
type: string
|
584
|
+
association_id:
|
585
|
+
database_column_name: canvas_association_id
|
586
|
+
type: integer
|
587
|
+
association_type:
|
588
|
+
database_column_name: canvas_association_type
|
589
|
+
type: string
|
590
|
+
content_tag_id:
|
591
|
+
database_column_name: canvas_content_tag_id
|
592
|
+
type: integer
|
593
|
+
learning_outcome_id:
|
594
|
+
database_column_name: canvas_learning_outcome_id
|
595
|
+
type: integer
|
596
|
+
user_id:
|
597
|
+
database_column_name: canvas_user_id
|
598
|
+
type: integer
|
599
|
+
mastery:
|
600
|
+
database_column_name: mastery
|
601
|
+
type: boolean
|
602
|
+
original_mastery:
|
603
|
+
database_column_name: original_mastery
|
604
|
+
type: boolean
|
605
|
+
artifact_id:
|
606
|
+
database_column_name: canvas_artifact_id
|
607
|
+
type: integer
|
608
|
+
artifact_type:
|
609
|
+
database_column_name: canvas_artifact_type
|
610
|
+
type: string
|
611
|
+
assessed_at:
|
612
|
+
database_column_name: assessed_at
|
613
|
+
type: datetime
|
614
|
+
title:
|
615
|
+
database_column_name: title
|
616
|
+
type: string
|
617
|
+
percent:
|
618
|
+
database_column_name: percent
|
619
|
+
type: float
|
620
|
+
associated_asset_id:
|
621
|
+
database_column_name: canvas_associated_asset_id
|
622
|
+
type: integer
|
623
|
+
associated_asset_type:
|
624
|
+
database_column_name: canvas_associated_asset_type
|
625
|
+
type: string
|
626
|
+
attempt:
|
627
|
+
database_column_name: attempt
|
628
|
+
type: integer
|
629
|
+
score:
|
630
|
+
database_column_name: score
|
631
|
+
type: float
|
632
|
+
possible:
|
633
|
+
database_column_name: possible
|
634
|
+
type: float
|
635
|
+
original_score:
|
636
|
+
database_column_name: original_score
|
637
|
+
type: float
|
638
|
+
original_possible:
|
639
|
+
database_column_name: original_possible
|
640
|
+
type: float
|
641
|
+
workflow_state:
|
642
|
+
database_column_name: workflow_state
|
643
|
+
type: string
|
644
|
+
|
572
645
|
course_nicknames:
|
573
646
|
conflict_target:
|
574
647
|
- canvas_user_id
|
@@ -124,6 +124,10 @@ module CanvasSync
|
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
|
+
def bulk_process_learning_outcome_results(report_file_path)
|
128
|
+
do_bulk_import(report_file_path, LearningOutcomeResult, options: @options)
|
129
|
+
end
|
130
|
+
|
127
131
|
def bulk_process_course_nicknames(report_file_path)
|
128
132
|
exists = []
|
129
133
|
do_bulk_import(report_file_path, CourseNickname, options: @options) do |row|
|
data/lib/canvas_sync/record.rb
CHANGED
data/lib/canvas_sync/version.rb
CHANGED
data/lib/canvas_sync.rb
CHANGED
@@ -46,6 +46,7 @@ module CanvasSync
|
|
46
46
|
grading_period_groups
|
47
47
|
content_migrations
|
48
48
|
learning_outcomes
|
49
|
+
learning_outcome_results
|
49
50
|
course_nicknames
|
50
51
|
rubrics
|
51
52
|
rubric_associations
|
@@ -214,7 +215,7 @@ module CanvasSync
|
|
214
215
|
end
|
215
216
|
|
216
217
|
current_chain.insert(
|
217
|
-
generate_provisioning_jobs(models, options)
|
218
|
+
generate_provisioning_jobs(models - ['terms'], options)
|
218
219
|
)
|
219
220
|
|
220
221
|
# Skip syncing terms if not required
|
@@ -131,6 +131,18 @@ RSpec.describe CanvasSync::Processors::ProvisioningReportProcessor do
|
|
131
131
|
}.to change { LearningOutcome.count }.by(2)
|
132
132
|
end
|
133
133
|
|
134
|
+
it 'processes learning_outcome_results' do
|
135
|
+
expect {
|
136
|
+
subject.process('spec/support/fixtures/reports/learning_outcome_results.csv', { models: ['learning_outcome_results'] }, 1)
|
137
|
+
}.to change { LearningOutcomeResult.count }.by(2)
|
138
|
+
|
139
|
+
columns = LearningOutcomeResult.attribute_names - ['id', 'created_at', 'updated_at']
|
140
|
+
expect(LearningOutcomeResult.all.pluck(columns.join(','))).to eq([
|
141
|
+
[1, 1, 'Course', 1, 'RubricAssociation', 1, 1, 1, true, true, 1, 'RubricAssessment', '2012-01-01T00:00:00Z', 'Learning Outcome Result 1', 1.0, 1, 'LearningOutcomeGroup', 1, 5.0, 5.0, 5.0, 5.0, 'active'],
|
142
|
+
[2, 2, 'Course', 2, 'RubricAssociation', 2, 2, 2, true, true, 2, 'RubricAssessment', '2013-01-01T00:00:00Z', 'Learning Outcome Result 2', 2.0, 2, 'LearningOutcomeGroup', 1, 10.0, 10.0, 10.0, 10.0, 'active']
|
143
|
+
])
|
144
|
+
end
|
145
|
+
|
134
146
|
it 'processes course_nicknames' do
|
135
147
|
CourseNickname.create(canvas_user_preference_value_id: 42, canvas_course_id: 42, canvas_user_id: 42, nickname: 'test')
|
136
148
|
expect(CourseNickname.all.pluck(:canvas_user_preference_value_id)).to include(42)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# # #
|
4
|
+
# AUTO GENERATED MIGRATION
|
5
|
+
# This migration was auto generated by the CanvasSync Gem.
|
6
|
+
# You can add new columns to this table, but removing or
|
7
|
+
# re-naming ones created here may break Canvas Syncing.
|
8
|
+
#
|
9
|
+
|
10
|
+
|
11
|
+
class LearningOutcomeResult < ActiveRecord::Base
|
12
|
+
include CanvasSync::Record
|
13
|
+
include CanvasSync::Concerns::ApiSyncable
|
14
|
+
|
15
|
+
belongs_to :user, primary_key: :canvas_id, foreign_key: :canvas_user_id, optional: true
|
16
|
+
belongs_to :learning_outcome, primary_key: :canvas_id, foreign_key: :canvas_learning_outcome_id, optional: true
|
17
|
+
belongs_to :alignment, class_name: "ContentTag", primary_key: :canvas_id, foreign_key: :canvas_content_tag_id, optional: true
|
18
|
+
belongs_to :association_object,
|
19
|
+
polymorphic: [:rubric_association, :assignment],
|
20
|
+
foreign_key: :association_id,
|
21
|
+
foreign_type: :association_type,
|
22
|
+
optional: true
|
23
|
+
belongs_to :artifact,
|
24
|
+
polymorphic: [:rubric_assessment, :submission],
|
25
|
+
primary_key: :canvas_artifact_id,
|
26
|
+
foreign_key: :canvas_artifact_id,
|
27
|
+
foreign_type: :canvas_artifact_type,
|
28
|
+
optional: true
|
29
|
+
|
30
|
+
belongs_to :context, polymorphic: [:course], primary_key: :canvas_id, foreign_key: :canvas_context_id, foreign_type: :canvas_context_type, optional: true
|
31
|
+
|
32
|
+
# Not yet implemented in CanvasSync
|
33
|
+
# belongs_to :associated_asset,
|
34
|
+
# polymorphic:
|
35
|
+
# [:assessment_question,
|
36
|
+
# :assignment,
|
37
|
+
# { quiz: "Quizzes::Quiz", assessment: "LiveAssessments::Assessment" }],
|
38
|
+
# polymorphic_prefix: true
|
39
|
+
|
40
|
+
# Not yet implemented in CanvasSync
|
41
|
+
# has_many :learning_outcome_question_results, dependent: :destroy
|
42
|
+
|
43
|
+
api_syncable({
|
44
|
+
canvas_id: :id,
|
45
|
+
canvas_content_tag_id: :links&.[]("alignment"),
|
46
|
+
canvas_learning_outcome_id: :links&.[]("learning_outcome"),
|
47
|
+
canvas_user_id: :links&.[]("user"),
|
48
|
+
score: :score,
|
49
|
+
assessed_at: :submitted_or_assessed_at,
|
50
|
+
percent: :percent
|
51
|
+
}, ->(api) {
|
52
|
+
api.get("/api/v1/courses/#{self.canvas_context_id}/#{self.canvas_id}")&.find { |item| item[:id] == self.canvas_id }
|
53
|
+
})
|
54
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# #
|
2
|
+
# AUTO GENERATED MIGRATION
|
3
|
+
# This migration was auto generated by the CanvasSync Gem.
|
4
|
+
# You can add new columns to this table, but removing or
|
5
|
+
# re-naming ones created here may break Canvas Syncing.
|
6
|
+
#
|
7
|
+
|
8
|
+
|
9
|
+
class CreateLearningOutcomeResults < ActiveRecord::Migration[5.1]
|
10
|
+
def change
|
11
|
+
create_table :learning_outcome_results do |t|
|
12
|
+
t.bigint :canvas_id, null: false
|
13
|
+
t.bigint :canvas_context_id
|
14
|
+
t.string :canvas_context_type
|
15
|
+
t.bigint :canvas_association_id
|
16
|
+
t.string :canvas_association_type
|
17
|
+
t.bigint :canvas_content_tag_id
|
18
|
+
t.bigint :canvas_learning_outcome_id
|
19
|
+
t.bigint :canvas_user_id
|
20
|
+
t.boolean :mastery
|
21
|
+
t.boolean :original_mastery
|
22
|
+
t.bigint :canvas_artifact_id
|
23
|
+
t.string :canvas_artifact_type
|
24
|
+
t.datetime :assessed_at
|
25
|
+
t.string :title
|
26
|
+
t.float :percent
|
27
|
+
t.bigint :canvas_associated_asset_id
|
28
|
+
t.string :canvas_associated_asset_type
|
29
|
+
t.integer :attempt
|
30
|
+
t.float :score
|
31
|
+
t.float :possible
|
32
|
+
t.float :original_score
|
33
|
+
t.float :original_possible
|
34
|
+
t.string :workflow_state
|
35
|
+
|
36
|
+
t.timestamps
|
37
|
+
end
|
38
|
+
|
39
|
+
add_index :learning_outcome_results, :canvas_id, unique: true
|
40
|
+
add_index :learning_outcome_results, %i[
|
41
|
+
canvas_user_id
|
42
|
+
canvas_content_tag_id
|
43
|
+
canvas_association_id
|
44
|
+
canvas_association_type
|
45
|
+
canvas_associated_asset_id
|
46
|
+
canvas_associated_asset_type
|
47
|
+
], unique: true, name: :index_learning_outcome_results_association
|
48
|
+
add_index :learning_outcome_results, :canvas_content_tag_id
|
49
|
+
add_index :learning_outcome_results, :canvas_learning_outcome_id
|
50
|
+
add_index :learning_outcome_results, %i[canvas_artifact_id canvas_artifact_type], name: :index_learning_outcome_results_on_canvas_arid_and_artype
|
51
|
+
end
|
52
|
+
end
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
#
|
11
11
|
# It's strongly recommended that you check this file into your version control system.
|
12
12
|
|
13
|
-
ActiveRecord::Schema.define(version:
|
13
|
+
ActiveRecord::Schema.define(version: 2024_05_23_101010) do
|
14
14
|
|
15
15
|
# These are extensions that must be enabled in order to support this database
|
16
16
|
enable_extension "plpgsql"
|
@@ -282,6 +282,46 @@ ActiveRecord::Schema.define(version: 2024_05_10_101100) do
|
|
282
282
|
t.index ["canvas_id"], name: "index_learning_outcomes_on_canvas_id", unique: true
|
283
283
|
end
|
284
284
|
|
285
|
+
create_table "learning_outcome_results", force: :cascade do |t|
|
286
|
+
t.bigint "canvas_id", null: false
|
287
|
+
t.bigint "canvas_context_id"
|
288
|
+
t.string "canvas_context_type"
|
289
|
+
t.bigint "canvas_association_id"
|
290
|
+
t.string "canvas_association_type"
|
291
|
+
t.bigint "canvas_content_tag_id"
|
292
|
+
t.bigint "canvas_learning_outcome_id"
|
293
|
+
t.bigint "canvas_user_id"
|
294
|
+
t.boolean "mastery"
|
295
|
+
t.boolean "original_mastery"
|
296
|
+
t.bigint "canvas_artifact_id"
|
297
|
+
t.string "canvas_artifact_type"
|
298
|
+
t.datetime "assessed_at"
|
299
|
+
t.string "title"
|
300
|
+
t.float "percent"
|
301
|
+
t.bigint "canvas_associated_asset_id"
|
302
|
+
t.string "canvas_associated_asset_type"
|
303
|
+
t.integer "attempt"
|
304
|
+
t.float "score"
|
305
|
+
t.float "possible"
|
306
|
+
t.float "original_score"
|
307
|
+
t.float "original_possible"
|
308
|
+
t.string "workflow_state"
|
309
|
+
t.datetime "created_at", null: false
|
310
|
+
t.datetime "updated_at", null: false
|
311
|
+
t.index "canvas_id", unique: true
|
312
|
+
t.index [
|
313
|
+
"canvas_user_id",
|
314
|
+
"canvas_content_tag_id",
|
315
|
+
"canvas_association_id",
|
316
|
+
"canvas_association_type",
|
317
|
+
"canvas_associated_asset_id",
|
318
|
+
"canvas_associated_asset_type"
|
319
|
+
], unique: true, name: 'index_learning_outcome_results_association'
|
320
|
+
t.index "canvas_content_tag_id"
|
321
|
+
t.index "canvas_learning_outcome_id"
|
322
|
+
t.index ["canvas_artifact_id", "canvas_artifact_type"], name: "index_learning_outcome_results_on_canvas_arid_and_artype"
|
323
|
+
end
|
324
|
+
|
285
325
|
create_table "pseudonyms", force: :cascade do |t|
|
286
326
|
t.bigint "canvas_id", null: false
|
287
327
|
t.bigint "canvas_user_id"
|
@@ -0,0 +1,3 @@
|
|
1
|
+
id,context_id,context_type,association_id,association_type,content_tag_id,learning_outcome_id,user_id,mastery,original_mastery,artifact_id,artifact_type,assessed_at,title,percent,associated_asset_id,associated_asset_type,attempt,score,possible,original_score,original_possible,workflow_state
|
2
|
+
1,1,Course,1,RubricAssociation,1,1,1,true,true,1,RubricAssessment,2012-01-01T00:00:00Z,Learning Outcome Result 1,1.0,1,LearningOutcomeGroup,1,5.0,5.0,5.0,5.0,active
|
3
|
+
2,2,Course,2,RubricAssociation,2,2,2,true,true,2,RubricAssessment,2013-01-01T00:00:00Z,Learning Outcome Result 2,2.0,2,LearningOutcomeGroup,1,10.0,10.0,10.0,10.0,active
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: canvas_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.20.
|
4
|
+
version: 0.20.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Instructure CustomDev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-05-
|
11
|
+
date: 2024-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -437,6 +437,7 @@ files:
|
|
437
437
|
- lib/canvas_sync/generators/templates/migrations/create_grading_periods.rb
|
438
438
|
- lib/canvas_sync/generators/templates/migrations/create_group_memberships.rb
|
439
439
|
- lib/canvas_sync/generators/templates/migrations/create_groups.rb
|
440
|
+
- lib/canvas_sync/generators/templates/migrations/create_learning_outcome_results.rb
|
440
441
|
- lib/canvas_sync/generators/templates/migrations/create_learning_outcomes.rb
|
441
442
|
- lib/canvas_sync/generators/templates/migrations/create_pseudonyms.rb
|
442
443
|
- lib/canvas_sync/generators/templates/migrations/create_roles.rb
|
@@ -463,6 +464,7 @@ files:
|
|
463
464
|
- lib/canvas_sync/generators/templates/models/group.rb
|
464
465
|
- lib/canvas_sync/generators/templates/models/group_membership.rb
|
465
466
|
- lib/canvas_sync/generators/templates/models/learning_outcome.rb
|
467
|
+
- lib/canvas_sync/generators/templates/models/learning_outcome_result.rb
|
466
468
|
- lib/canvas_sync/generators/templates/models/pseudonym.rb
|
467
469
|
- lib/canvas_sync/generators/templates/models/role.rb
|
468
470
|
- lib/canvas_sync/generators/templates/models/rubric.rb
|
@@ -621,6 +623,7 @@ files:
|
|
621
623
|
- spec/dummy/app/models/group.rb
|
622
624
|
- spec/dummy/app/models/group_membership.rb
|
623
625
|
- spec/dummy/app/models/learning_outcome.rb
|
626
|
+
- spec/dummy/app/models/learning_outcome_result.rb
|
624
627
|
- spec/dummy/app/models/pseudonym.rb
|
625
628
|
- spec/dummy/app/models/role.rb
|
626
629
|
- spec/dummy/app/models/rubric.rb
|
@@ -698,6 +701,7 @@ files:
|
|
698
701
|
- spec/dummy/db/migrate/20240509105100_create_rubrics.rb
|
699
702
|
- spec/dummy/db/migrate/20240510094100_create_rubric_associations.rb
|
700
703
|
- spec/dummy/db/migrate/20240510101100_create_rubric_assessments.rb
|
704
|
+
- spec/dummy/db/migrate/20240523101010_create_learning_outcome_results.rb
|
701
705
|
- spec/dummy/db/schema.rb
|
702
706
|
- spec/factories/account_factory.rb
|
703
707
|
- spec/factories/admin_factory.rb
|
@@ -749,6 +753,7 @@ files:
|
|
749
753
|
- spec/support/fixtures/reports/grading_periods.csv
|
750
754
|
- spec/support/fixtures/reports/group_memberships.csv
|
751
755
|
- spec/support/fixtures/reports/groups.csv
|
756
|
+
- spec/support/fixtures/reports/learning_outcome_results.csv
|
752
757
|
- spec/support/fixtures/reports/learning_outcomes.csv
|
753
758
|
- spec/support/fixtures/reports/provisioning_csv
|
754
759
|
- spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv
|
@@ -866,6 +871,7 @@ test_files:
|
|
866
871
|
- spec/support/fixtures/reports/group_memberships.csv
|
867
872
|
- spec/support/fixtures/reports/rubric_assessments.csv
|
868
873
|
- spec/support/fixtures/reports/enrollments.csv
|
874
|
+
- spec/support/fixtures/reports/learning_outcome_results.csv
|
869
875
|
- spec/support/fixtures/reports/course_nicknames.csv
|
870
876
|
- spec/support/fixtures/reports/provisioning_csv
|
871
877
|
- spec/support/fixtures/reports/grading_periods.csv
|
@@ -896,6 +902,7 @@ test_files:
|
|
896
902
|
- spec/dummy/db/migrate/20190927204545_create_roles.rb
|
897
903
|
- spec/dummy/db/migrate/20190702203622_create_accounts.rb
|
898
904
|
- spec/dummy/db/migrate/20190702203626_create_assignments.rb
|
905
|
+
- spec/dummy/db/migrate/20240523101010_create_learning_outcome_results.rb
|
899
906
|
- spec/dummy/db/migrate/20200415171620_create_groups.rb
|
900
907
|
- spec/dummy/db/migrate/20190927204546_create_admins.rb
|
901
908
|
- spec/dummy/db/migrate/20190702203625_create_sections.rb
|
@@ -946,6 +953,7 @@ test_files:
|
|
946
953
|
- spec/dummy/app/models/admin.rb
|
947
954
|
- spec/dummy/app/models/rubric_assessment.rb
|
948
955
|
- spec/dummy/app/models/learning_outcome.rb
|
956
|
+
- spec/dummy/app/models/learning_outcome_result.rb
|
949
957
|
- spec/dummy/app/models/grading_period.rb
|
950
958
|
- spec/dummy/app/models/context_module.rb
|
951
959
|
- spec/dummy/app/models/context_module_item.rb
|