Sha256: a8ccd1c5547093220eadbc1bd5a13decc9408fe3173389b2e39fdeddc649fece
Contents?: true
Size: 1.66 KB
Versions: 48
Compression:
Stored size: 1.66 KB
Contents
module CanvasSync module Jobs class SyncTermsJob < CanvasSync::Job # Syncs Terms using the Canvas API # # Terms are pre-synced so that provisioning reports can be scoped to term. # # @param options [Hash] If options contains a :term_scope a seperate provisioning report # will be started for each term in that scope. :models should be an array of # models to sync. def perform(options) CanvasSync.get_canvas_sync_client(batch_context).terms("self").all_pages!.each do |term_params| if account_id = batch_context[:account_id] # These branches are primarily to support Legacy apps if Term.respond_to?(:create_or_update) && Term.method(:create_or_update).arity.abs == 2 Term.create_or_update(term_params, account_id) else term_params[:account_id] |= account_id update_or_create_model(Term, term_params) end else update_or_create_model(Term, term_params) end end if (jobs = options[:sub_jobs]).present? context = options[:context] || {} if options[:term_scope] Term.send(options[:term_scope]).find_each.map do |term| local_context = context.merge(canvas_term_id: get_term_id(term)) JobBatches::ConcurrentBatchJob.perform_now(jobs, context: local_context) end else JobBatches::ConcurrentBatchJob.perform_now(jobs, context: context) end end end protected def get_term_id(term) term.try(:canvas_id) || term.canvas_term_id end end end end
Version data entries
48 entries across 48 versions & 1 rubygems