def child_user_views(self): """ Gets the user views for the children of this module. Used when rendering a vertical. """ child_views = [] children = self.get_children() # Store data to prevent descriptor overwrite by children. self.module.store_data() for child in children: child_access_level = ClassGroupPermissions.get_permission_level( child.classgroup, child, "change_resource") user_access_level = ClassGroupPermissions.access_level( child.classgroup, self.user) if ClassGroupPermissions.PERMISSION_LEVELS[ user_access_level] >= ClassGroupPermissions.PERMISSION_LEVELS[ child_access_level]: user_state, created = UserResourceState.objects.get_or_create( user=self.user, resource=child) renderer = ResourceRenderer(child, user_resource_state=user_state, static_data=self.static_data, user=self.user) child_views.append(renderer.user_view()) # Read data back in. self.module.read_data() return child_views
def test_get_classgroup_list_fail(self): """ Test to see if an empty class list is shown to someone with no permissions. """ cg_list_url = reverse('class_list') response = self.c1.get(cg_list_url) courses = json.loads(response.content) self.assertEqual(len(courses), 0) # User 1 should not be able to access the course. self.assertEqual(ClassGroupPermissions.access_level(self.cg, self.user1), ClassGroupPermissions.none)
def test_enroll_in_course(self): """ Try enrolling in a course with an access code. """ access_key = self.cg.class_settings.access_key self.c1.post(reverse('verify_code'), {'class_name': self.cg.name, 'code': access_key}) # Check that the user has the right permissions. self.assertIn(self.user1, self.cg.users.all()) self.assertTrue(ClassGroupPermissions.is_student(self.cg, self.user1)) self.assertEqual(ClassGroupPermissions.access_level(self.cg, self.user1), ClassGroupPermissions.student)
def add_user_data(self, serializer): for user in serializer.data: user_obj = User.objects.get(id=user['pk']) user['message_count_today'] = Classgroup.objects.get( name=self.query_dict['classgroup']).messages.filter( user=user['pk'], modified__gt=now() - timedelta(days=1)).count() user['message_count'] = Classgroup.objects.get( name=self.query_dict['classgroup']).messages.filter( user=user['pk']).count() user['role'] = ClassGroupPermissions.access_level( self.cg, user_obj) user['grade'] = self.add_user_grades(user_obj) return serializer
def test_get_classgroup_list(self): """ See if we can get the list of classgroups. """ cg_list_url = reverse('class_list') response = self.c0.get(cg_list_url) courses = response.data # We should have the one class we made in setup. self.assertEqual(len(courses), 1) self.assertEqual(courses[0]['pk'], self.cg.id) # The user should have all permissions in the course, as they are the course owner. self.assertTrue(ClassGroupPermissions.is_teacher(self.cg, self.user0)) self.assertTrue(ClassGroupPermissions.is_administrator(self.cg, self.user0)) self.assertEqual(ClassGroupPermissions.access_level(self.cg, self.user0), ClassGroupPermissions.administrator)
def child_user_views(self): """ Gets the user views for the children of this module. Used when rendering a vertical. """ child_views = [] children = self.get_children() # Store data to prevent descriptor overwrite by children. self.module.store_data() for child in children: child_access_level = ClassGroupPermissions.get_permission_level(child.classgroup, child, "change_resource") user_access_level = ClassGroupPermissions.access_level(child.classgroup, self.user) if ClassGroupPermissions.PERMISSION_LEVELS[user_access_level] >= ClassGroupPermissions.PERMISSION_LEVELS[child_access_level]: user_state, created = UserResourceState.objects.get_or_create( user=self.user, resource=child ) renderer = ResourceRenderer(child, user_resource_state=user_state, static_data=self.static_data, user=self.user) child_views.append(renderer.user_view()) # Read data back in. self.module.read_data() return child_views