Commit 2838f97a by Asad Azam Committed by AsadAzam

updated organization user role save method

parent d04db412
......@@ -53,11 +53,15 @@ class OrganizationUserRoleAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
obj.save()
publisher_courses = obj.organization.publisher_courses
courses_without_role = publisher_courses.exclude(course_user_roles__role=obj.role)
CourseUserRole.objects.bulk_create(
[CourseUserRole(course=course, user=obj.user, role=obj.role) for course in courses_without_role]
)
CourseUserRole.objects.filter(course__organizations__in=[obj.organization], role=obj.role).update(user=obj.user)
# Assign user a group according to its role.
group = Group.objects.get(name=self.role_groups_dict.get(obj.role))
if group not in obj.user.groups.all():
......
......@@ -187,14 +187,28 @@ class OrganizationUserRoleAdminTests(TestCase):
course3.organizations.add(self.organization)
factories.CourseUserRoleFactory(course=course3, role=PublisherUserRole.MarketingReviewer, user=user)
# for course 4 add course roles
project_coordinator = UserFactory()
course4 = CourseFactory()
course4.organizations.add(self.organization)
factories.CourseUserRoleFactory(course=course4, role=PublisherUserRole.ProjectCoordinator,
user=project_coordinator)
test_user = UserFactory()
post_data = {
'organization': self.organization.id, 'user': test_user.id, 'role': PublisherUserRole.MarketingReviewer
}
self.client.post(self.admin_page_url, data=post_data)
# for course-3 course-user-role remains there.
self.assertTrue(course3.course_user_roles.filter(role=PublisherUserRole.MarketingReviewer, user=user).exists())
# for course-4 course-user-role does not change
self.assertTrue(
course4.course_user_roles.filter(role=PublisherUserRole.ProjectCoordinator,
user=project_coordinator).exists()
)
# for course-3 course-user-role also changes to test_user
self.assertTrue(course3.course_user_roles.filter(role=PublisherUserRole.MarketingReviewer,
user=test_user).exists())
self.assertTrue(
self.course1.course_user_roles.filter(role=PublisherUserRole.MarketingReviewer, user=test_user).exists()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment