canvas_sync 0.27.11 → 0.27.15

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 (243) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/canvas_sync/api/v1/health_check_controller.rb +0 -0
  3. data/app/models/canvas_sync/job_log.rb +0 -0
  4. data/app/models/canvas_sync/sync_batch.rb +0 -0
  5. data/config/initializers/apartment.rb +0 -0
  6. data/config/routes.rb +0 -0
  7. data/db/migrate/20170915210836_create_canvas_sync_job_log.rb +0 -0
  8. data/db/migrate/20180725155729_add_job_id_to_canvas_sync_job_logs.rb +0 -0
  9. data/db/migrate/20190916154829_add_fork_count_to_canvas_sync_job_logs.rb +0 -0
  10. data/db/migrate/20201018210836_create_canvas_sync_sync_batches.rb +0 -0
  11. data/db/migrate/20201030210836_add_full_sync_to_canvas_sync_sync_batch.rb +0 -0
  12. data/lib/canvas_sync/api_syncable.rb +0 -0
  13. data/lib/canvas_sync/batch_processor.rb +0 -0
  14. data/lib/canvas_sync/class_callback_executor.rb +0 -0
  15. data/lib/canvas_sync/concerns/ability_helper.rb +43 -2
  16. data/lib/canvas_sync/concerns/account/ancestry.rb +0 -0
  17. data/lib/canvas_sync/concerns/account/base.rb +0 -0
  18. data/lib/canvas_sync/concerns/api_syncable.rb +0 -0
  19. data/lib/canvas_sync/concerns/canvas_id_as_primary.rb +0 -0
  20. data/lib/canvas_sync/concerns/jit_syncing.rb +0 -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/generators/install_generator.rb +0 -0
  24. data/lib/canvas_sync/generators/install_live_events_generator.rb +0 -0
  25. data/lib/canvas_sync/generators/templates/migrations/create_accounts.rb +0 -0
  26. data/lib/canvas_sync/generators/templates/migrations/create_admins.rb +0 -0
  27. data/lib/canvas_sync/generators/templates/migrations/create_assignment_groups.rb +0 -0
  28. data/lib/canvas_sync/generators/templates/migrations/create_assignments.rb +0 -0
  29. data/lib/canvas_sync/generators/templates/migrations/create_content_migrations.rb +0 -0
  30. data/lib/canvas_sync/generators/templates/migrations/create_context_module_items.rb +0 -0
  31. data/lib/canvas_sync/generators/templates/migrations/create_context_modules.rb +0 -0
  32. data/lib/canvas_sync/generators/templates/migrations/create_course_nicknames.rb +0 -0
  33. data/lib/canvas_sync/generators/templates/migrations/create_course_progresses.rb +0 -0
  34. data/lib/canvas_sync/generators/templates/migrations/create_grading_period_groups.rb +0 -0
  35. data/lib/canvas_sync/generators/templates/migrations/create_grading_periods.rb +0 -0
  36. data/lib/canvas_sync/generators/templates/migrations/create_group_memberships.rb +0 -0
  37. data/lib/canvas_sync/generators/templates/migrations/create_groups.rb +0 -0
  38. data/lib/canvas_sync/generators/templates/migrations/create_learning_outcome_results.rb +0 -0
  39. data/lib/canvas_sync/generators/templates/migrations/create_learning_outcomes.rb +0 -0
  40. data/lib/canvas_sync/generators/templates/migrations/create_pseudonyms.rb +0 -0
  41. data/lib/canvas_sync/generators/templates/migrations/create_rubric_assessments.rb +0 -0
  42. data/lib/canvas_sync/generators/templates/migrations/create_rubric_associations.rb +0 -0
  43. data/lib/canvas_sync/generators/templates/migrations/create_rubrics.rb +0 -0
  44. data/lib/canvas_sync/generators/templates/migrations/create_sections.rb +0 -0
  45. data/lib/canvas_sync/generators/templates/migrations/create_submissions.rb +0 -0
  46. data/lib/canvas_sync/generators/templates/migrations/create_terms.rb +0 -0
  47. data/lib/canvas_sync/generators/templates/migrations/create_user_observers.rb +0 -0
  48. data/lib/canvas_sync/generators/templates/migrations/create_users.rb +0 -0
  49. data/lib/canvas_sync/generators/templates/models/content_migration.rb +0 -0
  50. data/lib/canvas_sync/generators/templates/models/course_nickname.rb +0 -0
  51. data/lib/canvas_sync/generators/templates/models/rubric.rb +0 -0
  52. data/lib/canvas_sync/generators/templates/models/rubric_assessment.rb +0 -0
  53. data/lib/canvas_sync/generators/templates/models/rubric_association.rb +0 -0
  54. data/lib/canvas_sync/generators/templates/services/live_events/assignment_event.rb +0 -0
  55. data/lib/canvas_sync/generators/templates/services/live_events/assignment_group_event.rb +0 -0
  56. data/lib/canvas_sync/generators/templates/services/live_events/course_event.rb +0 -0
  57. data/lib/canvas_sync/generators/templates/services/live_events/course_section_event.rb +0 -0
  58. data/lib/canvas_sync/generators/templates/services/live_events/enrollment_event.rb +0 -0
  59. data/lib/canvas_sync/generators/templates/services/live_events/grade_event.rb +0 -0
  60. data/lib/canvas_sync/generators/templates/services/live_events/module_event.rb +0 -0
  61. data/lib/canvas_sync/generators/templates/services/live_events/module_item_event.rb +0 -0
  62. data/lib/canvas_sync/generators/templates/services/live_events/submission_event.rb +0 -0
  63. data/lib/canvas_sync/generators/templates/services/live_events/syllabus_event.rb +0 -0
  64. data/lib/canvas_sync/generators/templates/services/live_events/user_event.rb +0 -0
  65. data/lib/canvas_sync/importers/legacy_importer.rb +0 -0
  66. data/lib/canvas_sync/jobs/begin_sync_chain_job.rb +0 -0
  67. data/lib/canvas_sync/jobs/canvas_process_waiter.rb +0 -0
  68. data/lib/canvas_sync/jobs/report_starter.rb +5 -1
  69. data/lib/canvas_sync/jobs/report_sync_task.rb +12 -4
  70. data/lib/canvas_sync/jobs/sync_accounts_job.rb +2 -1
  71. data/lib/canvas_sync/jobs/sync_admins_job.rb +0 -0
  72. data/lib/canvas_sync/jobs/sync_assignment_groups_job.rb +0 -0
  73. data/lib/canvas_sync/jobs/sync_assignments_job.rb +0 -0
  74. data/lib/canvas_sync/jobs/sync_content_migrations_job.rb +0 -0
  75. data/lib/canvas_sync/jobs/sync_context_module_items_job.rb +0 -0
  76. data/lib/canvas_sync/jobs/sync_context_modules_job.rb +0 -0
  77. data/lib/canvas_sync/jobs/sync_provisioning_report_job.rb +1 -1
  78. data/lib/canvas_sync/jobs/sync_rubrics_job.rb +0 -0
  79. data/lib/canvas_sync/jobs/sync_simple_table_job.rb +0 -0
  80. data/lib/canvas_sync/live_events/base_handler.rb +0 -0
  81. data/lib/canvas_sync/live_events.rb +0 -0
  82. data/lib/canvas_sync/misc_helper.rb +0 -0
  83. data/lib/canvas_sync/processors/normal_processor.rb +0 -0
  84. data/lib/canvas_sync/sidekiq_job.rb +0 -0
  85. data/lib/canvas_sync/version.rb +1 -1
  86. data/lib/canvas_sync.rb +66 -86
  87. data/spec/canvas_sync/concerns/ability_helper_spec.rb +165 -0
  88. data/spec/canvas_sync/jobs/begin_sync_chain_job_spec.rb +9 -3
  89. data/spec/canvas_sync/jobs/canvas_process_waiter_spec.rb +0 -0
  90. data/spec/canvas_sync/jobs/report_starter_spec.rb +0 -0
  91. data/spec/canvas_sync/jobs/report_sync_task_spec.rb +56 -0
  92. data/spec/canvas_sync/jobs/sync_accounts_job_spec.rb +41 -0
  93. data/spec/canvas_sync/jobs/sync_admins_job_spec.rb +0 -0
  94. data/spec/canvas_sync/jobs/sync_provisioning_report_job_spec.rb +2 -2
  95. data/spec/canvas_sync/jobs/sync_roles_job_spec.rb +0 -0
  96. data/spec/canvas_sync/jobs/sync_simple_table_job_spec.rb +0 -0
  97. data/spec/canvas_sync/jobs/sync_terms_job_spec.rb +0 -0
  98. data/spec/canvas_sync/live_events/live_event_sync_spec.rb +0 -0
  99. data/spec/canvas_sync/live_events/live_events_controller_spec.rb +0 -0
  100. data/spec/canvas_sync/misc_helper_spec.rb +0 -0
  101. data/spec/canvas_sync/models/accounts_spec.rb +0 -0
  102. data/spec/canvas_sync/models/admins_spec.rb +0 -0
  103. data/spec/canvas_sync/models/assignment_group_spec.rb +0 -0
  104. data/spec/canvas_sync/models/assignment_spec.rb +0 -0
  105. data/spec/canvas_sync/models/context_module_item_spec.rb +0 -0
  106. data/spec/canvas_sync/models/context_module_spec.rb +0 -0
  107. data/spec/canvas_sync/models/course_spec.rb +0 -0
  108. data/spec/canvas_sync/models/enrollment_spec.rb +0 -0
  109. data/spec/canvas_sync/models/group_membership_spec.rb +0 -0
  110. data/spec/canvas_sync/models/group_spec.rb +0 -0
  111. data/spec/canvas_sync/models/roles_spec.rb +0 -0
  112. data/spec/canvas_sync/models/section_spec.rb +0 -0
  113. data/spec/canvas_sync/models/submission_spec.rb +0 -0
  114. data/spec/canvas_sync/models/term_spec.rb +0 -0
  115. data/spec/canvas_sync/models/user_spec.rb +0 -0
  116. data/spec/canvas_sync/processors/assignment_groups_processor_spec.rb +0 -0
  117. data/spec/canvas_sync/processors/assignments_processor_spec.rb +0 -0
  118. data/spec/canvas_sync/processors/content_migrations_processor_spec.rb +0 -0
  119. data/spec/canvas_sync/processors/context_module_items_processor_spec.rb +0 -0
  120. data/spec/canvas_sync/processors/context_modules_processor_spec.rb +0 -0
  121. data/spec/canvas_sync/processors/course_completion_report_processor_spec.rb +0 -0
  122. data/spec/canvas_sync/processors/rubric_assessments_spec.rb +0 -0
  123. data/spec/canvas_sync/processors/rubric_associations_spec.rb +0 -0
  124. data/spec/canvas_sync/processors/rubrics_processor_spec.rb +0 -0
  125. data/spec/canvas_sync/processors/submissions_processor_spec.rb +0 -0
  126. data/spec/canvas_sync/services/module_event_spec.rb +0 -0
  127. data/spec/canvas_sync/services/module_item_event_spec.rb +0 -0
  128. data/spec/factories/admin_factory.rb +0 -0
  129. data/spec/factories/assignment_factory.rb +0 -0
  130. data/spec/factories/assignment_group_factory.rb +0 -0
  131. data/spec/factories/context_module_factory.rb +0 -0
  132. data/spec/factories/context_module_item_factory.rb +0 -0
  133. data/spec/factories/course_factory.rb +0 -0
  134. data/spec/factories/enrollment_factory.rb +0 -0
  135. data/spec/factories/group_factory.rb +0 -0
  136. data/spec/factories/group_membership_factory.rb +0 -0
  137. data/spec/factories/role_factory.rb +0 -0
  138. data/spec/factories/section_factory.rb +0 -0
  139. data/spec/factories/submission_factory.rb +0 -0
  140. data/spec/factories/term_factory.rb +0 -0
  141. data/spec/factories/user_factory.rb +0 -0
  142. data/spec/spec_helper.rb +3 -1
  143. data/spec/support/fake_canvas.rb +4 -0
  144. data/spec/support/fixtures/canvas_responses/account.json +12 -0
  145. data/spec/support/fixtures/canvas_responses/admins.json +0 -0
  146. data/spec/support/fixtures/canvas_responses/module.json +0 -0
  147. data/spec/support/fixtures/canvas_responses/module_item.json +0 -0
  148. data/spec/support/fixtures/canvas_responses/roles.json +0 -0
  149. data/spec/support/fixtures/canvas_responses/terms.json +0 -0
  150. data/spec/support/fixtures/reports/assignment_groups.csv +0 -0
  151. data/spec/support/fixtures/reports/assignments.csv +0 -0
  152. data/spec/support/fixtures/reports/content_migrations.csv +0 -0
  153. data/spec/support/fixtures/reports/context_module_items.csv +0 -0
  154. data/spec/support/fixtures/reports/context_modules.csv +0 -0
  155. data/spec/support/fixtures/reports/course_nicknames.csv +0 -0
  156. data/spec/support/fixtures/reports/course_progresses.csv +0 -0
  157. data/spec/support/fixtures/reports/course_progresses_conflict.csv +0 -0
  158. data/spec/support/fixtures/reports/grading_period_groups.csv +0 -0
  159. data/spec/support/fixtures/reports/grading_periods.csv +0 -0
  160. data/spec/support/fixtures/reports/group_memberships.csv +0 -0
  161. data/spec/support/fixtures/reports/groups.csv +0 -0
  162. data/spec/support/fixtures/reports/learning_outcome_results.csv +0 -0
  163. data/spec/support/fixtures/reports/learning_outcomes.csv +0 -0
  164. data/spec/support/fixtures/reports/provisioning_csv +0 -0
  165. data/spec/support/fixtures/reports/rubric_assessments.csv +0 -0
  166. data/spec/support/fixtures/reports/rubric_associations.csv +0 -0
  167. data/spec/support/fixtures/reports/rubrics.csv +0 -0
  168. data/spec/support/fixtures/reports/sections.csv +0 -0
  169. data/spec/support/fixtures/reports/submissions.csv +0 -0
  170. data/spec/support/fixtures/reports/user_observers.csv +0 -0
  171. data/spec/support/fixtures/reports/users.csv +0 -0
  172. data/spec/support/fixtures/reports/xlist.csv +0 -0
  173. metadata +9 -143
  174. data/spec/internal/app/models/account.rb +0 -35
  175. data/spec/internal/app/models/admin.rb +0 -35
  176. data/spec/internal/app/models/assignment.rb +0 -39
  177. data/spec/internal/app/models/assignment_group.rb +0 -31
  178. data/spec/internal/app/models/assignment_override.rb +0 -34
  179. data/spec/internal/app/models/content_migration.rb +0 -18
  180. data/spec/internal/app/models/context_module.rb +0 -69
  181. data/spec/internal/app/models/context_module_item.rb +0 -33
  182. data/spec/internal/app/models/course.rb +0 -57
  183. data/spec/internal/app/models/course_nickname.rb +0 -20
  184. data/spec/internal/app/models/course_progress.rb +0 -29
  185. data/spec/internal/app/models/enrollment.rb +0 -48
  186. data/spec/internal/app/models/grading_period.rb +0 -17
  187. data/spec/internal/app/models/grading_period_group.rb +0 -16
  188. data/spec/internal/app/models/group.rb +0 -28
  189. data/spec/internal/app/models/group_membership.rb +0 -26
  190. data/spec/internal/app/models/learning_outcome.rb +0 -30
  191. data/spec/internal/app/models/learning_outcome_result.rb +0 -54
  192. data/spec/internal/app/models/pseudonym.rb +0 -19
  193. data/spec/internal/app/models/role.rb +0 -27
  194. data/spec/internal/app/models/rubric.rb +0 -36
  195. data/spec/internal/app/models/rubric_assessment.rb +0 -23
  196. data/spec/internal/app/models/rubric_association.rb +0 -20
  197. data/spec/internal/app/models/score.rb +0 -18
  198. data/spec/internal/app/models/section.rb +0 -36
  199. data/spec/internal/app/models/submission.rb +0 -32
  200. data/spec/internal/app/models/term.rb +0 -46
  201. data/spec/internal/app/models/user.rb +0 -43
  202. data/spec/internal/app/models/user_observer.rb +0 -22
  203. data/spec/internal/app/services/live_events/assignment_event.rb +0 -43
  204. data/spec/internal/app/services/live_events/course_event.rb +0 -28
  205. data/spec/internal/app/services/live_events/course_section_event.rb +0 -28
  206. data/spec/internal/app/services/live_events/enrollment_event.rb +0 -30
  207. data/spec/internal/app/services/live_events/grade_event.rb +0 -36
  208. data/spec/internal/app/services/live_events/module_event.rb +0 -26
  209. data/spec/internal/app/services/live_events/module_item_event.rb +0 -25
  210. data/spec/internal/app/services/live_events/submission_event.rb +0 -28
  211. data/spec/internal/app/services/live_events/syllabus_event.rb +0 -31
  212. data/spec/internal/app/services/live_events/user_event.rb +0 -27
  213. data/spec/internal/db/migrate/20251029222307_create_users.rb +0 -26
  214. data/spec/internal/db/migrate/20251029222308_create_pseudonyms.rb +0 -24
  215. data/spec/internal/db/migrate/20251029222309_create_courses.rb +0 -30
  216. data/spec/internal/db/migrate/20251029222310_create_groups.rb +0 -29
  217. data/spec/internal/db/migrate/20251029222311_create_group_memberships.rb +0 -24
  218. data/spec/internal/db/migrate/20251029222312_create_accounts.rb +0 -23
  219. data/spec/internal/db/migrate/20251029222313_create_terms.rb +0 -24
  220. data/spec/internal/db/migrate/20251029222314_create_enrollments.rb +0 -31
  221. data/spec/internal/db/migrate/20251029222315_create_sections.rb +0 -27
  222. data/spec/internal/db/migrate/20251029222316_create_assignments.rb +0 -37
  223. data/spec/internal/db/migrate/20251029222317_create_submissions.rb +0 -32
  224. data/spec/internal/db/migrate/20251029222318_create_roles.rb +0 -24
  225. data/spec/internal/db/migrate/20251029222319_create_admins.rb +0 -26
  226. data/spec/internal/db/migrate/20251029222320_create_assignment_groups.rb +0 -28
  227. data/spec/internal/db/migrate/20251029222321_create_context_modules.rb +0 -28
  228. data/spec/internal/db/migrate/20251029222322_create_context_module_items.rb +0 -26
  229. data/spec/internal/db/migrate/20251029222324_create_grading_periods.rb +0 -28
  230. data/spec/internal/db/migrate/20251029222325_create_grading_period_groups.rb +0 -24
  231. data/spec/internal/db/migrate/20251029222326_create_content_migrations.rb +0 -30
  232. data/spec/internal/db/migrate/20251029222327_create_learning_outcomes.rb +0 -36
  233. data/spec/internal/db/migrate/20251029222328_create_learning_outcome_results.rb +0 -52
  234. data/spec/internal/db/migrate/20251029222330_create_rubrics.rb +0 -44
  235. data/spec/internal/db/migrate/20251029222331_create_rubric_associations.rb +0 -42
  236. data/spec/internal/db/migrate/20251029222332_create_rubric_assessments.rb +0 -37
  237. data/spec/internal/db/migrate/20251029222334_create_assignment_overrides.rb +0 -25
  238. data/spec/internal/db/migrate/20251029222335_create_scores.rb +0 -42
  239. data/spec/internal/db/migrate/20251029223411_create_user_observers.rb +0 -23
  240. data/spec/internal/db/migrate/20251029224009_create_course_nicknames.rb +0 -23
  241. data/spec/internal/db/migrate/20251029224010_create_course_progresses.rb +0 -26
  242. data/spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv +0 -3
  243. data/spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv +0 -4
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.11
4
+ version: 0.27.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Instructure CustomDev
@@ -413,14 +413,14 @@ dependencies:
413
413
  requirements:
414
414
  - - "~>"
415
415
  - !ruby/object:Gem::Version
416
- version: 0.2.0
416
+ version: 0.2.1
417
417
  type: :runtime
418
418
  prerelease: false
419
419
  version_requirements: !ruby/object:Gem::Requirement
420
420
  requirements:
421
421
  - - "~>"
422
422
  - !ruby/object:Gem::Version
423
- version: 0.2.0
423
+ version: 0.2.1
424
424
  email:
425
425
  - pseng@instructure.com
426
426
  executables: []
@@ -569,6 +569,7 @@ files:
569
569
  - lib/canvas_sync/version.rb
570
570
  - lib/tasks/canvas_sync_tasks.rake
571
571
  - spec/canvas_sync/canvas_sync_spec.rb
572
+ - spec/canvas_sync/concerns/ability_helper_spec.rb
572
573
  - spec/canvas_sync/concerns/deleted_scoping_spec.rb
573
574
  - spec/canvas_sync/concerns/legacy_columns_spec.rb
574
575
  - spec/canvas_sync/engine_spec.rb
@@ -577,6 +578,7 @@ files:
577
578
  - spec/canvas_sync/jobs/job_spec.rb
578
579
  - spec/canvas_sync/jobs/report_starter_spec.rb
579
580
  - spec/canvas_sync/jobs/report_sync_task_spec.rb
581
+ - spec/canvas_sync/jobs/sync_accounts_job_spec.rb
580
582
  - spec/canvas_sync/jobs/sync_admins_job_spec.rb
581
583
  - spec/canvas_sync/jobs/sync_provisioning_report_job_spec.rb
582
584
  - spec/canvas_sync/jobs/sync_roles_job_spec.rb
@@ -635,82 +637,15 @@ files:
635
637
  - spec/factories/submission_factory.rb
636
638
  - spec/factories/term_factory.rb
637
639
  - spec/factories/user_factory.rb
638
- - spec/internal/app/models/account.rb
639
- - spec/internal/app/models/admin.rb
640
640
  - spec/internal/app/models/application_record.rb
641
- - spec/internal/app/models/assignment.rb
642
- - spec/internal/app/models/assignment_group.rb
643
- - spec/internal/app/models/assignment_override.rb
644
- - spec/internal/app/models/content_migration.rb
645
- - spec/internal/app/models/context_module.rb
646
- - spec/internal/app/models/context_module_item.rb
647
- - spec/internal/app/models/course.rb
648
- - spec/internal/app/models/course_nickname.rb
649
- - spec/internal/app/models/course_progress.rb
650
- - spec/internal/app/models/enrollment.rb
651
- - spec/internal/app/models/grading_period.rb
652
- - spec/internal/app/models/grading_period_group.rb
653
- - spec/internal/app/models/group.rb
654
- - spec/internal/app/models/group_membership.rb
655
- - spec/internal/app/models/learning_outcome.rb
656
- - spec/internal/app/models/learning_outcome_result.rb
657
- - spec/internal/app/models/pseudonym.rb
658
- - spec/internal/app/models/role.rb
659
- - spec/internal/app/models/rubric.rb
660
- - spec/internal/app/models/rubric_assessment.rb
661
- - spec/internal/app/models/rubric_association.rb
662
- - spec/internal/app/models/score.rb
663
- - spec/internal/app/models/section.rb
664
- - spec/internal/app/models/submission.rb
665
- - spec/internal/app/models/term.rb
666
- - spec/internal/app/models/user.rb
667
- - spec/internal/app/models/user_observer.rb
668
- - spec/internal/app/services/live_events/assignment_event.rb
669
- - spec/internal/app/services/live_events/course_event.rb
670
- - spec/internal/app/services/live_events/course_section_event.rb
671
- - spec/internal/app/services/live_events/enrollment_event.rb
672
- - spec/internal/app/services/live_events/grade_event.rb
673
- - spec/internal/app/services/live_events/module_event.rb
674
- - spec/internal/app/services/live_events/module_item_event.rb
675
- - spec/internal/app/services/live_events/submission_event.rb
676
- - spec/internal/app/services/live_events/syllabus_event.rb
677
- - spec/internal/app/services/live_events/user_event.rb
678
641
  - spec/internal/bin/rails
679
642
  - spec/internal/config/database.yml
680
643
  - spec/internal/config/routes.rb
681
644
  - spec/internal/config/storage.yml
682
- - spec/internal/db/migrate/20251029222307_create_users.rb
683
- - spec/internal/db/migrate/20251029222308_create_pseudonyms.rb
684
- - spec/internal/db/migrate/20251029222309_create_courses.rb
685
- - spec/internal/db/migrate/20251029222310_create_groups.rb
686
- - spec/internal/db/migrate/20251029222311_create_group_memberships.rb
687
- - spec/internal/db/migrate/20251029222312_create_accounts.rb
688
- - spec/internal/db/migrate/20251029222313_create_terms.rb
689
- - spec/internal/db/migrate/20251029222314_create_enrollments.rb
690
- - spec/internal/db/migrate/20251029222315_create_sections.rb
691
- - spec/internal/db/migrate/20251029222316_create_assignments.rb
692
- - spec/internal/db/migrate/20251029222317_create_submissions.rb
693
- - spec/internal/db/migrate/20251029222318_create_roles.rb
694
- - spec/internal/db/migrate/20251029222319_create_admins.rb
695
- - spec/internal/db/migrate/20251029222320_create_assignment_groups.rb
696
- - spec/internal/db/migrate/20251029222321_create_context_modules.rb
697
- - spec/internal/db/migrate/20251029222322_create_context_module_items.rb
698
- - spec/internal/db/migrate/20251029222324_create_grading_periods.rb
699
- - spec/internal/db/migrate/20251029222325_create_grading_period_groups.rb
700
- - spec/internal/db/migrate/20251029222326_create_content_migrations.rb
701
- - spec/internal/db/migrate/20251029222327_create_learning_outcomes.rb
702
- - spec/internal/db/migrate/20251029222328_create_learning_outcome_results.rb
703
- - spec/internal/db/migrate/20251029222330_create_rubrics.rb
704
- - spec/internal/db/migrate/20251029222331_create_rubric_associations.rb
705
- - spec/internal/db/migrate/20251029222332_create_rubric_assessments.rb
706
- - spec/internal/db/migrate/20251029222334_create_assignment_overrides.rb
707
- - spec/internal/db/migrate/20251029222335_create_scores.rb
708
- - spec/internal/db/migrate/20251029223411_create_user_observers.rb
709
- - spec/internal/db/migrate/20251029224009_create_course_nicknames.rb
710
- - spec/internal/db/migrate/20251029224010_create_course_progresses.rb
711
645
  - spec/internal/db/schema.rb
712
646
  - spec/spec_helper.rb
713
647
  - spec/support/fake_canvas.rb
648
+ - spec/support/fixtures/canvas_responses/account.json
714
649
  - spec/support/fixtures/canvas_responses/admins.json
715
650
  - spec/support/fixtures/canvas_responses/module.json
716
651
  - spec/support/fixtures/canvas_responses/module_item.json
@@ -735,8 +670,6 @@ files:
735
670
  - spec/support/fixtures/reports/learning_outcome_results.csv
736
671
  - spec/support/fixtures/reports/learning_outcomes.csv
737
672
  - spec/support/fixtures/reports/provisioning_csv
738
- - spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv
739
- - spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv
740
673
  - spec/support/fixtures/reports/rubric_assessments.csv
741
674
  - spec/support/fixtures/reports/rubric_associations.csv
742
675
  - spec/support/fixtures/reports/rubrics.csv
@@ -768,6 +701,7 @@ specification_version: 4
768
701
  summary: Gem for generating Canvas models and migrations and syncing data from Canvas
769
702
  test_files:
770
703
  - spec/canvas_sync/canvas_sync_spec.rb
704
+ - spec/canvas_sync/concerns/ability_helper_spec.rb
771
705
  - spec/canvas_sync/concerns/deleted_scoping_spec.rb
772
706
  - spec/canvas_sync/concerns/legacy_columns_spec.rb
773
707
  - spec/canvas_sync/engine_spec.rb
@@ -776,6 +710,7 @@ test_files:
776
710
  - spec/canvas_sync/jobs/job_spec.rb
777
711
  - spec/canvas_sync/jobs/report_starter_spec.rb
778
712
  - spec/canvas_sync/jobs/report_sync_task_spec.rb
713
+ - spec/canvas_sync/jobs/sync_accounts_job_spec.rb
779
714
  - spec/canvas_sync/jobs/sync_admins_job_spec.rb
780
715
  - spec/canvas_sync/jobs/sync_provisioning_report_job_spec.rb
781
716
  - spec/canvas_sync/jobs/sync_roles_job_spec.rb
@@ -834,82 +769,15 @@ test_files:
834
769
  - spec/factories/submission_factory.rb
835
770
  - spec/factories/term_factory.rb
836
771
  - spec/factories/user_factory.rb
837
- - spec/internal/app/models/account.rb
838
- - spec/internal/app/models/admin.rb
839
772
  - spec/internal/app/models/application_record.rb
840
- - spec/internal/app/models/assignment.rb
841
- - spec/internal/app/models/assignment_group.rb
842
- - spec/internal/app/models/assignment_override.rb
843
- - spec/internal/app/models/content_migration.rb
844
- - spec/internal/app/models/context_module.rb
845
- - spec/internal/app/models/context_module_item.rb
846
- - spec/internal/app/models/course.rb
847
- - spec/internal/app/models/course_nickname.rb
848
- - spec/internal/app/models/course_progress.rb
849
- - spec/internal/app/models/enrollment.rb
850
- - spec/internal/app/models/grading_period.rb
851
- - spec/internal/app/models/grading_period_group.rb
852
- - spec/internal/app/models/group.rb
853
- - spec/internal/app/models/group_membership.rb
854
- - spec/internal/app/models/learning_outcome.rb
855
- - spec/internal/app/models/learning_outcome_result.rb
856
- - spec/internal/app/models/pseudonym.rb
857
- - spec/internal/app/models/role.rb
858
- - spec/internal/app/models/rubric.rb
859
- - spec/internal/app/models/rubric_assessment.rb
860
- - spec/internal/app/models/rubric_association.rb
861
- - spec/internal/app/models/score.rb
862
- - spec/internal/app/models/section.rb
863
- - spec/internal/app/models/submission.rb
864
- - spec/internal/app/models/term.rb
865
- - spec/internal/app/models/user.rb
866
- - spec/internal/app/models/user_observer.rb
867
- - spec/internal/app/services/live_events/assignment_event.rb
868
- - spec/internal/app/services/live_events/course_event.rb
869
- - spec/internal/app/services/live_events/course_section_event.rb
870
- - spec/internal/app/services/live_events/enrollment_event.rb
871
- - spec/internal/app/services/live_events/grade_event.rb
872
- - spec/internal/app/services/live_events/module_event.rb
873
- - spec/internal/app/services/live_events/module_item_event.rb
874
- - spec/internal/app/services/live_events/submission_event.rb
875
- - spec/internal/app/services/live_events/syllabus_event.rb
876
- - spec/internal/app/services/live_events/user_event.rb
877
773
  - spec/internal/bin/rails
878
774
  - spec/internal/config/database.yml
879
775
  - spec/internal/config/routes.rb
880
776
  - spec/internal/config/storage.yml
881
- - spec/internal/db/migrate/20251029222307_create_users.rb
882
- - spec/internal/db/migrate/20251029222308_create_pseudonyms.rb
883
- - spec/internal/db/migrate/20251029222309_create_courses.rb
884
- - spec/internal/db/migrate/20251029222310_create_groups.rb
885
- - spec/internal/db/migrate/20251029222311_create_group_memberships.rb
886
- - spec/internal/db/migrate/20251029222312_create_accounts.rb
887
- - spec/internal/db/migrate/20251029222313_create_terms.rb
888
- - spec/internal/db/migrate/20251029222314_create_enrollments.rb
889
- - spec/internal/db/migrate/20251029222315_create_sections.rb
890
- - spec/internal/db/migrate/20251029222316_create_assignments.rb
891
- - spec/internal/db/migrate/20251029222317_create_submissions.rb
892
- - spec/internal/db/migrate/20251029222318_create_roles.rb
893
- - spec/internal/db/migrate/20251029222319_create_admins.rb
894
- - spec/internal/db/migrate/20251029222320_create_assignment_groups.rb
895
- - spec/internal/db/migrate/20251029222321_create_context_modules.rb
896
- - spec/internal/db/migrate/20251029222322_create_context_module_items.rb
897
- - spec/internal/db/migrate/20251029222324_create_grading_periods.rb
898
- - spec/internal/db/migrate/20251029222325_create_grading_period_groups.rb
899
- - spec/internal/db/migrate/20251029222326_create_content_migrations.rb
900
- - spec/internal/db/migrate/20251029222327_create_learning_outcomes.rb
901
- - spec/internal/db/migrate/20251029222328_create_learning_outcome_results.rb
902
- - spec/internal/db/migrate/20251029222330_create_rubrics.rb
903
- - spec/internal/db/migrate/20251029222331_create_rubric_associations.rb
904
- - spec/internal/db/migrate/20251029222332_create_rubric_assessments.rb
905
- - spec/internal/db/migrate/20251029222334_create_assignment_overrides.rb
906
- - spec/internal/db/migrate/20251029222335_create_scores.rb
907
- - spec/internal/db/migrate/20251029223411_create_user_observers.rb
908
- - spec/internal/db/migrate/20251029224009_create_course_nicknames.rb
909
- - spec/internal/db/migrate/20251029224010_create_course_progresses.rb
910
777
  - spec/internal/db/schema.rb
911
778
  - spec/spec_helper.rb
912
779
  - spec/support/fake_canvas.rb
780
+ - spec/support/fixtures/canvas_responses/account.json
913
781
  - spec/support/fixtures/canvas_responses/admins.json
914
782
  - spec/support/fixtures/canvas_responses/module.json
915
783
  - spec/support/fixtures/canvas_responses/module_item.json
@@ -934,8 +802,6 @@ test_files:
934
802
  - spec/support/fixtures/reports/learning_outcome_results.csv
935
803
  - spec/support/fixtures/reports/learning_outcomes.csv
936
804
  - spec/support/fixtures/reports/provisioning_csv
937
- - spec/support/fixtures/reports/provisioning_csv_unzipped/courses.csv
938
- - spec/support/fixtures/reports/provisioning_csv_unzipped/users.csv
939
805
  - spec/support/fixtures/reports/rubric_assessments.csv
940
806
  - spec/support/fixtures/reports/rubric_associations.csv
941
807
  - spec/support/fixtures/reports/rubrics.csv
@@ -1,35 +0,0 @@
1
- # #
2
- # AUTO GENERATED MODEL
3
- # This model was auto generated by the CanvasSync Gem.
4
- # You can customize it as needed, but make sure you test
5
- # any changes you make to the auto generated methods.
6
- #
7
-
8
-
9
- class Account < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::Account::Ancestry # Add support for the ancestry Gem
13
- # include CanvasSync::Concerns::LiveEventSync
14
- # include CanvasSync::Concerns::DeletedScoping
15
-
16
- canvas_sync_features :defaults
17
-
18
- validates :canvas_id, uniqueness: true, presence: true
19
-
20
- has_many :admins, primary_key: :canvas_id, foreign_key: :canvas_account_id
21
- belongs_to :canvas_parent, class_name: 'Account', optional: true,
22
- primary_key: :canvas_id, foreign_key: :canvas_parent_account_id
23
- has_many :sub_accounts, class_name: 'Account',
24
- primary_key: :canvas_id, foreign_key: :canvas_parent_account_id
25
- has_many :groups, primary_key: :canvas_id, foreign_key: :canvas_account_id
26
-
27
- scope :active, -> { where.not(workflow_state: 'deleted') }
28
- # scope :should_canvas_sync, -> { active } # Optional - uses .active if not given
29
-
30
- api_syncable({
31
- name: :name,
32
- workflow_state: :workflow_state,
33
- canvas_parent_account_id: :parent_account_id,
34
- }, -> (api) { api.account(canvas_id) })
35
- end
@@ -1,35 +0,0 @@
1
- # #
2
- # AUTO GENERATED MODEL
3
- # This model was auto generated by the CanvasSync Gem.
4
- # You can customize it as needed, but make sure you test
5
- # any changes you make to the auto generated methods.
6
- #
7
-
8
-
9
- class Admin < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::DeletedScoping
13
-
14
- canvas_sync_features :defaults
15
-
16
- validates :canvas_id, uniqueness: true, presence: true
17
- belongs_to :account, primary_key: :canvas_id, foreign_key: :canvas_account_id, optional: true
18
- belongs_to :user, primary_key: :canvas_id, foreign_key: :canvas_user_id, optional: true
19
- belongs_to :role, primary_key: :canvas_id, foreign_key: :canvas_role_id, optional: true
20
-
21
- api_syncable({
22
- canvas_id: :id,
23
- role_name: :role,
24
- canvas_role_id: :role_id,
25
- canvas_user_id: ->(r) { r['user']['id'] },
26
- # NOTICE: The :account_id field is added by CanvasSync - it is not included in the Canvas API response
27
- canvas_account_id: :account_id,
28
- workflow_state: :workflow_state,
29
- }, -> (api) {
30
- admins = api.account_admins(canvas_account_id).all_pages!
31
- admin_data = admins.find{|admin| admin['id'] == canvas_id }
32
- raise Footrest::HttpError::NotFound unless admin_data.present?
33
- admin_data
34
- })
35
- end
@@ -1,39 +0,0 @@
1
- # #
2
- # AUTO GENERATED MODEL
3
- # This model was auto generated by the CanvasSync Gem.
4
- # You can customize it as needed, but make sure you test
5
- # any changes you make to the auto generated methods.
6
- #
7
-
8
-
9
- class Assignment < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::LiveEventSync
13
- # include CanvasSync::Concerns::DeletedScoping
14
-
15
- canvas_sync_features :defaults
16
-
17
- validates :canvas_id, uniqueness: true, presence: true
18
- belongs_to :context, polymorphic: true, optional: true, primary_key: :canvas_id, foreign_key: :canvas_context_id, foreign_type: :canvas_context_type
19
- belongs_to :assignment_group, optional: true, primary_key: :canvas_id, foreign_key: :canvas_assignment_group_id
20
- has_many :submissions, primary_key: :canvas_id, foreign_key: :canvas_assignment_id
21
-
22
- has_many :context_module_items, as: :content, primary_key: :canvas_id, foreign_key: :canvas_content_id, foreign_type: :canvas_content_type, dependent: :destroy
23
- has_many :context_modules, through: :context_module_items
24
-
25
- api_syncable({
26
- title: :name,
27
- description: :description,
28
- due_at: :due_at,
29
- unlock_at: :unlock_at,
30
- lock_at: :lock_at,
31
- points_possible: :points_possible,
32
- grading_type: :grading_type,
33
- submission_types: lambda { |p| p["submission_types"].join(",") },
34
- canvas_context_id: :course_id,
35
- canvas_context_type: lambda { |_p| "Course" },
36
- canvas_assignment_group_id: :assignment_group_id,
37
- canvas_grading_standard_id: :grading_standard_id,
38
- }, -> (api) { api.assignment(canvas_context_id, canvas_id) })
39
- end
@@ -1,31 +0,0 @@
1
- # #
2
- # AUTO GENERATED MODEL
3
- # This model was auto generated by the CanvasSync Gem.
4
- # You can customize it as needed, but make sure you test
5
- # any changes you make to the auto generated methods.
6
- #
7
-
8
-
9
- class AssignmentGroup < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::LiveEventSync
13
- # include CanvasSync::Concerns::DeletedScoping
14
-
15
- canvas_sync_features :defaults
16
-
17
- validates :canvas_id, uniqueness: true, presence: true
18
- belongs_to :course, primary_key: :canvas_id, foreign_key: :canvas_course_id, optional: true
19
- has_many :assignments, primary_key: :canvas_id, foreign_key: :canvas_assignment_group_id
20
-
21
- serialize :rules
22
-
23
- api_syncable({
24
- canvas_id: :id,
25
- name: :name,
26
- position: :position,
27
- rules: :rules,
28
- group_weight: :group_weight,
29
- workflow_state: ->(p) { 'available' },
30
- }, -> (api) { api.assignment_group(canvas_course_id, canvas_id) })
31
- end
@@ -1,34 +0,0 @@
1
- # #
2
- # AUTO GENERATED MODEL
3
- # This model was auto generated by the CanvasSync Gem.
4
- # You can customize it as needed, but make sure you test
5
- # any changes you make to the auto generated methods.
6
- #
7
-
8
-
9
- class AssignmentOverride < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
-
13
- canvas_sync_features :defaults
14
-
15
- validates :canvas_id, uniqueness: true, presence: true
16
- belongs_to :assignment, primary_key: :canvas_id, foreign_key: :canvas_assignment_id, optional: true
17
- belongs_to :course, primary_key: :canvas_id, foreign_key: :canvas_course_id, optional: true
18
-
19
- api_syncable({
20
- canvas_id: :id,
21
- canvas_assignment_id: :assignment_id,
22
- title: :title,
23
- workflow_state: :workflow_state,
24
- due_at: :due_at,
25
- all_day: :all_day,
26
- all_day_date: :all_day_date,
27
- unlock_at: :unlock_at,
28
- lock_at: :lock_at,
29
- student_ids: ->(r) { JSON.parse(r[:student_ids]) if r[:student_ids].present? },
30
- canvas_group_id: :group_id,
31
- canvas_section_id: :course_section_id,
32
- canvas_course_id: -> (r) { r.dig(:assignment, :course_id) }
33
- }, -> (api) { api.assignment_override(canvas_assignment_id, canvas_id) })
34
- end
@@ -1,18 +0,0 @@
1
- # #
2
- # AUTO GENERATED MODEL
3
- # This model was auto generated by the CanvasSync Gem.
4
- # You can customize it as needed, but make sure you test
5
- # any changes you make to the auto generated methods.
6
- #
7
-
8
-
9
- class ContentMigration < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
-
13
- canvas_sync_features :defaults
14
-
15
- validates :canvas_id, uniqueness: true, presence: true
16
- belongs_to :context, polymorphic: true, optional: true, primary_key: :canvas_id, foreign_key: :canvas_context_id, foreign_type: :canvas_context_type
17
-
18
- end
@@ -1,69 +0,0 @@
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
- # A ContextModule is the same as a Canvas Module. They're called ContextModules for 2 reasons:
10
- # 1 - Module is a reserved word in Rails and you can't call a model a Module
11
- # 2 - Canvas calls them ContextModules
12
- class ContextModule < ApplicationRecord
13
- include CanvasSync::Record
14
- include CanvasSync::Concerns::ApiSyncable
15
- # include CanvasSync::Concerns::DeletedScoping
16
-
17
- # include CanvasSync::Concerns::LiveEventSync
18
- # live_events_config event_prefix: :module
19
- # def process_live_event(event_type, payload, metadata)
20
- # self.canvas_context_id = payload['context_id']
21
- # self.canvas_context_type = payload['context_type']
22
- # super
23
- # end
24
-
25
- canvas_sync_features :defaults
26
-
27
- belongs_to :context, polymorphic: true, optional: true, primary_key: :canvas_id, foreign_key: :canvas_context_id, foreign_type: :canvas_context_type
28
- has_many :context_module_items, primary_key: :canvas_id, foreign_key: :canvas_context_module_id
29
- has_many :assignments, through: :context_module_items
30
-
31
- serialize :completion_requirements
32
- serialize :prerequisites
33
-
34
- api_syncable({
35
- canvas_id: :id,
36
- canvas_context_id: :context_id,
37
- canvas_context_type: :context_type,
38
- position: :position,
39
- name: :name,
40
- workflow_state: :workflow_state,
41
- unlock_at: :unlock_at,
42
- completion_requirements: :completion_requirements,
43
- prerequisites: :prerequisites,
44
- requirement_count: :requirement_count
45
- }, lambda { |api|
46
- course_modules = api.course_modules(canvas_context_id, { include: ['items'] }) # avoids having 2 API calls for modules as we reuse this data
47
- context_module = course_modules&.detect { |course_module| course_module['id'] == canvas_id }
48
-
49
- if context_module.nil? # no context_module here means it is deleted in Canvas
50
- self.workflow_state = :deleted
51
- return self
52
- end
53
-
54
- # The ContextModule model in Canvas has the 'completion_requirements' and 'prerequisites' fields that are not returned directly from the API
55
- # We need to compute them here based on data that we receive from course_modules in the API
56
- context_module['prerequisites'] = course_modules.map do |course_module|
57
- next unless context_module['prerequisite_module_ids']&.include?(course_module['id'])
58
-
59
- {
60
- id: course_module['id'],
61
- name: course_module['name'],
62
- type: 'context_module'
63
- }.with_indifferent_access
64
- end.compact
65
-
66
- context_module['completion_requirements'] = context_module['items']&.map { |item| item['completion_requirement'] }&.compact
67
- context_module
68
- })
69
- end
@@ -1,33 +0,0 @@
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 ContextModuleItem < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::LiveEventSync
13
- # include CanvasSync::Concerns::DeletedScoping
14
-
15
- canvas_sync_features :defaults
16
-
17
- belongs_to :context_module, primary_key: :canvas_id, foreign_key: :canvas_context_module_id, optional: true
18
- belongs_to :content, polymorphic: true, optional: true, primary_key: :canvas_id, foreign_key: :canvas_content_id, foreign_type: :canvas_content_type
19
- belongs_to :assignment, foreign_key: :canvas_assignment_id, primary_key: :canvas_id
20
-
21
- api_syncable({
22
- canvas_id: :id,
23
- canvas_context_module_id: :module_id,
24
- position: :position,
25
- canvas_content_type: :type,
26
- canvas_content_id: :content_id,
27
- canvas_assignment_id: :assignment_id
28
- }, lambda { |api|
29
- module_item = api.module_item(context_module.context.canvas_id, context_module.canvas_id, canvas_id)
30
- module_item['assignment_id'] = api.assignment(context_module.context.canvas_id, module_item['content_id'])['id'] if module_item['type'] == 'Assignment'
31
- module_item
32
- })
33
- end
@@ -1,57 +0,0 @@
1
- # #
2
- # AUTO GENERATED MODEL
3
- # This model was auto generated by the CanvasSync Gem.
4
- # You can customize it as needed, but make sure you test
5
- # any changes you make to the auto generated methods.
6
- #
7
-
8
-
9
- class Course < ApplicationRecord
10
- include CanvasSync::Record
11
- include CanvasSync::Concerns::ApiSyncable
12
- # include CanvasSync::Concerns::DeletedScoping
13
-
14
- canvas_sync_features :defaults
15
-
16
- # include CanvasSync::Concerns::LiveEventSync
17
- # after_process_live_event do
18
- # if account.nil?
19
- # acc = Account.new(canvas_id: canvas_account_id)
20
- # acc.sync_from_api
21
- # end
22
- # end
23
-
24
- validates :canvas_id, uniqueness: true, presence: true
25
- belongs_to :term, foreign_key: :canvas_term_id, primary_key: :canvas_id, optional: true
26
- has_many :enrollments, primary_key: :canvas_id, foreign_key: :canvas_course_id
27
- has_many :sections, primary_key: :canvas_id, foreign_key: :canvas_course_id
28
- has_many :assignments, as: :context, primary_key: :canvas_id, foreign_key: :canvas_context_id, foreign_type: :canvas_context_type
29
- has_many :submissions, primary_key: :canvas_id, foreign_key: :canvas_course_id
30
- has_many :assignment_groups, primary_key: :canvas_id, foreign_key: :canvas_course_id
31
- has_many :groups, primary_key: :canvas_id, foreign_key: :canvas_course_id
32
- has_many :rubrics, as: :context, primary_key: :canvas_id, foreign_key: :canvas_context_id, foreign_type: :canvas_context_type
33
-
34
- api_syncable({
35
- sis_id: :sis_course_id,
36
- course_code: :course_code,
37
- name: :name,
38
- workflow_state: :workflow_state,
39
- canvas_term_id: :enrollment_term_id,
40
- canvas_account_id: :account_id,
41
- start_at: :start_at,
42
- end_at: :end_at,
43
- # If opting in the public_description, make sure to also add the 'include' array in the api call
44
- # public_description: :public_description,
45
- }, -> (api) { api.course(canvas_id) })
46
- # }, -> (api) { api.course(canvas_id, { include: ['public_description'] }) })
47
-
48
- scope :active, -> { where(workflow_state: 'active') }
49
-
50
- scope :current, -> {
51
- base_query = all.joins(:term)
52
- base_query
53
- .where("#{current_table_name}.start_at <= ? OR #{current_table_name}.start_at IS NULL", DateTime.now)
54
- .where("#{current_table_name}.end_at >= ? OR #{current_table_name}.end_at IS NULL", DateTime.now)
55
- .or(base_query.merge(Term.current))
56
- }
57
- end
@@ -1,20 +0,0 @@
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 CourseNickname < ApplicationRecord
12
- include CanvasSync::Record
13
- include CanvasSync::Concerns::ApiSyncable
14
-
15
- canvas_sync_features :defaults
16
- self.primary_key = [:canvas_user_id, :canvas_course_id] unless column_names.include?("id")
17
-
18
- belongs_to :user, primary_key: :canvas_id, foreign_key: :canvas_user_id, optional: true
19
- belongs_to :course, primary_key: :canvas_id, foreign_key: :canvas_course_id, optional: true
20
- end
@@ -1,29 +0,0 @@
1
- # #
2
- # AUTO GENERATED MODEL
3
- # This model was auto generated by the CanvasSync Gem.
4
- # You can customize it as needed, but make sure you test
5
- # any changes you make to the auto generated methods.
6
- #
7
-
8
-
9
- # CourseProgress is not a Canvas model. It is a table built from the Custom Report
10
- class CourseProgress < ApplicationRecord
11
- include CanvasSync::Record
12
- include CanvasSync::Concerns::ApiSyncable
13
-
14
- canvas_sync_features :defaults
15
- self.primary_key = [:canvas_user_id, :canvas_course_id] unless column_names.include?("id")
16
-
17
- belongs_to :user, primary_key: :canvas_id, foreign_key: :canvas_user_id, optional: true
18
- belongs_to :course, primary_key: :canvas_id, foreign_key: :canvas_course_id, optional: true
19
-
20
- validates_presence_of :canvas_user_id, :canvas_course_id
21
- validates_uniqueness_of :canvas_user_id, scope: :canvas_course_id
22
-
23
- api_syncable({
24
- requirement_count: :requirement_count,
25
- requirement_completed_count: :requirement_completed_count,
26
- # provisioning report has completion_date instead of completed_at in the API
27
- completion_date: :completed_at
28
- }, -> (api) { api.course_progress(canvas_course_id, canvas_user_id) })
29
- end