coalescing_panda 4.0.2 → 4.0.3
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c416f5ba3e29b409e62db9851120231f37b84087
|
4
|
+
data.tar.gz: d542133873f5f8b0e7c9eaa78cdbeb224ae17515
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efad447c43b7c9648c010c940dd591fabd76fc128046647b813bec25a701630e84d45ef337a92d31dd8b71876d8bada67b4d80761327e160aec30515bf529f5b
|
7
|
+
data.tar.gz: b8610970bdfa070cc993280f2ee98217c438ffc593a0745cf9ae7afc544a09200e765ec3f7d7dce865caf648c599cd8a28b6b4b6cdf8a1895deb87a27a791e9e
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class CoalescingPanda::Workers::CourseMiner
|
2
2
|
SUPPORTED_MODELS = [:sections, :users, :enrollments, :assignments, :submissions, :groups, :group_memberships] #ORDER MATTERS!!
|
3
3
|
|
4
|
-
attr_accessor :options, :account, :course, :batch, :course_section_ids, :enrollment_ids, :assignment_ids, :group_ids
|
4
|
+
attr_accessor :options, :account, :course, :batch, :course_section_ids, :enrollment_ids, :assignment_ids, :group_ids, :user_ids
|
5
5
|
|
6
6
|
def initialize(course, options = [])
|
7
7
|
@course = course
|
@@ -12,6 +12,7 @@ class CoalescingPanda::Workers::CourseMiner
|
|
12
12
|
@enrollment_ids = []
|
13
13
|
@assignment_ids = []
|
14
14
|
@group_ids = []
|
15
|
+
@user_ids = []
|
15
16
|
end
|
16
17
|
|
17
18
|
def api_client
|
@@ -89,17 +90,26 @@ class CoalescingPanda::Workers::CourseMiner
|
|
89
90
|
end
|
90
91
|
|
91
92
|
def sync_users(collection)
|
92
|
-
|
93
|
-
|
93
|
+
begin
|
94
|
+
collection.each do |values|
|
94
95
|
values['canvas_user_id'] = values["id"].to_s
|
95
96
|
user = account.users.where(canvas_user_id: values['canvas_user_id']).first_or_initialize
|
96
97
|
user.coalescing_panda_lti_account_id = account.id
|
97
98
|
user.assign_attributes(standard_attributes(user, values))
|
98
99
|
user.sis_id = values['sis_user_id'].to_s
|
100
|
+
user_ids << user.id
|
99
101
|
user.save(validate: false)
|
100
|
-
rescue => e
|
101
|
-
Rails.logger.error "Error syncing users: #{e}"
|
102
102
|
end
|
103
|
+
removed_users = course.users.where.not(id: user_ids)
|
104
|
+
removed_users.each do |user|
|
105
|
+
user.enrollments.each do |enrollment|
|
106
|
+
course.submissions.where(coalescing_panda_user_id: enrollment.user.id).destroy_all
|
107
|
+
enrollment.destroy
|
108
|
+
end
|
109
|
+
end
|
110
|
+
removed_users.destroy_all
|
111
|
+
rescue => e
|
112
|
+
Rails.logger.error "Error syncing users: #{e}"
|
103
113
|
end
|
104
114
|
end
|
105
115
|
|
@@ -116,7 +126,11 @@ class CoalescingPanda::Workers::CourseMiner
|
|
116
126
|
enrollment.save(validate: false)
|
117
127
|
enrollment_ids << enrollment.id
|
118
128
|
end
|
119
|
-
course.enrollments.where.not(id: enrollment_ids)
|
129
|
+
removed_enrollments = course.enrollments.where.not(id: enrollment_ids)
|
130
|
+
removed_enrollments.each do |enrollment|
|
131
|
+
course.submissions.where(coalescing_panda_user_id: enrollment.user.id).destroy_all
|
132
|
+
end
|
133
|
+
removed_enrollments.destroy_all
|
120
134
|
rescue => e
|
121
135
|
Rails.logger.error "Error syncing enrollments: #{e}"
|
122
136
|
end
|