canvas_sync 0.22.17 → 0.23.1.beta1

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 (391) 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/models/canvas_sync/job_log.rb +0 -0
  5. data/app/models/canvas_sync/sync_batch.rb +0 -0
  6. data/config/initializers/apartment.rb +0 -0
  7. data/config/routes.rb +0 -0
  8. data/db/migrate/20170915210836_create_canvas_sync_job_log.rb +0 -0
  9. data/db/migrate/20180725155729_add_job_id_to_canvas_sync_job_logs.rb +0 -0
  10. data/db/migrate/20190916154829_add_fork_count_to_canvas_sync_job_logs.rb +0 -0
  11. data/db/migrate/20201018210836_create_canvas_sync_sync_batches.rb +0 -0
  12. data/db/migrate/20201030210836_add_full_sync_to_canvas_sync_sync_batch.rb +0 -0
  13. data/lib/canvas_sync/api_syncable.rb +0 -0
  14. data/lib/canvas_sync/batch_processor.rb +0 -0
  15. data/lib/canvas_sync/class_callback_executor.rb +0 -0
  16. data/lib/canvas_sync/concerns/ability_helper.rb +18 -5
  17. data/lib/canvas_sync/concerns/account/ancestry.rb +0 -0
  18. data/lib/canvas_sync/concerns/account/base.rb +0 -0
  19. data/lib/canvas_sync/concerns/api_syncable.rb +0 -0
  20. data/lib/canvas_sync/concerns/deleted_scoping.rb +24 -0
  21. data/lib/canvas_sync/concerns/legacy_columns.rb +0 -0
  22. data/lib/canvas_sync/concerns/role/base.rb +0 -0
  23. data/lib/canvas_sync/config.rb +0 -0
  24. data/lib/canvas_sync/generators/install_generator.rb +0 -0
  25. data/lib/canvas_sync/generators/install_live_events_generator.rb +0 -0
  26. data/lib/canvas_sync/generators/templates/migrations/create_accounts.rb +0 -0
  27. data/lib/canvas_sync/generators/templates/migrations/create_admins.rb +0 -0
  28. data/lib/canvas_sync/generators/templates/migrations/create_assignment_groups.rb +0 -0
  29. data/lib/canvas_sync/generators/templates/migrations/create_assignments.rb +0 -0
  30. data/lib/canvas_sync/generators/templates/migrations/create_content_migrations.rb +0 -0
  31. data/lib/canvas_sync/generators/templates/migrations/create_context_module_items.rb +0 -0
  32. data/lib/canvas_sync/generators/templates/migrations/create_context_modules.rb +0 -0
  33. data/lib/canvas_sync/generators/templates/migrations/create_course_nicknames.rb +0 -0
  34. data/lib/canvas_sync/generators/templates/migrations/create_course_progresses.rb +0 -0
  35. data/lib/canvas_sync/generators/templates/migrations/create_courses.rb +0 -0
  36. data/lib/canvas_sync/generators/templates/migrations/create_grading_period_groups.rb +0 -0
  37. data/lib/canvas_sync/generators/templates/migrations/create_grading_periods.rb +0 -0
  38. data/lib/canvas_sync/generators/templates/migrations/create_group_memberships.rb +0 -0
  39. data/lib/canvas_sync/generators/templates/migrations/create_groups.rb +0 -0
  40. data/lib/canvas_sync/generators/templates/migrations/create_learning_outcome_results.rb +0 -0
  41. data/lib/canvas_sync/generators/templates/migrations/create_learning_outcomes.rb +0 -0
  42. data/lib/canvas_sync/generators/templates/migrations/create_pseudonyms.rb +0 -0
  43. data/lib/canvas_sync/generators/templates/migrations/create_rubric_assessments.rb +0 -0
  44. data/lib/canvas_sync/generators/templates/migrations/create_rubric_associations.rb +0 -0
  45. data/lib/canvas_sync/generators/templates/migrations/create_rubrics.rb +0 -0
  46. data/lib/canvas_sync/generators/templates/migrations/create_sections.rb +0 -0
  47. data/lib/canvas_sync/generators/templates/migrations/create_submissions.rb +0 -0
  48. data/lib/canvas_sync/generators/templates/migrations/create_terms.rb +0 -0
  49. data/lib/canvas_sync/generators/templates/migrations/create_user_observers.rb +0 -0
  50. data/lib/canvas_sync/generators/templates/migrations/create_users.rb +0 -0
  51. data/lib/canvas_sync/generators/templates/models/account.rb +1 -0
  52. data/lib/canvas_sync/generators/templates/models/admin.rb +1 -0
  53. data/lib/canvas_sync/generators/templates/models/assignment.rb +1 -0
  54. data/lib/canvas_sync/generators/templates/models/assignment_group.rb +1 -0
  55. data/lib/canvas_sync/generators/templates/models/content_migration.rb +0 -0
  56. data/lib/canvas_sync/generators/templates/models/context_module.rb +1 -0
  57. data/lib/canvas_sync/generators/templates/models/context_module_item.rb +1 -0
  58. data/lib/canvas_sync/generators/templates/models/course.rb +11 -0
  59. data/lib/canvas_sync/generators/templates/models/course_nickname.rb +0 -0
  60. data/lib/canvas_sync/generators/templates/models/enrollment.rb +3 -0
  61. data/lib/canvas_sync/generators/templates/models/grading_period.rb +1 -0
  62. data/lib/canvas_sync/generators/templates/models/grading_period_group.rb +1 -0
  63. data/lib/canvas_sync/generators/templates/models/group.rb +1 -0
  64. data/lib/canvas_sync/generators/templates/models/group_membership.rb +1 -0
  65. data/lib/canvas_sync/generators/templates/models/learning_outcome.rb +0 -0
  66. data/lib/canvas_sync/generators/templates/models/learning_outcome_result.rb +0 -0
  67. data/lib/canvas_sync/generators/templates/models/pseudonym.rb +1 -0
  68. data/lib/canvas_sync/generators/templates/models/role.rb +1 -0
  69. data/lib/canvas_sync/generators/templates/models/rubric.rb +0 -0
  70. data/lib/canvas_sync/generators/templates/models/rubric_assessment.rb +0 -0
  71. data/lib/canvas_sync/generators/templates/models/rubric_association.rb +0 -0
  72. data/lib/canvas_sync/generators/templates/models/section.rb +1 -0
  73. data/lib/canvas_sync/generators/templates/models/submission.rb +1 -0
  74. data/lib/canvas_sync/generators/templates/models/term.rb +10 -6
  75. data/lib/canvas_sync/generators/templates/models/user.rb +1 -0
  76. data/lib/canvas_sync/generators/templates/models/user_observer.rb +1 -0
  77. data/lib/canvas_sync/generators/templates/services/live_events/assignment_event.rb +0 -0
  78. data/lib/canvas_sync/generators/templates/services/live_events/assignment_group_event.rb +0 -0
  79. data/lib/canvas_sync/generators/templates/services/live_events/course_event.rb +0 -0
  80. data/lib/canvas_sync/generators/templates/services/live_events/course_section_event.rb +0 -0
  81. data/lib/canvas_sync/generators/templates/services/live_events/enrollment_event.rb +0 -0
  82. data/lib/canvas_sync/generators/templates/services/live_events/grade_event.rb +0 -0
  83. data/lib/canvas_sync/generators/templates/services/live_events/module_event.rb +0 -0
  84. data/lib/canvas_sync/generators/templates/services/live_events/module_item_event.rb +0 -0
  85. data/lib/canvas_sync/generators/templates/services/live_events/submission_event.rb +0 -0
  86. data/lib/canvas_sync/generators/templates/services/live_events/syllabus_event.rb +0 -0
  87. data/lib/canvas_sync/generators/templates/services/live_events/user_event.rb +0 -0
  88. data/lib/canvas_sync/importers/legacy_importer.rb +0 -0
  89. data/lib/canvas_sync/job_batches/callback.rb +0 -0
  90. data/lib/canvas_sync/job_batches/compat/active_job.rb +0 -0
  91. data/lib/canvas_sync/job_batches/compat/sidekiq/web/batches_assets/css/styles.less +0 -0
  92. data/lib/canvas_sync/job_batches/compat/sidekiq/web/batches_assets/js/util.js +0 -0
  93. data/lib/canvas_sync/job_batches/compat/sidekiq/web/helpers.rb +0 -0
  94. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_batch_tree.erb +0 -0
  95. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_batches_table.erb +0 -0
  96. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_common.erb +0 -0
  97. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_jobs_table.erb +0 -0
  98. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/_pagination.erb +0 -0
  99. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/batch.erb +0 -0
  100. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/batches.erb +0 -0
  101. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/pool.erb +0 -0
  102. data/lib/canvas_sync/job_batches/compat/sidekiq/web/views/pools.erb +0 -0
  103. data/lib/canvas_sync/job_batches/compat.rb +0 -0
  104. data/lib/canvas_sync/job_batches/context_hash.rb +0 -0
  105. data/lib/canvas_sync/job_batches/hier_batch_ids.lua +0 -0
  106. data/lib/canvas_sync/job_batches/jobs/base_job.rb +0 -0
  107. data/lib/canvas_sync/job_batches/jobs/serial_batch_job.rb +0 -0
  108. data/lib/canvas_sync/job_batches/pool.rb +0 -0
  109. data/lib/canvas_sync/job_batches/pool_refill.lua +0 -0
  110. data/lib/canvas_sync/job_batches/redis_model.rb +0 -0
  111. data/lib/canvas_sync/job_batches/redis_script.rb +0 -0
  112. data/lib/canvas_sync/job_batches/schedule_callback.lua +0 -0
  113. data/lib/canvas_sync/job_uniqueness/compat/active_job.rb +0 -0
  114. data/lib/canvas_sync/job_uniqueness/compat/sidekiq.rb +0 -0
  115. data/lib/canvas_sync/job_uniqueness/compat.rb +0 -0
  116. data/lib/canvas_sync/job_uniqueness/configuration.rb +0 -0
  117. data/lib/canvas_sync/job_uniqueness/job_uniqueness.rb +0 -0
  118. data/lib/canvas_sync/job_uniqueness/locksmith.rb +0 -0
  119. data/lib/canvas_sync/job_uniqueness/on_conflict/base.rb +0 -0
  120. data/lib/canvas_sync/job_uniqueness/on_conflict/log.rb +0 -0
  121. data/lib/canvas_sync/job_uniqueness/on_conflict/null_strategy.rb +0 -0
  122. data/lib/canvas_sync/job_uniqueness/on_conflict/raise.rb +0 -0
  123. data/lib/canvas_sync/job_uniqueness/on_conflict/reject.rb +0 -0
  124. data/lib/canvas_sync/job_uniqueness/on_conflict/reschedule.rb +0 -0
  125. data/lib/canvas_sync/job_uniqueness/on_conflict.rb +0 -0
  126. data/lib/canvas_sync/job_uniqueness/strategy/base.rb +0 -0
  127. data/lib/canvas_sync/job_uniqueness/strategy/until_and_while_executing.rb +0 -0
  128. data/lib/canvas_sync/job_uniqueness/strategy/until_executed.rb +0 -0
  129. data/lib/canvas_sync/job_uniqueness/strategy/until_executing.rb +0 -0
  130. data/lib/canvas_sync/job_uniqueness/strategy/until_expired.rb +0 -0
  131. data/lib/canvas_sync/job_uniqueness/strategy/while_executing.rb +0 -0
  132. data/lib/canvas_sync/job_uniqueness/strategy.rb +0 -0
  133. data/lib/canvas_sync/job_uniqueness/unique_job_common.rb +0 -0
  134. data/lib/canvas_sync/jobs/begin_sync_chain_job.rb +0 -0
  135. data/lib/canvas_sync/jobs/canvas_process_waiter.rb +0 -0
  136. data/lib/canvas_sync/jobs/report_checker.rb +0 -0
  137. data/lib/canvas_sync/jobs/report_processor_job.rb +1 -1
  138. data/lib/canvas_sync/jobs/report_starter.rb +0 -0
  139. data/lib/canvas_sync/jobs/sync_accounts_job.rb +0 -0
  140. data/lib/canvas_sync/jobs/sync_admins_job.rb +0 -0
  141. data/lib/canvas_sync/jobs/sync_assignment_groups_job.rb +0 -0
  142. data/lib/canvas_sync/jobs/sync_assignments_job.rb +0 -0
  143. data/lib/canvas_sync/jobs/sync_content_migrations_job.rb +0 -0
  144. data/lib/canvas_sync/jobs/sync_context_module_items_job.rb +0 -0
  145. data/lib/canvas_sync/jobs/sync_context_modules_job.rb +0 -0
  146. data/lib/canvas_sync/jobs/sync_course_progresses_job.rb +0 -0
  147. data/lib/canvas_sync/jobs/sync_provisioning_report_job.rb +0 -0
  148. data/lib/canvas_sync/jobs/sync_rubric_assessments_job.rb +0 -0
  149. data/lib/canvas_sync/jobs/sync_rubric_associations_job.rb +0 -0
  150. data/lib/canvas_sync/jobs/sync_rubrics_job.rb +0 -0
  151. data/lib/canvas_sync/jobs/sync_simple_table_job.rb +0 -0
  152. data/lib/canvas_sync/jobs/sync_submissions_job.rb +0 -0
  153. data/lib/canvas_sync/jobs/term_batches_job.rb +10 -2
  154. data/lib/canvas_sync/live_events/base_handler.rb +0 -0
  155. data/lib/canvas_sync/live_events.rb +0 -0
  156. data/lib/canvas_sync/misc_helper.rb +0 -0
  157. data/lib/canvas_sync/processors/assignment_groups_processor.rb +0 -0
  158. data/lib/canvas_sync/processors/assignments_processor.rb +0 -0
  159. data/lib/canvas_sync/processors/content_migrations_processor.rb +0 -0
  160. data/lib/canvas_sync/processors/context_module_items_processor.rb +0 -0
  161. data/lib/canvas_sync/processors/context_modules_processor.rb +0 -0
  162. data/lib/canvas_sync/processors/course_completion_report_processor.rb +0 -0
  163. data/lib/canvas_sync/processors/normal_processor.rb +0 -0
  164. data/lib/canvas_sync/processors/rubric_assessments_processor.rb +0 -0
  165. data/lib/canvas_sync/processors/rubric_associations_processor.rb +0 -0
  166. data/lib/canvas_sync/processors/rubrics_processor.rb +0 -0
  167. data/lib/canvas_sync/processors/submissions_processor.rb +0 -0
  168. data/lib/canvas_sync/record.rb +15 -0
  169. data/lib/canvas_sync/sidekiq_job.rb +0 -0
  170. data/lib/canvas_sync/version.rb +1 -1
  171. data/lib/canvas_sync.rb +15 -3
  172. data/spec/canvas_sync/canvas_sync_spec.rb +8 -4
  173. data/spec/canvas_sync/jobs/canvas_process_waiter_spec.rb +0 -0
  174. data/spec/canvas_sync/jobs/job_spec.rb +0 -0
  175. data/spec/canvas_sync/jobs/report_checker_spec.rb +0 -0
  176. data/spec/canvas_sync/jobs/report_processor_job_spec.rb +1 -1
  177. data/spec/canvas_sync/jobs/report_starter_spec.rb +0 -0
  178. data/spec/canvas_sync/jobs/sync_admins_job_spec.rb +0 -0
  179. data/spec/canvas_sync/jobs/sync_assignment_groups_job_spec.rb +0 -0
  180. data/spec/canvas_sync/jobs/sync_assignments_job_spec.rb +0 -0
  181. data/spec/canvas_sync/jobs/sync_content_migrations_job_spec.rb +0 -0
  182. data/spec/canvas_sync/jobs/sync_context_module_items_job_spec.rb +0 -0
  183. data/spec/canvas_sync/jobs/sync_context_modules_job_spec.rb +0 -0
  184. data/spec/canvas_sync/jobs/sync_provisioning_report_job_spec.rb +0 -0
  185. data/spec/canvas_sync/jobs/sync_roles_job_spec.rb +0 -0
  186. data/spec/canvas_sync/jobs/sync_simple_table_job_spec.rb +0 -0
  187. data/spec/canvas_sync/jobs/sync_submissions_job_spec.rb +0 -0
  188. data/spec/canvas_sync/jobs/sync_terms_job_spec.rb +0 -0
  189. data/spec/canvas_sync/live_events/live_event_sync_spec.rb +0 -0
  190. data/spec/canvas_sync/live_events/live_events_controller_spec.rb +0 -0
  191. data/spec/canvas_sync/live_events/process_event_job_spec.rb +0 -0
  192. data/spec/canvas_sync/misc_helper_spec.rb +0 -0
  193. data/spec/canvas_sync/models/accounts_spec.rb +0 -0
  194. data/spec/canvas_sync/models/admins_spec.rb +0 -0
  195. data/spec/canvas_sync/models/assignment_group_spec.rb +0 -0
  196. data/spec/canvas_sync/models/assignment_spec.rb +0 -0
  197. data/spec/canvas_sync/models/context_module_item_spec.rb +0 -0
  198. data/spec/canvas_sync/models/context_module_spec.rb +0 -0
  199. data/spec/canvas_sync/models/course_spec.rb +0 -0
  200. data/spec/canvas_sync/models/enrollment_spec.rb +0 -0
  201. data/spec/canvas_sync/models/group_membership_spec.rb +0 -0
  202. data/spec/canvas_sync/models/group_spec.rb +0 -0
  203. data/spec/canvas_sync/models/roles_spec.rb +0 -0
  204. data/spec/canvas_sync/models/section_spec.rb +0 -0
  205. data/spec/canvas_sync/models/submission_spec.rb +0 -0
  206. data/spec/canvas_sync/models/term_spec.rb +0 -0
  207. data/spec/canvas_sync/models/user_spec.rb +0 -0
  208. data/spec/canvas_sync/processors/assignment_groups_processor_spec.rb +0 -0
  209. data/spec/canvas_sync/processors/assignments_processor_spec.rb +0 -0
  210. data/spec/canvas_sync/processors/content_migrations_processor_spec.rb +0 -0
  211. data/spec/canvas_sync/processors/context_module_items_processor_spec.rb +0 -0
  212. data/spec/canvas_sync/processors/context_modules_processor_spec.rb +0 -0
  213. data/spec/canvas_sync/processors/course_completion_report_processor_spec.rb +0 -0
  214. data/spec/canvas_sync/processors/rubric_assessments_spec.rb +0 -0
  215. data/spec/canvas_sync/processors/rubric_associations_spec.rb +0 -0
  216. data/spec/canvas_sync/processors/rubrics_processor_spec.rb +0 -0
  217. data/spec/canvas_sync/processors/submissions_processor_spec.rb +0 -0
  218. data/spec/canvas_sync/services/module_event_spec.rb +0 -0
  219. data/spec/canvas_sync/services/module_item_event_spec.rb +0 -0
  220. data/spec/dummy/README.rdoc +0 -0
  221. data/spec/dummy/Rakefile +0 -0
  222. data/spec/dummy/app/models/account.rb +1 -0
  223. data/spec/dummy/app/models/admin.rb +1 -0
  224. data/spec/dummy/app/models/application_record.rb +0 -0
  225. data/spec/dummy/app/models/assignment.rb +1 -0
  226. data/spec/dummy/app/models/assignment_group.rb +1 -0
  227. data/spec/dummy/app/models/content_migration.rb +0 -0
  228. data/spec/dummy/app/models/context_module.rb +1 -0
  229. data/spec/dummy/app/models/context_module_item.rb +1 -0
  230. data/spec/dummy/app/models/course.rb +11 -0
  231. data/spec/dummy/app/models/course_nickname.rb +0 -0
  232. data/spec/dummy/app/models/enrollment.rb +3 -0
  233. data/spec/dummy/app/models/grading_period.rb +1 -0
  234. data/spec/dummy/app/models/grading_period_group.rb +1 -0
  235. data/spec/dummy/app/models/group.rb +1 -0
  236. data/spec/dummy/app/models/group_membership.rb +1 -0
  237. data/spec/dummy/app/models/learning_outcome.rb +0 -0
  238. data/spec/dummy/app/models/pseudonym.rb +1 -0
  239. data/spec/dummy/app/models/role.rb +1 -0
  240. data/spec/dummy/app/models/section.rb +1 -0
  241. data/spec/dummy/app/models/submission.rb +1 -0
  242. data/spec/dummy/app/models/term.rb +10 -6
  243. data/spec/dummy/app/models/user.rb +1 -0
  244. data/spec/dummy/app/models/user_observer.rb +1 -0
  245. data/spec/dummy/app/services/live_events/assignment_created_event.rb +0 -0
  246. data/spec/dummy/app/services/live_events/assignment_event.rb +0 -0
  247. data/spec/dummy/app/services/live_events/assignment_updated_event.rb +0 -0
  248. data/spec/dummy/app/services/live_events/base_event.rb +0 -0
  249. data/spec/dummy/app/services/live_events/course_created_event.rb +0 -0
  250. data/spec/dummy/app/services/live_events/course_event.rb +0 -0
  251. data/spec/dummy/app/services/live_events/course_section_created_event.rb +0 -0
  252. data/spec/dummy/app/services/live_events/course_section_event.rb +0 -0
  253. data/spec/dummy/app/services/live_events/course_section_updated_event.rb +0 -0
  254. data/spec/dummy/app/services/live_events/course_updated_event.rb +0 -0
  255. data/spec/dummy/app/services/live_events/enrollment_created_event.rb +0 -0
  256. data/spec/dummy/app/services/live_events/enrollment_event.rb +0 -0
  257. data/spec/dummy/app/services/live_events/enrollment_updated_event.rb +0 -0
  258. data/spec/dummy/app/services/live_events/grade_changed_event.rb +0 -0
  259. data/spec/dummy/app/services/live_events/grade_event.rb +0 -0
  260. data/spec/dummy/app/services/live_events/module_created_event.rb +0 -0
  261. data/spec/dummy/app/services/live_events/module_event.rb +0 -0
  262. data/spec/dummy/app/services/live_events/module_item_created_event.rb +0 -0
  263. data/spec/dummy/app/services/live_events/module_item_event.rb +0 -0
  264. data/spec/dummy/app/services/live_events/module_item_updated_event.rb +0 -0
  265. data/spec/dummy/app/services/live_events/module_updated_event.rb +0 -0
  266. data/spec/dummy/app/services/live_events/submission_created_event.rb +0 -0
  267. data/spec/dummy/app/services/live_events/submission_event.rb +0 -0
  268. data/spec/dummy/app/services/live_events/submission_updated_event.rb +0 -0
  269. data/spec/dummy/app/services/live_events/syllabus_event.rb +0 -0
  270. data/spec/dummy/app/services/live_events/syllabus_updated_event.rb +0 -0
  271. data/spec/dummy/app/services/live_events/user_created_event.rb +0 -0
  272. data/spec/dummy/app/services/live_events/user_event.rb +0 -0
  273. data/spec/dummy/app/services/live_events/user_updated_event.rb +0 -0
  274. data/spec/dummy/config/boot.rb +0 -0
  275. data/spec/dummy/config/database.yml +0 -0
  276. data/spec/dummy/config/environment.rb +0 -0
  277. data/spec/dummy/config/environments/development.rb +0 -0
  278. data/spec/dummy/config/environments/test.rb +0 -0
  279. data/spec/dummy/config/initializers/assets.rb +0 -0
  280. data/spec/dummy/config/initializers/session_store.rb +0 -0
  281. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -0
  282. data/spec/dummy/config/routes.rb +0 -0
  283. data/spec/dummy/config/secrets.yml +0 -0
  284. data/spec/dummy/config.ru +0 -0
  285. data/spec/dummy/db/migrate/20190702203621_create_courses.rb +0 -0
  286. data/spec/dummy/db/migrate/20190702203622_create_accounts.rb +0 -0
  287. data/spec/dummy/db/migrate/20190702203623_create_terms.rb +0 -0
  288. data/spec/dummy/db/migrate/20190702203625_create_sections.rb +0 -0
  289. data/spec/dummy/db/migrate/20190702203626_create_assignments.rb +0 -0
  290. data/spec/dummy/db/migrate/20190702203627_create_submissions.rb +0 -0
  291. data/spec/dummy/db/migrate/20190702203630_create_assignment_groups.rb +0 -0
  292. data/spec/dummy/db/migrate/20190702203631_create_context_modules.rb +0 -0
  293. data/spec/dummy/db/migrate/20190702203632_create_context_module_items.rb +0 -0
  294. data/spec/dummy/db/migrate/20190927204545_create_roles.rb +0 -0
  295. data/spec/dummy/db/migrate/20190927204546_create_admins.rb +0 -0
  296. data/spec/dummy/db/migrate/20200415171620_create_groups.rb +0 -0
  297. data/spec/dummy/db/migrate/20200416214248_create_group_memberships.rb +0 -0
  298. data/spec/dummy/db/migrate/20201016181346_create_pseudonyms.rb +0 -0
  299. data/spec/dummy/db/migrate/20210907233329_create_user_observers.rb +0 -0
  300. data/spec/dummy/db/migrate/20210907233330_create_grading_periods.rb +0 -0
  301. data/spec/dummy/db/migrate/20211001184920_create_grading_period_groups.rb +0 -0
  302. data/spec/dummy/db/migrate/20220308072643_create_content_migrations.rb +0 -0
  303. data/spec/dummy/db/migrate/20220712210559_create_learning_outcomes.rb +0 -0
  304. data/spec/dummy/db/migrate/20220926221926_create_users.rb +0 -0
  305. data/spec/dummy/db/migrate/20240510094100_create_rubric_associations.rb +0 -0
  306. data/spec/dummy/db/migrate/20240510101100_create_rubric_assessments.rb +0 -0
  307. data/spec/dummy/db/migrate/20240523101010_create_learning_outcome_results.rb +0 -0
  308. data/spec/dummy/db/migrate/20240828161300_create_course_progresses.rb +0 -0
  309. data/spec/factories/account_factory.rb +0 -0
  310. data/spec/factories/admin_factory.rb +0 -0
  311. data/spec/factories/assignment_factory.rb +0 -0
  312. data/spec/factories/assignment_group_factory.rb +0 -0
  313. data/spec/factories/context_module_factory.rb +0 -0
  314. data/spec/factories/context_module_item_factory.rb +0 -0
  315. data/spec/factories/course_factory.rb +0 -0
  316. data/spec/factories/enrollment_factory.rb +0 -0
  317. data/spec/factories/group_factory.rb +0 -0
  318. data/spec/factories/group_membership_factory.rb +0 -0
  319. data/spec/factories/role_factory.rb +0 -0
  320. data/spec/factories/section_factory.rb +0 -0
  321. data/spec/factories/submission_factory.rb +0 -0
  322. data/spec/factories/term_factory.rb +0 -0
  323. data/spec/factories/user_factory.rb +0 -0
  324. data/spec/job_batching/batch_spec.rb +0 -0
  325. data/spec/job_batching/callback_spec.rb +0 -0
  326. data/spec/job_batching/compat/active_job_spec.rb +0 -0
  327. data/spec/job_batching/compat/sidekiq_spec.rb +0 -0
  328. data/spec/job_batching/context_hash_spec.rb +0 -0
  329. data/spec/job_batching/flow_spec.rb +0 -0
  330. data/spec/job_batching/integration/fail_then_succeed.rb +0 -0
  331. data/spec/job_batching/integration/integration.rb +0 -0
  332. data/spec/job_batching/integration/nested.rb +0 -0
  333. data/spec/job_batching/integration/simple.rb +0 -0
  334. data/spec/job_batching/integration/workflow.rb +0 -0
  335. data/spec/job_batching/integration_helper.rb +0 -0
  336. data/spec/job_batching/pool_spec.rb +0 -0
  337. data/spec/job_batching/status_spec.rb +0 -0
  338. data/spec/job_batching/support/base_job.rb +0 -0
  339. data/spec/job_batching/support/sample_callback.rb +0 -0
  340. data/spec/job_uniqueness/compat/active_job_spec.rb +0 -0
  341. data/spec/job_uniqueness/compat/sidekiq_spec.rb +0 -0
  342. data/spec/job_uniqueness/lock_context_spec.rb +0 -0
  343. data/spec/job_uniqueness/on_conflict/log_spec.rb +0 -0
  344. data/spec/job_uniqueness/on_conflict/raise_spec.rb +0 -0
  345. data/spec/job_uniqueness/on_conflict/reschedule_spec.rb +0 -0
  346. data/spec/job_uniqueness/on_conflict_spec.rb +0 -0
  347. data/spec/job_uniqueness/spec_helper.rb +0 -0
  348. data/spec/job_uniqueness/strategy/base_spec.rb +0 -0
  349. data/spec/job_uniqueness/strategy/until_and_while_executing_spec.rb +0 -0
  350. data/spec/job_uniqueness/strategy/until_executed_spec.rb +0 -0
  351. data/spec/job_uniqueness/strategy/until_executing_spec.rb +0 -0
  352. data/spec/job_uniqueness/strategy/until_expired_spec.rb +0 -0
  353. data/spec/job_uniqueness/strategy/while_executing_spec.rb +0 -0
  354. data/spec/job_uniqueness/support/lock_strategy.rb +0 -0
  355. data/spec/job_uniqueness/support/on_conflict.rb +0 -0
  356. data/spec/job_uniqueness/support/test_worker.rb +0 -0
  357. data/spec/job_uniqueness/unique_job_common_spec.rb +0 -0
  358. data/spec/support/fake_canvas.rb +0 -0
  359. data/spec/support/fixtures/canvas_responses/admins.json +0 -0
  360. data/spec/support/fixtures/canvas_responses/module.json +0 -0
  361. data/spec/support/fixtures/canvas_responses/module_item.json +0 -0
  362. data/spec/support/fixtures/canvas_responses/roles.json +0 -0
  363. data/spec/support/fixtures/canvas_responses/terms.json +0 -0
  364. data/spec/support/fixtures/reports/assignment_groups.csv +0 -0
  365. data/spec/support/fixtures/reports/assignments.csv +0 -0
  366. data/spec/support/fixtures/reports/content_migrations.csv +0 -0
  367. data/spec/support/fixtures/reports/context_module_items.csv +0 -0
  368. data/spec/support/fixtures/reports/context_modules.csv +0 -0
  369. data/spec/support/fixtures/reports/course_nicknames.csv +0 -0
  370. data/spec/support/fixtures/reports/course_progresses.csv +0 -0
  371. data/spec/support/fixtures/reports/course_progresses_conflict.csv +0 -0
  372. data/spec/support/fixtures/reports/courses.csv +0 -0
  373. data/spec/support/fixtures/reports/enrollments.csv +0 -0
  374. data/spec/support/fixtures/reports/grading_period_groups.csv +0 -0
  375. data/spec/support/fixtures/reports/grading_periods.csv +0 -0
  376. data/spec/support/fixtures/reports/group_memberships.csv +0 -0
  377. data/spec/support/fixtures/reports/groups.csv +0 -0
  378. data/spec/support/fixtures/reports/learning_outcome_results.csv +0 -0
  379. data/spec/support/fixtures/reports/learning_outcomes.csv +0 -0
  380. data/spec/support/fixtures/reports/provisioning_csv +0 -0
  381. data/spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv +0 -0
  382. data/spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv +0 -0
  383. data/spec/support/fixtures/reports/rubric_assessments.csv +0 -0
  384. data/spec/support/fixtures/reports/rubric_associations.csv +0 -0
  385. data/spec/support/fixtures/reports/rubrics.csv +0 -0
  386. data/spec/support/fixtures/reports/sections.csv +0 -0
  387. data/spec/support/fixtures/reports/submissions.csv +0 -0
  388. data/spec/support/fixtures/reports/user_observers.csv +0 -0
  389. data/spec/support/fixtures/reports/users.csv +0 -0
  390. data/spec/support/fixtures/reports/xlist.csv +0 -0
  391. metadata +7 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1886e5d9f3b6185def70ebc898cc3b2bb78b307cb06c1ea7368cce9120a2359
4
- data.tar.gz: 9e259485ec5d003657a59797228966aac56cb23c8e00ae6bc86ca6bb1e3e68e4
3
+ metadata.gz: 48b7c1dac720b5d18b462414ffc84645e604912089fdacbd2ca9223ae98e2609
4
+ data.tar.gz: 74d978170f2f4e755fa77b11e47a791e6f4a3cb2fc426e25ffa82d87fd86655d
5
5
  SHA512:
6
- metadata.gz: 5958a47f3a0744aa73e5ce8bbed8cf34443d27737a12dbfc8d7f9769ef13bef125d997918f8755517fc6d033ddb62fc4f8b5d44eaf3eee07da4c97bf06dcced5
7
- data.tar.gz: 400f377271080a38fdfc851e118ef9d103c5dafa2acf236e8530aeb01ea5a79513a6efb744f41a2d28344607eaa9f60fdd537a52bb7fc162783dad62e8c0966a
6
+ metadata.gz: cc8c695d1314127dc7edb3ff514340ac4bb22be59898b52930c15deeb2768e3c8b56a17c1aee9fd194e6b88c663027754299d617af687ab39355a29a9426faaa
7
+ data.tar.gz: 4ce862f92be4ced93947d665dec9eec1e98ff4b81dcb5fde03b8cbb0070edb668121bfe27b441b822d734976b5e4f8404069c356aed157e7aaf931bc3b39c8d5
data/Rakefile CHANGED
File without changes
File without changes
File without changes
File without changes
data/config/routes.rb CHANGED
File without changes
File without changes
File without changes
File without changes
@@ -23,21 +23,34 @@ module CanvasSync::Concerns
23
23
  if panda_pal_session.lti_launch_placement == "global_navigation"
24
24
  :global
25
25
  elsif panda_pal_session.get_lti_cust_param('custom_canvas_course_id').present?
26
- ::Course.find_by(canvas_id: panda_pal_session.get_lti_cust_param('custom_canvas_course_id'))
26
+ load_canvas_model(::Course, panda_pal_session.get_lti_cust_param('custom_canvas_course_id'))
27
27
  else
28
- ::Account.find_by(canvas_id: panda_pal_session.get_lti_cust_param('custom_canvas_account_id'))
28
+ load_canvas_model(::Account, panda_pal_session.get_lti_cust_param('custom_canvas_account_id'))
29
29
  end
30
30
  end
31
31
  end
32
32
 
33
33
  def launch_account
34
- @launch_account ||= launch_context.respond_to?(:account) ?
35
- launch_context.account :
36
- ::Account.find_by(canvas_id: panda_pal_session.get_lti_cust_param('custom_canvas_account_id'))
34
+ return @launch_account if defined?(@launch_account)
35
+
36
+ if launch_context.respond_to?(:account)
37
+ @launch_account = launch_context.account
38
+ @launch_account ||= load_canvas_model(::Account, launch_context.canvas_account_id) if launch_context.respond_to?(:canvas_account_id)
39
+ end
40
+
41
+ @launch_account ||= load_canvas_model(::Account, panda_pal_session.get_lti_cust_param('custom_canvas_account_id'))
42
+
43
+ @launch_account
37
44
  end
38
45
 
39
46
  # CanvasSync Domain
40
47
 
48
+ def load_canvas_model(model, canvas_id)
49
+ record = model.find_or_fetch(canvas_id) if model.respond_to?(:find_or_fetch)
50
+ record ||= model.find_by(canvas_id: canvas_id)
51
+ record
52
+ end
53
+
41
54
  def canvas_permissions
42
55
  panda_pal_session[:canvas_permissions] ||= ::Role.joined_permissions(canvas_roles)
43
56
  end
File without changes
File without changes
File without changes
@@ -0,0 +1,24 @@
1
+ # This concern sets the default_scope of the model to exclude items with workflow_state: 'deleted'
2
+ module CanvasSync::Concerns
3
+ module DeletedScoping
4
+ extend ActiveSupport::Concern
5
+
6
+ class_methods do
7
+ def with_deleted
8
+ unscope(where: :workflow_state)
9
+ end
10
+ end
11
+
12
+ included do
13
+ default_scope do
14
+ model = scope.try(:model) || scope
15
+
16
+ if model.try(:column_names)&.include?(:workflow_state)
17
+ scope.where.not(workflow_state: %w[deleted])
18
+ else
19
+ all
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
File without changes
File without changes
File without changes
File without changes
@@ -5,6 +5,7 @@ class Account < ApplicationRecord
5
5
  include CanvasSync::Concerns::ApiSyncable
6
6
  # include CanvasSync::Concerns::Account::Ancestry # Add support for the ancestry Gem
7
7
  # include CanvasSync::Concerns::LiveEventSync
8
+ # include CanvasSync::Concerns::DeletedScoping
8
9
 
9
10
  canvas_sync_features :defaults
10
11
 
@@ -3,6 +3,7 @@
3
3
  class Admin < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
+ # include CanvasSync::Concerns::DeletedScoping
6
7
 
7
8
  canvas_sync_features :defaults
8
9
 
@@ -4,6 +4,7 @@ class Assignment < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
6
  # include CanvasSync::Concerns::LiveEventSync
7
+ # include CanvasSync::Concerns::DeletedScoping
7
8
 
8
9
  canvas_sync_features :defaults
9
10
 
@@ -4,6 +4,7 @@ class AssignmentGroup < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
6
  # include CanvasSync::Concerns::LiveEventSync
7
+ # include CanvasSync::Concerns::DeletedScoping
7
8
 
8
9
  canvas_sync_features :defaults
9
10
 
@@ -6,6 +6,7 @@
6
6
  class ContextModule < ApplicationRecord
7
7
  include CanvasSync::Record
8
8
  include CanvasSync::Concerns::ApiSyncable
9
+ # include CanvasSync::Concerns::DeletedScoping
9
10
 
10
11
  # include CanvasSync::Concerns::LiveEventSync
11
12
  # live_events_config event_prefix: :module
@@ -4,6 +4,7 @@ class ContextModuleItem < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
6
  # include CanvasSync::Concerns::LiveEventSync
7
+ # include CanvasSync::Concerns::DeletedScoping
7
8
 
8
9
  canvas_sync_features :defaults
9
10
 
@@ -3,6 +3,7 @@
3
3
  class Course < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
+ # include CanvasSync::Concerns::DeletedScoping
6
7
 
7
8
  canvas_sync_features :defaults
8
9
 
@@ -34,4 +35,14 @@ class Course < ApplicationRecord
34
35
  start_at: :start_at,
35
36
  end_at: :end_at,
36
37
  }, -> (api) { api.course(canvas_id) })
38
+
39
+ scope :active, -> { where(workflow_state: 'active') }
40
+
41
+ scope :current, -> {
42
+ base_query = all.joins(:term)
43
+ base_query
44
+ .where("#{current_table_name}.start_at <= ? OR #{current_table_name}.start_at IS NULL", DateTime.now)
45
+ .where("#{current_table_name}.end_at >= ? OR #{current_table_name}.end_at IS NULL", DateTime.now)
46
+ .or(base_query.merge(Term.current))
47
+ }
37
48
  end
@@ -3,6 +3,7 @@
3
3
  class Enrollment < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
+ # include CanvasSync::Concerns::DeletedScoping
6
7
 
7
8
  canvas_sync_features :defaults
8
9
 
@@ -36,4 +37,6 @@ class Enrollment < ApplicationRecord
36
37
  base_role_type: :type,
37
38
  workflow_state: :enrollment_state,
38
39
  }, -> (api) { api.enrollment("self", canvas_id) })
40
+
41
+ scope :active, -> { where(workflow_state: 'active') }
39
42
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  class GradingPeriod < ApplicationRecord
4
4
  include CanvasSync::Record
5
+ # include CanvasSync::Concerns::DeletedScoping
5
6
 
6
7
  canvas_sync_features :defaults
7
8
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  class GradingPeriodGroup < ApplicationRecord
4
4
  include CanvasSync::Record
5
+ # include CanvasSync::Concerns::DeletedScoping
5
6
 
6
7
  canvas_sync_features :defaults
7
8
 
@@ -3,6 +3,7 @@
3
3
  class Group < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
+ # include CanvasSync::Concerns::DeletedScoping
6
7
 
7
8
  canvas_sync_features :defaults
8
9
 
@@ -3,6 +3,7 @@
3
3
  class GroupMembership < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
+ # include CanvasSync::Concerns::DeletedScoping
6
7
 
7
8
  canvas_sync_features :defaults
8
9
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  class Pseudonym < ApplicationRecord
4
4
  include CanvasSync::Record
5
+ include CanvasSync::Concerns::DeletedScoping
5
6
 
6
7
  canvas_sync_features :defaults
7
8
 
@@ -3,6 +3,7 @@
3
3
  class Role < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
+ # include CanvasSync::Concerns::DeletedScoping
6
7
 
7
8
  canvas_sync_features :defaults
8
9
 
@@ -3,6 +3,7 @@
3
3
  class Section < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
+ # include CanvasSync::Concerns::DeletedScoping
6
7
 
7
8
  canvas_sync_features :defaults
8
9
 
@@ -4,6 +4,7 @@ class Submission < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
6
  # include CanvasSync::Concerns::LiveEventSync
7
+ # include CanvasSync::Concerns::DeletedScoping
7
8
 
8
9
  canvas_sync_features :defaults
9
10
 
@@ -3,6 +3,7 @@
3
3
  class Term < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
+ # include CanvasSync::Concerns::DeletedScoping
6
7
 
7
8
  canvas_sync_features :defaults
8
9
 
@@ -25,12 +26,15 @@ class Term < ApplicationRecord
25
26
  term_data
26
27
  })
27
28
 
28
- # This is a sample scope created by the CanvasSync gem; feel
29
- # free to customize it for your tool's requirements.
30
- scope :active, -> {
31
- where(workflow_state: 'active')
32
- .where("start_at <= ? OR start_at IS NULL", 15.days.from_now)
33
- .where("end_at >= ? OR end_at IS NULL", 15.days.ago)
29
+ # Our pattern has usually had `Term.active` include date scoping.
30
+ # `active` here is then a bit of a misnomer, but the template is written to follow our previous patterns.
31
+ scope :active, -> { where(workflow_state: 'active').current }
32
+
33
+ scope :current, ->(grace_time: 0.seconds) {
34
+ all
35
+ .where("#{current_table_name}.start_at <= ? OR #{current_table_name}.start_at IS NULL", grace_time.from_now)
36
+ .where("#{current_table_name}.end_at >= ? OR #{current_table_name}.end_at IS NULL", grace_time.ago)
34
37
  }
35
38
 
39
+ scope :should_canvas_sync, -> { where(workflow_state: 'active').current(grace_time: 15.days) }
36
40
  end
@@ -3,6 +3,7 @@
3
3
  class User < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
+ # include CanvasSync::Concerns::DeletedScoping
6
7
 
7
8
  canvas_sync_features :defaults
8
9
 
@@ -3,6 +3,7 @@
3
3
  class UserObserver < ApplicationRecord
4
4
  include CanvasSync::Record
5
5
  include CanvasSync::Concerns::ApiSyncable
6
+ # include CanvasSync::Concerns::DeletedScoping
6
7
 
7
8
  canvas_sync_features :defaults
8
9
 
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
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
@@ -26,7 +26,7 @@ module CanvasSync
26
26
  def download(report_name, report_url)
27
27
  Dir.mktmpdir do |dir|
28
28
  file_path = "#{dir}/#{report_name}"
29
- IO.copy_stream(URI.open(report_url), file_path)
29
+ canvas_sync_client.download_report(report_url, file_path)
30
30
  yield file_path
31
31
  end
32
32
  end
File without changes
File without changes
File without changes
File without changes
File without changes