canvas_sync 0.22.6 → 0.22.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (436) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -0
  3. data/app/controllers/canvas_sync/api/v1/health_check_controller.rb +0 -0
  4. data/app/controllers/canvas_sync/api/v1/live_events_controller.rb +0 -0
  5. data/app/models/canvas_sync/job_log.rb +0 -0
  6. data/app/models/canvas_sync/sync_batch.rb +0 -0
  7. data/config/initializers/apartment.rb +0 -0
  8. data/config/routes.rb +0 -0
  9. data/db/migrate/20170915210836_create_canvas_sync_job_log.rb +0 -0
  10. data/db/migrate/20180725155729_add_job_id_to_canvas_sync_job_logs.rb +0 -0
  11. data/db/migrate/20190916154829_add_fork_count_to_canvas_sync_job_logs.rb +0 -0
  12. data/db/migrate/20201018210836_create_canvas_sync_sync_batches.rb +0 -0
  13. data/db/migrate/20201030210836_add_full_sync_to_canvas_sync_sync_batch.rb +0 -0
  14. data/lib/canvas_sync/api_syncable.rb +0 -0
  15. data/lib/canvas_sync/batch_processor.rb +0 -0
  16. data/lib/canvas_sync/class_callback_executor.rb +0 -0
  17. data/lib/canvas_sync/concerns/ability_helper.rb +0 -0
  18. data/lib/canvas_sync/concerns/account/ancestry.rb +0 -0
  19. data/lib/canvas_sync/concerns/account/base.rb +0 -0
  20. data/lib/canvas_sync/concerns/api_syncable.rb +9 -6
  21. data/lib/canvas_sync/concerns/legacy_columns.rb +0 -0
  22. data/lib/canvas_sync/concerns/live_event_sync.rb +0 -0
  23. data/lib/canvas_sync/concerns/role/base.rb +0 -0
  24. data/lib/canvas_sync/concerns/sync_mapping.rb +11 -1
  25. data/lib/canvas_sync/config.rb +0 -0
  26. data/lib/canvas_sync/engine.rb +0 -0
  27. data/lib/canvas_sync/generators/install_generator.rb +0 -0
  28. data/lib/canvas_sync/generators/install_live_events_generator.rb +0 -0
  29. data/lib/canvas_sync/generators/templates/migrations/create_accounts.rb +0 -0
  30. data/lib/canvas_sync/generators/templates/migrations/create_admins.rb +0 -0
  31. data/lib/canvas_sync/generators/templates/migrations/create_assignment_groups.rb +0 -0
  32. data/lib/canvas_sync/generators/templates/migrations/create_assignment_overrides.rb +25 -0
  33. data/lib/canvas_sync/generators/templates/migrations/create_assignments.rb +0 -0
  34. data/lib/canvas_sync/generators/templates/migrations/create_content_migrations.rb +0 -0
  35. data/lib/canvas_sync/generators/templates/migrations/create_context_module_items.rb +0 -0
  36. data/lib/canvas_sync/generators/templates/migrations/create_context_modules.rb +0 -0
  37. data/lib/canvas_sync/generators/templates/migrations/create_course_nicknames.rb +0 -0
  38. data/lib/canvas_sync/generators/templates/migrations/create_course_progresses.rb +0 -0
  39. data/lib/canvas_sync/generators/templates/migrations/create_courses.rb +0 -0
  40. data/lib/canvas_sync/generators/templates/migrations/create_enrollments.rb +1 -0
  41. data/lib/canvas_sync/generators/templates/migrations/create_grading_period_groups.rb +0 -0
  42. data/lib/canvas_sync/generators/templates/migrations/create_grading_periods.rb +0 -0
  43. data/lib/canvas_sync/generators/templates/migrations/create_group_memberships.rb +0 -0
  44. data/lib/canvas_sync/generators/templates/migrations/create_groups.rb +0 -0
  45. data/lib/canvas_sync/generators/templates/migrations/create_learning_outcome_results.rb +0 -0
  46. data/lib/canvas_sync/generators/templates/migrations/create_learning_outcomes.rb +0 -0
  47. data/lib/canvas_sync/generators/templates/migrations/create_pseudonyms.rb +0 -0
  48. data/lib/canvas_sync/generators/templates/migrations/create_roles.rb +0 -0
  49. data/lib/canvas_sync/generators/templates/migrations/create_rubric_assessments.rb +0 -0
  50. data/lib/canvas_sync/generators/templates/migrations/create_rubric_associations.rb +0 -0
  51. data/lib/canvas_sync/generators/templates/migrations/create_rubrics.rb +0 -0
  52. data/lib/canvas_sync/generators/templates/migrations/create_sections.rb +0 -0
  53. data/lib/canvas_sync/generators/templates/migrations/create_submissions.rb +0 -0
  54. data/lib/canvas_sync/generators/templates/migrations/create_terms.rb +0 -0
  55. data/lib/canvas_sync/generators/templates/migrations/create_user_observers.rb +0 -0
  56. data/lib/canvas_sync/generators/templates/migrations/create_users.rb +0 -0
  57. data/lib/canvas_sync/generators/templates/models/account.rb +0 -0
  58. data/lib/canvas_sync/generators/templates/models/admin.rb +0 -0
  59. data/lib/canvas_sync/generators/templates/models/assignment.rb +0 -0
  60. data/lib/canvas_sync/generators/templates/models/assignment_group.rb +0 -0
  61. data/lib/canvas_sync/generators/templates/models/assignment_override.rb +28 -0
  62. data/lib/canvas_sync/generators/templates/models/content_migration.rb +0 -0
  63. data/lib/canvas_sync/generators/templates/models/context_module.rb +0 -0
  64. data/lib/canvas_sync/generators/templates/models/context_module_item.rb +0 -0
  65. data/lib/canvas_sync/generators/templates/models/course.rb +0 -0
  66. data/lib/canvas_sync/generators/templates/models/course_nickname.rb +0 -0
  67. data/lib/canvas_sync/generators/templates/models/enrollment.rb +0 -0
  68. data/lib/canvas_sync/generators/templates/models/grading_period.rb +0 -0
  69. data/lib/canvas_sync/generators/templates/models/grading_period_group.rb +0 -0
  70. data/lib/canvas_sync/generators/templates/models/group.rb +0 -0
  71. data/lib/canvas_sync/generators/templates/models/group_membership.rb +0 -0
  72. data/lib/canvas_sync/generators/templates/models/learning_outcome.rb +0 -0
  73. data/lib/canvas_sync/generators/templates/models/learning_outcome_result.rb +0 -0
  74. data/lib/canvas_sync/generators/templates/models/pseudonym.rb +0 -0
  75. data/lib/canvas_sync/generators/templates/models/role.rb +0 -0
  76. data/lib/canvas_sync/generators/templates/models/rubric.rb +0 -0
  77. data/lib/canvas_sync/generators/templates/models/rubric_assessment.rb +0 -0
  78. data/lib/canvas_sync/generators/templates/models/rubric_association.rb +0 -0
  79. data/lib/canvas_sync/generators/templates/models/section.rb +0 -0
  80. data/lib/canvas_sync/generators/templates/models/submission.rb +0 -0
  81. data/lib/canvas_sync/generators/templates/models/term.rb +0 -0
  82. data/lib/canvas_sync/generators/templates/models/user.rb +0 -0
  83. data/lib/canvas_sync/generators/templates/models/user_observer.rb +0 -0
  84. data/lib/canvas_sync/generators/templates/services/live_events/assignment_event.rb +0 -0
  85. data/lib/canvas_sync/generators/templates/services/live_events/assignment_group_event.rb +0 -0
  86. data/lib/canvas_sync/generators/templates/services/live_events/course_event.rb +0 -0
  87. data/lib/canvas_sync/generators/templates/services/live_events/course_section_event.rb +0 -0
  88. data/lib/canvas_sync/generators/templates/services/live_events/enrollment_event.rb +0 -0
  89. data/lib/canvas_sync/generators/templates/services/live_events/grade_event.rb +0 -0
  90. data/lib/canvas_sync/generators/templates/services/live_events/module_event.rb +0 -0
  91. data/lib/canvas_sync/generators/templates/services/live_events/module_item_event.rb +0 -0
  92. data/lib/canvas_sync/generators/templates/services/live_events/submission_event.rb +0 -0
  93. data/lib/canvas_sync/generators/templates/services/live_events/syllabus_event.rb +0 -0
  94. data/lib/canvas_sync/generators/templates/services/live_events/user_event.rb +0 -0
  95. data/lib/canvas_sync/importers/bulk_importer.rb +39 -69
  96. data/lib/canvas_sync/importers/legacy_importer.rb +0 -0
  97. data/lib/canvas_sync/job.rb +0 -0
  98. data/lib/canvas_sync/job_batches/batch.rb +1 -1
  99. data/lib/canvas_sync/job_batches/callback.rb +0 -0
  100. data/lib/canvas_sync/job_batches/chain_builder.rb +3 -24
  101. data/lib/canvas_sync/job_batches/compat/active_job.rb +0 -0
  102. data/lib/canvas_sync/job_batches/compat/sidekiq/web/batches_assets/css/styles.less +0 -0
  103. data/lib/canvas_sync/job_batches/compat/sidekiq/web/batches_assets/js/batch_tree.js +0 -0
  104. data/lib/canvas_sync/job_batches/compat/sidekiq/web/batches_assets/js/util.js +0 -0
  105. data/lib/canvas_sync/job_batches/compat/sidekiq/web/helpers.rb +0 -0
  106. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_batch_tree.erb +0 -0
  107. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_batches_table.erb +0 -0
  108. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_common.erb +0 -0
  109. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_jobs_table.erb +0 -0
  110. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_pagination.erb +0 -0
  111. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/batch.erb +0 -0
  112. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/batches.erb +0 -0
  113. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/pool.erb +0 -0
  114. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/pools.erb +0 -0
  115. data/lib/canvas_sync/job_batches/compat/sidekiq/web.rb +0 -0
  116. data/lib/canvas_sync/job_batches/compat/sidekiq.rb +0 -0
  117. data/lib/canvas_sync/job_batches/compat.rb +0 -0
  118. data/lib/canvas_sync/job_batches/context_hash.rb +0 -0
  119. data/lib/canvas_sync/job_batches/hier_batch_ids.lua +0 -0
  120. data/lib/canvas_sync/job_batches/jobs/base_job.rb +0 -0
  121. data/lib/canvas_sync/job_batches/jobs/concurrent_batch_job.rb +0 -0
  122. data/lib/canvas_sync/job_batches/jobs/managed_batch_job.rb +0 -4
  123. data/lib/canvas_sync/job_batches/jobs/serial_batch_job.rb +0 -0
  124. data/lib/canvas_sync/job_batches/pool.rb +0 -0
  125. data/lib/canvas_sync/job_batches/pool_refill.lua +0 -0
  126. data/lib/canvas_sync/job_batches/redis_model.rb +0 -0
  127. data/lib/canvas_sync/job_batches/redis_script.rb +0 -0
  128. data/lib/canvas_sync/job_batches/schedule_callback.lua +0 -0
  129. data/lib/canvas_sync/job_batches/status.rb +0 -1
  130. data/lib/canvas_sync/job_uniqueness/compat/active_job.rb +0 -0
  131. data/lib/canvas_sync/job_uniqueness/compat/sidekiq.rb +0 -0
  132. data/lib/canvas_sync/job_uniqueness/compat.rb +0 -0
  133. data/lib/canvas_sync/job_uniqueness/configuration.rb +0 -0
  134. data/lib/canvas_sync/job_uniqueness/job_uniqueness.rb +0 -0
  135. data/lib/canvas_sync/job_uniqueness/lock_context.rb +3 -15
  136. data/lib/canvas_sync/job_uniqueness/locksmith.rb +0 -0
  137. data/lib/canvas_sync/job_uniqueness/on_conflict/base.rb +0 -0
  138. data/lib/canvas_sync/job_uniqueness/on_conflict/log.rb +0 -0
  139. data/lib/canvas_sync/job_uniqueness/on_conflict/null_strategy.rb +0 -0
  140. data/lib/canvas_sync/job_uniqueness/on_conflict/raise.rb +0 -0
  141. data/lib/canvas_sync/job_uniqueness/on_conflict/reject.rb +0 -0
  142. data/lib/canvas_sync/job_uniqueness/on_conflict/reschedule.rb +0 -0
  143. data/lib/canvas_sync/job_uniqueness/on_conflict.rb +0 -0
  144. data/lib/canvas_sync/job_uniqueness/strategy/base.rb +0 -0
  145. data/lib/canvas_sync/job_uniqueness/strategy/until_and_while_executing.rb +0 -0
  146. data/lib/canvas_sync/job_uniqueness/strategy/until_executed.rb +0 -0
  147. data/lib/canvas_sync/job_uniqueness/strategy/until_executing.rb +0 -0
  148. data/lib/canvas_sync/job_uniqueness/strategy/until_expired.rb +0 -0
  149. data/lib/canvas_sync/job_uniqueness/strategy/while_executing.rb +0 -0
  150. data/lib/canvas_sync/job_uniqueness/strategy.rb +0 -0
  151. data/lib/canvas_sync/job_uniqueness/unique_job_common.rb +0 -0
  152. data/lib/canvas_sync/jobs/begin_sync_chain_job.rb +0 -0
  153. data/lib/canvas_sync/jobs/canvas_process_waiter.rb +0 -0
  154. data/lib/canvas_sync/jobs/report_checker.rb +0 -0
  155. data/lib/canvas_sync/jobs/report_processor_job.rb +0 -0
  156. data/lib/canvas_sync/jobs/report_starter.rb +0 -0
  157. data/lib/canvas_sync/jobs/sync_accounts_job.rb +0 -0
  158. data/lib/canvas_sync/jobs/sync_admins_job.rb +0 -0
  159. data/lib/canvas_sync/jobs/sync_assignment_groups_job.rb +0 -0
  160. data/lib/canvas_sync/jobs/sync_assignment_overrides_job.rb +20 -0
  161. data/lib/canvas_sync/jobs/sync_assignments_job.rb +0 -0
  162. data/lib/canvas_sync/jobs/sync_content_migrations_job.rb +0 -0
  163. data/lib/canvas_sync/jobs/sync_context_module_items_job.rb +0 -0
  164. data/lib/canvas_sync/jobs/sync_context_modules_job.rb +0 -0
  165. data/lib/canvas_sync/jobs/sync_course_progresses_job.rb +0 -0
  166. data/lib/canvas_sync/jobs/sync_provisioning_report_job.rb +0 -0
  167. data/lib/canvas_sync/jobs/sync_roles_job.rb +0 -0
  168. data/lib/canvas_sync/jobs/sync_rubric_assessments_job.rb +0 -0
  169. data/lib/canvas_sync/jobs/sync_rubric_associations_job.rb +0 -0
  170. data/lib/canvas_sync/jobs/sync_rubrics_job.rb +0 -0
  171. data/lib/canvas_sync/jobs/sync_simple_table_job.rb +0 -0
  172. data/lib/canvas_sync/jobs/sync_submissions_job.rb +0 -0
  173. data/lib/canvas_sync/jobs/sync_terms_job.rb +0 -0
  174. data/lib/canvas_sync/jobs/term_batches_job.rb +1 -4
  175. data/lib/canvas_sync/live_events/base_handler.rb +0 -0
  176. data/lib/canvas_sync/live_events/process_event_job.rb +0 -0
  177. data/lib/canvas_sync/live_events.rb +0 -0
  178. data/lib/canvas_sync/misc_helper.rb +0 -0
  179. data/lib/canvas_sync/processors/assignment_groups_processor.rb +0 -0
  180. data/lib/canvas_sync/processors/assignment_overrides_processor.rb +41 -0
  181. data/lib/canvas_sync/processors/assignments_processor.rb +0 -0
  182. data/lib/canvas_sync/processors/content_migrations_processor.rb +0 -0
  183. data/lib/canvas_sync/processors/context_module_items_processor.rb +0 -0
  184. data/lib/canvas_sync/processors/context_modules_processor.rb +0 -0
  185. data/lib/canvas_sync/processors/course_completion_report_processor.rb +0 -0
  186. data/lib/canvas_sync/processors/model_mappings.yml +46 -0
  187. data/lib/canvas_sync/processors/normal_processor.rb +0 -0
  188. data/lib/canvas_sync/processors/provisioning_report_processor.rb +0 -0
  189. data/lib/canvas_sync/processors/report_processor.rb +0 -0
  190. data/lib/canvas_sync/processors/rubric_assessments_processor.rb +0 -0
  191. data/lib/canvas_sync/processors/rubric_associations_processor.rb +0 -0
  192. data/lib/canvas_sync/processors/rubrics_processor.rb +0 -0
  193. data/lib/canvas_sync/processors/submissions_processor.rb +0 -0
  194. data/lib/canvas_sync/record.rb +0 -0
  195. data/lib/canvas_sync/sidekiq_job.rb +0 -0
  196. data/lib/canvas_sync/version.rb +1 -1
  197. data/lib/canvas_sync.rb +4 -0
  198. data/spec/canvas_sync/canvas_sync_spec.rb +41 -59
  199. data/spec/canvas_sync/jobs/canvas_process_waiter_spec.rb +0 -0
  200. data/spec/canvas_sync/jobs/job_spec.rb +0 -0
  201. data/spec/canvas_sync/jobs/report_checker_spec.rb +0 -0
  202. data/spec/canvas_sync/jobs/report_processor_job_spec.rb +0 -0
  203. data/spec/canvas_sync/jobs/report_starter_spec.rb +0 -0
  204. data/spec/canvas_sync/jobs/sync_admins_job_spec.rb +0 -0
  205. data/spec/canvas_sync/jobs/sync_assignment_groups_job_spec.rb +0 -0
  206. data/spec/canvas_sync/jobs/sync_assignments_job_spec.rb +0 -0
  207. data/spec/canvas_sync/jobs/sync_content_migrations_job_spec.rb +0 -0
  208. data/spec/canvas_sync/jobs/sync_context_module_items_job_spec.rb +0 -0
  209. data/spec/canvas_sync/jobs/sync_context_modules_job_spec.rb +0 -0
  210. data/spec/canvas_sync/jobs/sync_provisioning_report_job_spec.rb +0 -0
  211. data/spec/canvas_sync/jobs/sync_roles_job_spec.rb +0 -0
  212. data/spec/canvas_sync/jobs/sync_simple_table_job_spec.rb +0 -0
  213. data/spec/canvas_sync/jobs/sync_submissions_job_spec.rb +0 -0
  214. data/spec/canvas_sync/jobs/sync_terms_job_spec.rb +0 -0
  215. data/spec/canvas_sync/live_events/live_event_sync_spec.rb +0 -0
  216. data/spec/canvas_sync/live_events/live_events_controller_spec.rb +0 -0
  217. data/spec/canvas_sync/live_events/process_event_job_spec.rb +0 -0
  218. data/spec/canvas_sync/misc_helper_spec.rb +0 -0
  219. data/spec/canvas_sync/models/accounts_spec.rb +0 -0
  220. data/spec/canvas_sync/models/admins_spec.rb +0 -0
  221. data/spec/canvas_sync/models/assignment_group_spec.rb +0 -0
  222. data/spec/canvas_sync/models/assignment_spec.rb +0 -0
  223. data/spec/canvas_sync/models/context_module_item_spec.rb +0 -0
  224. data/spec/canvas_sync/models/context_module_spec.rb +0 -0
  225. data/spec/canvas_sync/models/course_spec.rb +0 -0
  226. data/spec/canvas_sync/models/enrollment_spec.rb +0 -0
  227. data/spec/canvas_sync/models/group_membership_spec.rb +0 -0
  228. data/spec/canvas_sync/models/group_spec.rb +0 -0
  229. data/spec/canvas_sync/models/roles_spec.rb +0 -0
  230. data/spec/canvas_sync/models/section_spec.rb +0 -0
  231. data/spec/canvas_sync/models/submission_spec.rb +0 -0
  232. data/spec/canvas_sync/models/term_spec.rb +0 -0
  233. data/spec/canvas_sync/models/user_spec.rb +0 -0
  234. data/spec/canvas_sync/processors/assignment_groups_processor_spec.rb +0 -0
  235. data/spec/canvas_sync/processors/assignment_overrides_processor_spec.rb +45 -0
  236. data/spec/canvas_sync/processors/assignments_processor_spec.rb +0 -0
  237. data/spec/canvas_sync/processors/content_migrations_processor_spec.rb +0 -0
  238. data/spec/canvas_sync/processors/context_module_items_processor_spec.rb +0 -0
  239. data/spec/canvas_sync/processors/context_modules_processor_spec.rb +0 -0
  240. data/spec/canvas_sync/processors/course_completion_report_processor_spec.rb +0 -0
  241. data/spec/canvas_sync/processors/normal_processor_spec.rb +0 -0
  242. data/spec/canvas_sync/processors/provisioning_report_processor_spec.rb +4 -0
  243. data/spec/canvas_sync/processors/rubric_assessments_spec.rb +0 -0
  244. data/spec/canvas_sync/processors/rubric_associations_spec.rb +0 -0
  245. data/spec/canvas_sync/processors/rubrics_processor_spec.rb +0 -0
  246. data/spec/canvas_sync/processors/submissions_processor_spec.rb +0 -0
  247. data/spec/canvas_sync/services/module_event_spec.rb +0 -0
  248. data/spec/canvas_sync/services/module_item_event_spec.rb +0 -0
  249. data/spec/dummy/README.rdoc +0 -0
  250. data/spec/dummy/Rakefile +0 -0
  251. data/spec/dummy/app/models/account.rb +0 -0
  252. data/spec/dummy/app/models/admin.rb +0 -0
  253. data/spec/dummy/app/models/application_record.rb +0 -0
  254. data/spec/dummy/app/models/assignment.rb +0 -0
  255. data/spec/dummy/app/models/assignment_group.rb +0 -0
  256. data/spec/dummy/app/models/assignment_override.rb +34 -0
  257. data/spec/dummy/app/models/content_migration.rb +0 -0
  258. data/spec/dummy/app/models/context_module.rb +0 -0
  259. data/spec/dummy/app/models/context_module_item.rb +0 -0
  260. data/spec/dummy/app/models/course.rb +0 -0
  261. data/spec/dummy/app/models/course_nickname.rb +0 -0
  262. data/spec/dummy/app/models/enrollment.rb +0 -0
  263. data/spec/dummy/app/models/grading_period.rb +0 -0
  264. data/spec/dummy/app/models/grading_period_group.rb +0 -0
  265. data/spec/dummy/app/models/group.rb +0 -0
  266. data/spec/dummy/app/models/group_membership.rb +0 -0
  267. data/spec/dummy/app/models/learning_outcome.rb +0 -0
  268. data/spec/dummy/app/models/learning_outcome_result.rb +0 -0
  269. data/spec/dummy/app/models/pseudonym.rb +0 -0
  270. data/spec/dummy/app/models/role.rb +0 -0
  271. data/spec/dummy/app/models/rubric.rb +0 -0
  272. data/spec/dummy/app/models/rubric_assessment.rb +0 -0
  273. data/spec/dummy/app/models/rubric_association.rb +0 -0
  274. data/spec/dummy/app/models/section.rb +0 -0
  275. data/spec/dummy/app/models/submission.rb +0 -0
  276. data/spec/dummy/app/models/term.rb +0 -0
  277. data/spec/dummy/app/models/user.rb +0 -0
  278. data/spec/dummy/app/models/user_observer.rb +0 -0
  279. data/spec/dummy/app/services/live_events/assignment_created_event.rb +0 -0
  280. data/spec/dummy/app/services/live_events/assignment_event.rb +0 -0
  281. data/spec/dummy/app/services/live_events/assignment_updated_event.rb +0 -0
  282. data/spec/dummy/app/services/live_events/base_event.rb +0 -0
  283. data/spec/dummy/app/services/live_events/course_created_event.rb +0 -0
  284. data/spec/dummy/app/services/live_events/course_event.rb +0 -0
  285. data/spec/dummy/app/services/live_events/course_section_created_event.rb +0 -0
  286. data/spec/dummy/app/services/live_events/course_section_event.rb +0 -0
  287. data/spec/dummy/app/services/live_events/course_section_updated_event.rb +0 -0
  288. data/spec/dummy/app/services/live_events/course_updated_event.rb +0 -0
  289. data/spec/dummy/app/services/live_events/enrollment_created_event.rb +0 -0
  290. data/spec/dummy/app/services/live_events/enrollment_event.rb +0 -0
  291. data/spec/dummy/app/services/live_events/enrollment_updated_event.rb +0 -0
  292. data/spec/dummy/app/services/live_events/grade_changed_event.rb +0 -0
  293. data/spec/dummy/app/services/live_events/grade_event.rb +0 -0
  294. data/spec/dummy/app/services/live_events/module_created_event.rb +0 -0
  295. data/spec/dummy/app/services/live_events/module_event.rb +0 -0
  296. data/spec/dummy/app/services/live_events/module_item_created_event.rb +0 -0
  297. data/spec/dummy/app/services/live_events/module_item_event.rb +0 -0
  298. data/spec/dummy/app/services/live_events/module_item_updated_event.rb +0 -0
  299. data/spec/dummy/app/services/live_events/module_updated_event.rb +0 -0
  300. data/spec/dummy/app/services/live_events/submission_created_event.rb +0 -0
  301. data/spec/dummy/app/services/live_events/submission_event.rb +0 -0
  302. data/spec/dummy/app/services/live_events/submission_updated_event.rb +0 -0
  303. data/spec/dummy/app/services/live_events/syllabus_event.rb +0 -0
  304. data/spec/dummy/app/services/live_events/syllabus_updated_event.rb +0 -0
  305. data/spec/dummy/app/services/live_events/user_created_event.rb +0 -0
  306. data/spec/dummy/app/services/live_events/user_event.rb +0 -0
  307. data/spec/dummy/app/services/live_events/user_updated_event.rb +0 -0
  308. data/spec/dummy/config/application.rb +0 -0
  309. data/spec/dummy/config/boot.rb +0 -0
  310. data/spec/dummy/config/database.yml +0 -0
  311. data/spec/dummy/config/environment.rb +0 -0
  312. data/spec/dummy/config/environments/development.rb +0 -0
  313. data/spec/dummy/config/environments/test.rb +0 -0
  314. data/spec/dummy/config/initializers/assets.rb +0 -0
  315. data/spec/dummy/config/initializers/session_store.rb +0 -0
  316. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -0
  317. data/spec/dummy/config/routes.rb +0 -0
  318. data/spec/dummy/config/secrets.yml +0 -0
  319. data/spec/dummy/config.ru +0 -0
  320. data/spec/dummy/db/migrate/20190702203621_create_courses.rb +0 -0
  321. data/spec/dummy/db/migrate/20190702203622_create_accounts.rb +0 -0
  322. data/spec/dummy/db/migrate/20190702203623_create_terms.rb +0 -0
  323. data/spec/dummy/db/migrate/20190702203624_create_enrollments.rb +1 -0
  324. data/spec/dummy/db/migrate/20190702203625_create_sections.rb +0 -0
  325. data/spec/dummy/db/migrate/20190702203626_create_assignments.rb +0 -0
  326. data/spec/dummy/db/migrate/20190702203627_create_submissions.rb +0 -0
  327. data/spec/dummy/db/migrate/20190702203630_create_assignment_groups.rb +0 -0
  328. data/spec/dummy/db/migrate/20190702203631_create_context_modules.rb +0 -0
  329. data/spec/dummy/db/migrate/20190702203632_create_context_module_items.rb +0 -0
  330. data/spec/dummy/db/migrate/20190927204545_create_roles.rb +0 -0
  331. data/spec/dummy/db/migrate/20190927204546_create_admins.rb +0 -0
  332. data/spec/dummy/db/migrate/20200415171620_create_groups.rb +0 -0
  333. data/spec/dummy/db/migrate/20200416214248_create_group_memberships.rb +0 -0
  334. data/spec/dummy/db/migrate/20201016181346_create_pseudonyms.rb +0 -0
  335. data/spec/dummy/db/migrate/20210907233329_create_user_observers.rb +0 -0
  336. data/spec/dummy/db/migrate/20210907233330_create_grading_periods.rb +0 -0
  337. data/spec/dummy/db/migrate/20211001184920_create_grading_period_groups.rb +0 -0
  338. data/spec/dummy/db/migrate/20220308072643_create_content_migrations.rb +0 -0
  339. data/spec/dummy/db/migrate/20220712210559_create_learning_outcomes.rb +0 -0
  340. data/spec/dummy/db/migrate/20220926221926_create_users.rb +0 -0
  341. data/spec/dummy/db/migrate/20240408223326_create_course_nicknames.rb +0 -0
  342. data/spec/dummy/db/migrate/20240509105100_create_rubrics.rb +0 -0
  343. data/spec/dummy/db/migrate/20240510094100_create_rubric_associations.rb +0 -0
  344. data/spec/dummy/db/migrate/20240510101100_create_rubric_assessments.rb +0 -0
  345. data/spec/dummy/db/migrate/20240523101010_create_learning_outcome_results.rb +0 -0
  346. data/spec/dummy/db/migrate/20240828161300_create_course_progresses.rb +0 -0
  347. data/spec/dummy/db/migrate/20241223080202_create_assignment_overrides.rb +25 -0
  348. data/spec/dummy/db/schema.rb +188 -174
  349. data/spec/factories/account_factory.rb +0 -0
  350. data/spec/factories/admin_factory.rb +0 -0
  351. data/spec/factories/assignment_factory.rb +0 -0
  352. data/spec/factories/assignment_group_factory.rb +0 -0
  353. data/spec/factories/assignment_override_factory.rb +10 -0
  354. data/spec/factories/context_module_factory.rb +0 -0
  355. data/spec/factories/context_module_item_factory.rb +0 -0
  356. data/spec/factories/course_factory.rb +0 -0
  357. data/spec/factories/enrollment_factory.rb +0 -0
  358. data/spec/factories/group_factory.rb +0 -0
  359. data/spec/factories/group_membership_factory.rb +0 -0
  360. data/spec/factories/role_factory.rb +0 -0
  361. data/spec/factories/section_factory.rb +0 -0
  362. data/spec/factories/submission_factory.rb +0 -0
  363. data/spec/factories/term_factory.rb +0 -0
  364. data/spec/factories/user_factory.rb +0 -0
  365. data/spec/job_batching/batch_spec.rb +0 -0
  366. data/spec/job_batching/callback_spec.rb +0 -0
  367. data/spec/job_batching/compat/active_job_spec.rb +0 -0
  368. data/spec/job_batching/compat/sidekiq_spec.rb +0 -0
  369. data/spec/job_batching/context_hash_spec.rb +0 -0
  370. data/spec/job_batching/flow_spec.rb +0 -0
  371. data/spec/job_batching/integration/fail_then_succeed.rb +0 -0
  372. data/spec/job_batching/integration/integration.rb +0 -0
  373. data/spec/job_batching/integration/nested.rb +0 -0
  374. data/spec/job_batching/integration/simple.rb +0 -0
  375. data/spec/job_batching/integration/workflow.rb +0 -0
  376. data/spec/job_batching/integration_helper.rb +0 -0
  377. data/spec/job_batching/pool_spec.rb +0 -0
  378. data/spec/job_batching/status_spec.rb +0 -0
  379. data/spec/job_batching/support/base_job.rb +0 -0
  380. data/spec/job_batching/support/sample_callback.rb +0 -0
  381. data/spec/job_uniqueness/compat/active_job_spec.rb +0 -0
  382. data/spec/job_uniqueness/compat/sidekiq_spec.rb +0 -0
  383. data/spec/job_uniqueness/lock_context_spec.rb +0 -0
  384. data/spec/job_uniqueness/on_conflict/log_spec.rb +0 -0
  385. data/spec/job_uniqueness/on_conflict/raise_spec.rb +0 -0
  386. data/spec/job_uniqueness/on_conflict/reschedule_spec.rb +0 -0
  387. data/spec/job_uniqueness/on_conflict_spec.rb +0 -0
  388. data/spec/job_uniqueness/spec_helper.rb +0 -0
  389. data/spec/job_uniqueness/strategy/base_spec.rb +0 -0
  390. data/spec/job_uniqueness/strategy/until_and_while_executing_spec.rb +0 -0
  391. data/spec/job_uniqueness/strategy/until_executed_spec.rb +0 -0
  392. data/spec/job_uniqueness/strategy/until_executing_spec.rb +0 -0
  393. data/spec/job_uniqueness/strategy/until_expired_spec.rb +0 -0
  394. data/spec/job_uniqueness/strategy/while_executing_spec.rb +0 -0
  395. data/spec/job_uniqueness/support/lock_strategy.rb +0 -0
  396. data/spec/job_uniqueness/support/on_conflict.rb +0 -0
  397. data/spec/job_uniqueness/support/test_worker.rb +0 -0
  398. data/spec/job_uniqueness/unique_job_common_spec.rb +0 -0
  399. data/spec/spec_helper.rb +0 -0
  400. data/spec/support/fake_canvas.rb +0 -0
  401. data/spec/support/fixtures/canvas_responses/admins.json +0 -0
  402. data/spec/support/fixtures/canvas_responses/module.json +0 -0
  403. data/spec/support/fixtures/canvas_responses/module_item.json +0 -0
  404. data/spec/support/fixtures/canvas_responses/roles.json +0 -0
  405. data/spec/support/fixtures/canvas_responses/terms.json +0 -0
  406. data/spec/support/fixtures/reports/assignment_groups.csv +0 -0
  407. data/spec/support/fixtures/reports/assignment_overrides.csv +3 -0
  408. data/spec/support/fixtures/reports/assignment_overrides_conflict.csv +2 -0
  409. data/spec/support/fixtures/reports/assignments.csv +0 -0
  410. data/spec/support/fixtures/reports/content_migrations.csv +0 -0
  411. data/spec/support/fixtures/reports/context_module_items.csv +0 -0
  412. data/spec/support/fixtures/reports/context_modules.csv +0 -0
  413. data/spec/support/fixtures/reports/course_nicknames.csv +0 -0
  414. data/spec/support/fixtures/reports/course_progresses.csv +0 -0
  415. data/spec/support/fixtures/reports/course_progresses_conflict.csv +0 -0
  416. data/spec/support/fixtures/reports/courses.csv +0 -0
  417. data/spec/support/fixtures/reports/enrollments.csv +0 -0
  418. data/spec/support/fixtures/reports/grading_period_groups.csv +0 -0
  419. data/spec/support/fixtures/reports/grading_periods.csv +0 -0
  420. data/spec/support/fixtures/reports/group_memberships.csv +0 -0
  421. data/spec/support/fixtures/reports/groups.csv +0 -0
  422. data/spec/support/fixtures/reports/learning_outcome_results.csv +0 -0
  423. data/spec/support/fixtures/reports/learning_outcomes.csv +0 -0
  424. data/spec/support/fixtures/reports/provisioning_csv +0 -0
  425. data/spec/support/fixtures/reports/rubric_assessments.csv +0 -0
  426. data/spec/support/fixtures/reports/rubric_associations.csv +0 -0
  427. data/spec/support/fixtures/reports/rubrics.csv +0 -0
  428. data/spec/support/fixtures/reports/sections.csv +0 -0
  429. data/spec/support/fixtures/reports/submissions.csv +0 -0
  430. data/spec/support/fixtures/reports/user_observers.csv +0 -0
  431. data/spec/support/fixtures/reports/users.csv +0 -0
  432. data/spec/support/fixtures/reports/xlist.csv +0 -0
  433. metadata +208 -211
  434. data/lib/canvas_sync/concerns/auto_relations.rb +0 -11
  435. data/spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv +0 -3
  436. data/spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv +0 -4
File without changes
File without changes
File without changes
@@ -144,10 +144,6 @@ module CanvasSync::JobBatches
144
144
  if next_job[:chain_link].present?
145
145
  # Annotate Batch with chain-step info
146
146
  batch.context["csb:chain_link"] = next_job[:chain_link]
147
- # TODO Add Fiber Batch to chain-link
148
- # With the exception of the top of the Chain, all nested ManagedBatch Roots should be within a Fiber,
149
- # so we shouldn't really need to make the Root checkin with the chain
150
- # ...except to cleanup the chain
151
147
  batch.on(:complete, "#{ChainBuilder.to_s}.chain_step_complete", chain_link: next_job[:chain_link])
152
148
  end
153
149
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -49,7 +49,6 @@ module CanvasSync::JobBatches
49
49
  end
50
50
 
51
51
  def success?
52
- # TODO (Race Condition) This might not be valid if checked from a :complete callback
53
52
  'true' == Batch.redis { |r| r.hget("BID-#{bid}", 'success') }
54
53
  end
55
54
 
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -6,6 +6,8 @@ module CanvasSync::JobUniqueness
6
6
  context_class.new(data, **kwargs)
7
7
  end
8
8
 
9
+ attr_reader :lock_id
10
+
9
11
  # { job_clazz, jid, queue, args?, kwargs?, base_key? }
10
12
  def initialize(data, job_instance: nil, config: nil)
11
13
  @base_key = data[:base_key]
@@ -14,9 +16,7 @@ module CanvasSync::JobUniqueness
14
16
  @config = config || @context_data[:config]
15
17
 
16
18
  # TODO Consider (somewhere) updating the lock_id to the BID of the wrapping Batch (when applicable)
17
- @lock_id ||= data[:lid] || Thread.current[:unique_jobs_previous_context]&.lock_id
18
- @lock_id_locked = @lock_id.present?
19
- @lock_id ||= job_id
19
+ @lock_id ||= data[:lid] || Thread.current[:unique_jobs_previous_context]&.lock_id || job_id
20
20
  end
21
21
 
22
22
  # This is primarily for rehydrating in a Batch Callback, so it is unlikely that args and kwargs are needed.
@@ -84,18 +84,6 @@ module CanvasSync::JobUniqueness
84
84
  end
85
85
  end
86
86
 
87
- def lock_id
88
- @lock_id_locked = true
89
- @lock_id
90
- end
91
-
92
- def lock_id=(new_id)
93
- raise "Lock ID already set" if @lock_id_locked
94
- return unless new_id.present?
95
- @lock_id = new_id
96
- @lock_id_locked = true
97
- end
98
-
99
87
  def job_id
100
88
  @context_data[:jid]
101
89
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,20 @@
1
+ module CanvasSync
2
+ module Jobs
3
+ class SyncAssignmentOverridesJob < ReportStarter
4
+ # Syncs SyncAssignmentOverrides
5
+ #
6
+ # Starts a report processor for the assignment overrides report
7
+ # (the proserv_assignment_overrides_csv report must be enabled)
8
+ #
9
+ # @param options [Hash]
10
+ def perform(options)
11
+ super(
12
+ "proserv_assignment_overrides_csv",
13
+ merge_report_params(options),
14
+ CanvasSync::Processors::AssignmentOverridesProcessor.to_s,
15
+ {},
16
+ )
17
+ end
18
+ end
19
+ end
20
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -12,17 +12,14 @@ module CanvasSync
12
12
  # Override the delta-syncing date if:
13
13
  # 1. the Term hasn't been synced before or
14
14
  # 2. the Term underwent a period of not syncing
15
+ term_last_sync = CanvasSync.redis.get(self.class.last_sync_key(term_id))
15
16
  if batch_context[:updated_after]
16
- term_last_sync = CanvasSync.redis.get(self.class.last_sync_key(term_id))
17
17
  if !term_last_sync.present? || batch_context[:updated_after] > term_last_sync
18
18
  local_context[:updated_after] = term_last_sync.presence
19
19
  end
20
20
  end
21
21
 
22
22
  JobBatches::ManagedBatchJob.make_batch(jobs, ordered: false, concurrency: true) do |b|
23
- # TODO If we do a Chain UI, this will need to checkin somehow to indicate that the chain forked
24
- # Or chain steps just show a summary - eg "Started", "X Jobs Running", "Done" or "X Jobs Running, Y Jobs Done" - and not individual forks
25
- # For a step to be considered done, all previous sibling-level steps must be done and no batches pending
26
23
  b.description = "TermBatchJob(#{term_id}) Root"
27
24
  b.context = local_context
28
25
  b.on(:success, "#{self.class.to_s}.batch_finished") unless options[:mark_synced] == false
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,41 @@
1
+ require_relative "./report_processor"
2
+
3
+ module CanvasSync
4
+ module Processors
5
+ # Processes a assignment overrides report using the bulk importer.
6
+ #
7
+ # @param report_file_path [String]
8
+ # @param options [Hash]
9
+ class AssignmentOverridesProcessor < ReportProcessor
10
+ # Class method that starts processing (for consistent interface with other processors).
11
+ def self.process(report_file_path, options, report_id)
12
+ new(report_file_path, options)
13
+ end
14
+
15
+ def initialize(report_file_path, options)
16
+ do_bulk_import(report_file_path, AssignmentOverride, options: options) do |row|
17
+ # Handle transforms here instead of in mappings
18
+ row[:student_ids] = parse_student_ids(row[:student_ids])
19
+
20
+ # Convert empty/null/'0' values to nil
21
+ # For Ruby 2.7
22
+ row[:group_id] = parse_nil_value(row[:group_id])
23
+ row[:course_section_id] = parse_nil_value(row[:course_section_id])
24
+ row
25
+ end
26
+ end
27
+
28
+ private
29
+
30
+ def parse_student_ids(value)
31
+ value.present? ? JSON.parse(value) : nil
32
+ end
33
+
34
+ def parse_nil_value(value)
35
+ # Convert "0", "null", or empty string to nil
36
+ return nil if %w[0 null].include?(value) || value == ''
37
+ value
38
+ end
39
+ end
40
+ end
41
+ end
File without changes
@@ -159,6 +159,9 @@ enrollments:
159
159
  base_role_type:
160
160
  database_column_name: base_role_type
161
161
  type: string
162
+ completed_at:
163
+ database_column_name: completed_at
164
+ type: datetime
162
165
 
163
166
  sections:
164
167
  conflict_target: canvas_section_id
@@ -290,6 +293,49 @@ submissions:
290
293
  database_column_name: workflow_state
291
294
  type: string
292
295
 
296
+ assignment_overrides:
297
+ conflict_target: id
298
+ report_columns:
299
+ id:
300
+ database_column_name: canvas_id
301
+ type: integer
302
+ assignment_id:
303
+ database_column_name: canvas_assignment_id
304
+ type: integer
305
+ student_ids:
306
+ database_column_name: student_ids
307
+ type: array
308
+ group_id:
309
+ database_column_name: canvas_group_id
310
+ type: integer
311
+ course_section_id:
312
+ database_column_name: canvas_section_id
313
+ type: integer
314
+ course_id:
315
+ database_column_name: canvas_course_id
316
+ type: integer
317
+ title:
318
+ database_column_name: title
319
+ type: string
320
+ due_at:
321
+ database_column_name: due_at
322
+ type: datetime
323
+ unlock_at:
324
+ database_column_name: unlock_at
325
+ type: datetime
326
+ lock_at:
327
+ database_column_name: lock_at
328
+ type: datetime
329
+ all_day:
330
+ database_column_name: all_day
331
+ type: boolean
332
+ all_day_date:
333
+ database_column_name: all_day_date
334
+ type: datetime
335
+ workflow_state:
336
+ database_column_name: workflow_state
337
+ type: string
338
+
293
339
  assignment_groups:
294
340
  conflict_target: id
295
341
  report_columns:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,3 +1,3 @@
1
1
  module CanvasSync
2
- VERSION = "0.22.6".freeze
2
+ VERSION = "0.22.9".freeze
3
3
  end
data/lib/canvas_sync.rb CHANGED
@@ -54,6 +54,7 @@ module CanvasSync
54
54
  rubric_associations
55
55
  rubric_assessments
56
56
  course_progresses
57
+ assignment_overrides
57
58
  ].freeze
58
59
 
59
60
  SUPPORTED_TERM_SCOPE_MODELS = %w[
@@ -66,6 +67,7 @@ module CanvasSync
66
67
  rubric_associations
67
68
  rubric_assessments
68
69
  course_progresses
70
+ assignment_overrides
69
71
  ].freeze
70
72
 
71
73
  DEFAULT_TERM_SCOPE_MODELS = %w[
@@ -78,6 +80,7 @@ module CanvasSync
78
80
  rubric_associations
79
81
  rubric_assessments
80
82
  course_progresses
83
+ assignment_overrides
81
84
  ].freeze
82
85
 
83
86
  SUPPORTED_LIVE_EVENTS = %w[
@@ -166,6 +169,7 @@ module CanvasSync
166
169
  assignments: CanvasSync::Jobs::SyncAssignmentsJob,
167
170
  submissions: CanvasSync::Jobs::SyncSubmissionsJob,
168
171
  assignment_groups: CanvasSync::Jobs::SyncAssignmentGroupsJob,
172
+ assignment_overrides: CanvasSync::Jobs::SyncAssignmentOverridesJob,
169
173
  context_modules: CanvasSync::Jobs::SyncContextModulesJob,
170
174
  context_module_items: CanvasSync::Jobs::SyncContextModuleItemsJob,
171
175
  content_migrations: CanvasSync::Jobs::SyncContentMigrationsJob,