canvas_sync 0.17.23.beta1 → 0.17.23.beta6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6fe925c97d18da5736681b55e51a1702d727ef2900097c9058de6f247748af9f
4
- data.tar.gz: 27c0bd4eb8d57efc705cbe3affdfa6ce4af9580b1b2374e11a8e7e84ddf2b8bd
3
+ metadata.gz: 298b05c56dda9ca6d603c1242c25fce864b4d69d096f2559a22267546f2183cb
4
+ data.tar.gz: d130e60ee19646e3d6cb817d63875bfdbd9358772c1dca25e49286c18cd0ca0d
5
5
  SHA512:
6
- metadata.gz: 82f682b5e2b713ba2adc45483f215c1de8103dc16bdd3872a1656649527053a8819de35b50d1f4bc8e9961bedbc647fd7a03dbebbe4f2ad0fb3235d6754788be
7
- data.tar.gz: 674159253800095ba66e15d9d14f58fd41d46f7fa70a33a8303160488544d721f7e8c83700c8a5e4978436e01d34e070b7bc22ff7433219e68fe00d4620dc38f
6
+ metadata.gz: d1b091aa6718f213dffc0a80985db5d736dcc4269365a8c7cdba713fc17ed256314b66183d050b952284374fc10f18b31018fcfee6fdb4fa9d185824fec73033
7
+ data.tar.gz: b822704460aef2ea10664ff02de96de7f9baa240e3c1fbd19092a86160cad364ec8f42305882502b3aede3ad4972bd3f168716cba1c65bdd6e3b46014776f7ff
@@ -5,6 +5,15 @@
5
5
  # * https://github.com/influitive/apartment/issues/508
6
6
 
7
7
  Rails.application.config.after_initialize do
8
+ next unless defined?(Apartment)
9
+
10
+ # Newer versions of Apartment already solves this issue (and in a better way)
11
+ begin
12
+ require('apartment/version')
13
+ next if Gem::Version.new(Apartment::VERSION) >= Gem::Version.new('2.8.1')
14
+ rescue LoadError
15
+ end
16
+
8
17
  begin
9
18
  Rails.application.eager_load!
10
19
  ActiveRecord::Base.descendants.each do |model|
@@ -24,9 +24,11 @@ module CanvasSync::Concerns
24
24
  class Mapping
25
25
  attr_reader :map_def
26
26
 
27
- def initialize(map_def = {}, model: nil)
28
- @map_def = map_def
27
+ def initialize(map_def, model: nil)
29
28
  @model = model
29
+ @map_def = map_def
30
+ @map_def[:conflict_target] ||= []
31
+ @map_def[:report_columns] ||= {}
30
32
  end
31
33
 
32
34
  def self.normalize_model_name(model)
@@ -82,7 +84,7 @@ module CanvasSync::Concerns
82
84
  end
83
85
 
84
86
  def reset_links
85
- @map_def = {}
87
+ @map_def[:report_columns] = {}.with_indifferent_access
86
88
  end
87
89
 
88
90
  def unlink_column(key)
@@ -4,8 +4,6 @@ class CreateGradingPeriodGroups < ActiveRecord::Migration[5.1]
4
4
  def change
5
5
  create_table :grading_period_groups do |t|
6
6
  t.bigint :canvas_id, null: false
7
- t.bigint :canvas_course_id
8
- t.bigint :canvas_account_id
9
7
  t.string :title
10
8
  t.boolean :weighted
11
9
  t.boolean :display_totals_for_all_grading_periods
@@ -16,7 +14,5 @@ class CreateGradingPeriodGroups < ActiveRecord::Migration[5.1]
16
14
  end
17
15
 
18
16
  add_index :grading_period_groups, :canvas_id, unique: true
19
- add_index :grading_period_groups, :canvas_course_id
20
- add_index :grading_period_groups, :canvas_account_id
21
17
  end
22
18
  end
@@ -4,6 +4,4 @@ class GradingPeriodGroup < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
 
6
6
  validates :canvas_id, uniqueness: true, presence: true
7
- belongs_to :course, primary_key: :canvas_id, foreign_key: :canvas_course_id, optional: true
8
- belongs_to :account, primary_key: :canvas_id, foreign_key: :canvas_account_id, optional: true
9
7
  end
@@ -6,6 +6,7 @@ class Term < ApplicationRecord
6
6
 
7
7
  validates :canvas_id, uniqueness: true, presence: true
8
8
  has_many :courses, foreign_key: :canvas_term_id, primary_key: :canvas_id
9
+ belongs_to :grading_period_group, primary_key: :canvas_id, foreign_key: :grading_period_group_id, optional: true
9
10
 
10
11
  api_syncable({
11
12
  canvas_id: :id,
@@ -457,12 +457,6 @@ grading_period_groups:
457
457
  grading_period_group_id:
458
458
  database_column_name: canvas_id
459
459
  type: integer
460
- canvas_course_id:
461
- database_column_name: canvas_course_id
462
- type: integer
463
- canvas_account_id:
464
- database_column_name: canvas_account_id
465
- type: integer
466
460
  title:
467
461
  database_column_name: title
468
462
  type: string
@@ -5,11 +5,11 @@ module CanvasSync
5
5
  # Base report processing class
6
6
  class ReportProcessor
7
7
  def mapping
8
- SyncMapping::Mapping.default_mappings
8
+ CanvasSync::Concerns::SyncMapping::Mapping.default_mappings
9
9
  end
10
10
 
11
11
  def mapping_for(model, key = nil)
12
- model.try(:get_sync_mapping, key) || mapping[key || SyncMapping::Mapping.normalize_model_name(model)]
12
+ model.try(:get_sync_mapping, key) || mapping[key || CanvasSync::Concerns::SyncMapping::Mapping.normalize_model_name(model)]
13
13
  end
14
14
 
15
15
  def do_bulk_import(report_file_path, model, options: {}, mapping_key: nil)
@@ -4,7 +4,7 @@ require_relative 'concerns/sync_mapping'
4
4
  module CanvasSync
5
5
  module Record
6
6
  extend ActiveSupport::Concern
7
- include SyncMapping
7
+ include CanvasSync::Concerns::SyncMapping
8
8
 
9
9
  included do
10
10
  define_model_callbacks :sync_import
@@ -1,3 +1,3 @@
1
1
  module CanvasSync
2
- VERSION = "0.17.23.beta1".freeze
2
+ VERSION = "0.17.23.beta6".freeze
3
3
  end
data/lib/canvas_sync.rb CHANGED
@@ -179,7 +179,7 @@ module CanvasSync
179
179
  # These Models use the provisioning report, but are not term-scoped,
180
180
  # so we sync them outside of the term scoping to ensure work is not duplicated
181
181
  if term_scope.present?
182
- models -= (first_provisioning_models = models & ['users', 'pseudonyms', 'user_observers'])
182
+ models -= (first_provisioning_models = models & ['users', 'pseudonyms', 'user_observers', 'grading_periods', 'grading_period_groups'])
183
183
  current_chain.insert(generate_provisioning_jobs(first_provisioning_models, options))
184
184
  end
185
185
 
@@ -10,6 +10,4 @@ class GradingPeriodGroup < ApplicationRecord
10
10
  include CanvasSync::Record
11
11
 
12
12
  validates :canvas_id, uniqueness: true, presence: true
13
- belongs_to :course, primary_key: :canvas_id, foreign_key: :canvas_course_id, optional: true
14
- belongs_to :account, primary_key: :canvas_id, foreign_key: :canvas_account_id, optional: true
15
13
  end
@@ -12,6 +12,7 @@ class Term < ApplicationRecord
12
12
 
13
13
  validates :canvas_id, uniqueness: true, presence: true
14
14
  has_many :courses, foreign_key: :canvas_term_id, primary_key: :canvas_id
15
+ belongs_to :grading_period_group, primary_key: :canvas_id, foreign_key: :grading_period_group_id, optional: true
15
16
 
16
17
  api_syncable({
17
18
  canvas_id: :id,
@@ -10,8 +10,6 @@ class CreateGradingPeriodGroups < ActiveRecord::Migration[5.1]
10
10
  def change
11
11
  create_table :grading_period_groups do |t|
12
12
  t.bigint :canvas_id, null: false
13
- t.bigint :canvas_course_id
14
- t.bigint :canvas_account_id
15
13
  t.string :title
16
14
  t.boolean :weighted
17
15
  t.boolean :display_totals_for_all_grading_periods
@@ -22,7 +20,5 @@ class CreateGradingPeriodGroups < ActiveRecord::Migration[5.1]
22
20
  end
23
21
 
24
22
  add_index :grading_period_groups, :canvas_id, unique: true
25
- add_index :grading_period_groups, :canvas_course_id
26
- add_index :grading_period_groups, :canvas_account_id
27
23
  end
28
24
  end
@@ -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: 2021_09_07_233331) do
13
+ ActiveRecord::Schema.define(version: 2021_10_01_184920) do
14
14
 
15
15
  # These are extensions that must be enabled in order to support this database
16
16
  enable_extension "plpgsql"
@@ -175,16 +175,12 @@ ActiveRecord::Schema.define(version: 2021_09_07_233331) do
175
175
 
176
176
  create_table "grading_period_groups", force: :cascade do |t|
177
177
  t.bigint "canvas_id", null: false
178
- t.bigint "canvas_course_id"
179
- t.bigint "canvas_account_id"
180
178
  t.string "title"
181
179
  t.boolean "weighted"
182
180
  t.boolean "display_totals_for_all_grading_periods"
183
181
  t.string "workflow_state"
184
182
  t.datetime "created_at", null: false
185
183
  t.datetime "updated_at", null: false
186
- t.index ["canvas_account_id"], name: "index_grading_period_groups_on_canvas_account_id"
187
- t.index ["canvas_course_id"], name: "index_grading_period_groups_on_canvas_course_id"
188
184
  t.index ["canvas_id"], name: "index_grading_period_groups_on_canvas_id", unique: true
189
185
  end
190
186