예제 #1
0
    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
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
 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
예제 #5
0
    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)
예제 #6
0
    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