コード例 #1
0
ファイル: test_assignment.py プロジェクト: ojflores/chem-lab
 def setUp(self):
     # create test user with permissions
     self.student_username = '******'
     self.instructor_username = '******'
     self.password = '******'
     self.student_user = User.objects.create_user(
         username=self.student_username, password=self.password)
     group = permissions.get_or_create_student_permissions()
     group.user_set.add(self.student_user)
     self.instructor_user = User.objects.create_user(
         username=self.instructor_username, password=self.password)
     group = permissions.get_or_create_instructor_permissions()
     group.user_set.add(self.instructor_user)
     self.client.login(username=self.instructor_username,
                       password=self.password)
     # populate test database
     self.course = Course(name='Bounty Hunting 101')
     self.course.save()
     self.instructor = Instructor(user=self.instructor_user,
                                  wwuid='9994141')
     self.instructor.save()
     self.group = LabGroup(course=self.course,
                           instructor=self.instructor,
                           term='before',
                           enroll_key='4')
     self.group.save()
     self.student = Student(user=self.student_user,
                            wwuid='9994141',
                            labgroup=self.group)
     self.student.save()
     self.template = AssignmentTemplate(course=self.course,
                                        name='Royalty Kidnapping Section A')
     self.template.save()
     # retrieve the view
     self.view_name = 'api:assignment-lc'
コード例 #2
0
ファイル: test_labgroup.py プロジェクト: ojflores/chem-lab
 def setUp(self):
     # create test user with permissions
     self.instructor_username = '******'
     self.student_username = '******'
     self.password = '******'
     self.instructor_user = User.objects.create_user(username=self.instructor_username, password=self.password)
     self.student_user = User.objects.create_user(username=self.student_username, password=self.password)
     self.instructor_user.groups.add(permissions.get_or_create_instructor_permissions())
     self.student_user.groups.add(permissions.get_or_create_student_permissions())
     self.client.login(username=self.instructor_username, password=self.password)
     # Create foreign keys
     self.instructor = Instructor(user=self.instructor_user, wwuid="1234567")
     self.instructor.save()
     self.course_1 = Course(name="test course 1")
     self.course_1.save()
     self.course_2 = Course(name="test course 2")
     self.course_2.save()
     # add labgroups to database
     self.labgroup_1 = LabGroup(course=self.course_1,
                                instructor=self.instructor,
                                term='test1',
                                enroll_key='test key 1')
     self.labgroup_1.save()
     self.labgroup_2 = LabGroup(course=self.course_1,
                                instructor=self.instructor,
                                term='test2',
                                enroll_key='test key 2')
     self.labgroup_2.save()
     self.labgroup_3 = LabGroup(course=self.course_1,
                                instructor=self.instructor,
                                term='test3',
                                enroll_key='test key 3')
     self.labgroup_3.save()
     # retrieve the view
     self.view_name = 'api:lab-group-rud'
コード例 #3
0
ファイル: test_enroll.py プロジェクト: ojflores/chem-lab
 def setUp(self):
     # create test users
     self.student_username = '******'
     self.instructor_username = '******'
     self.password = '******'
     self.student_user = User.objects.create_user(
         username=self.student_username, password=self.password)
     self.instructor_user = User.objects.create_user(
         username=self.instructor_username, password=self.password)
     group = permissions.get_or_create_instructor_permissions()
     group.user_set.add(self.instructor_user)
     group = permissions.get_or_create_student_permissions()
     group.user_set.add(self.student_user)
     self.client.login(username=self.student_username,
                       password=self.password)
     # populate the database
     self.student = Student(labgroup=None,
                            user=self.student_user,
                            wwuid='1111111')
     self.student.save()
     self.instructor = Instructor(user=self.instructor_user,
                                  wwuid='2222222')
     self.instructor.save()
     self.course = Course(name='test name')
     self.course.save()
     self.labgroup = LabGroup(course=self.course,
                              instructor=self.instructor,
                              group_name='A',
                              term='FALL2018',
                              enroll_key='ABC')
     self.labgroup.save()
     # retrieve the view
     self.view_name = 'api:enroll'
コード例 #4
0
 def create(self, request, *args, **kwargs):
     response = super(StudentLCView, self).create(request, *args, **kwargs)
     # do not modify permissions if the request fails
     if response.status_code is not status.HTTP_201_CREATED:
         return response
     # add new student to the student group
     group = permissions.get_or_create_student_permissions()
     group.user_set.add(request.data['user'])
     return response
コード例 #5
0
ファイル: test_labgroup.py プロジェクト: ojflores/chem-lab
 def setUp(self):
     # create test user with permissions
     self.instructor_username = '******'
     self.student_username = '******'
     self.password = '******'
     self.instructor_user = User.objects.create_user(username=self.instructor_username, password=self.password)
     self.student_user = User.objects.create_user(username=self.student_username, password=self.password)
     self.instructor_user.groups.add(permissions.get_or_create_instructor_permissions())
     self.student_user.groups.add(permissions.get_or_create_student_permissions())
     self.client.login(username=self.instructor_username, password=self.password)
     # retrieve the view
     self.view_name = 'api:lab-group-lc'
     # Create foreign keys
     self.instructor = Instructor(user=self.instructor_user, wwuid="1234567")
     self.instructor.save()
     self.course = Course(name="test_course")
     self.course.save()
コード例 #6
0
 def post(self, request):
     """
     Enroll in a labgroup.
     """
     # ensure all parameters are present in the request data
     for param in ('wwuid', 'labgroup', 'enroll_key'):
         if param not in request.data.keys():
             return Response(status=status.HTTP_400_BAD_REQUEST)
     # load the labgroup from the database
     try:
         labgroup = LabGroup.objects.get(id=request.data['labgroup'])
     except LabGroup.DoesNotExist:
         return Response(status=status.HTTP_404_NOT_FOUND)
     # check enroll key
     if request.data['enroll_key'] != labgroup.enroll_key:
         return Response(status=status.HTTP_403_FORBIDDEN)
     # delete student if it exists
     try:
         student = Student.objects.get(user=request.user)
         student.delete()
     except Student.DoesNotExist:
         pass
     # validate student data in request
     student_data = {
         'user': request.user.id,
         'labgroup': labgroup.id,
         'wwuid': request.data['wwuid'],
     }
     serializer = StudentSerializer(data=student_data)
     if not serializer.is_valid():
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
     # create the student
     student = Student(user=request.user,
                       labgroup=labgroup,
                       wwuid=request.data['wwuid'])
     student.save()
     # add new student to the student group
     group = permissions.get_or_create_student_permissions()
     group.user_set.add(request.user)
     # return successful response
     return Response(status=status.HTTP_204_NO_CONTENT)
コード例 #7
0
 def test_assignment_template_list_student(self):
     """
     Tests that assignment templates are properly listed for students.
     """
     # create a labgroup
     labgroup_1 = LabGroup(group_name='A',
                           course=self.course,
                           instructor=self.instructor,
                           term=get_current_term(),
                           enroll_key='ABC')
     labgroup_1.save()
     # create an unused labgroup
     labgroup_2 = LabGroup(group_name='B',
                           course=self.course,
                           instructor=self.instructor,
                           term=get_current_term(),
                           enroll_key='ABC')
     labgroup_2.save()
     # create student user
     student_user = User.objects.create_user(username='******',
                                             password=self.password)
     Student(user=student_user, wwuid='1111111', labgroup=labgroup_1).save()
     group = permissions.get_or_create_student_permissions()
     group.user_set.add(student_user)
     self.client.logout()
     self.client.login(username=student_user.username,
                       password=self.password)
     # add assignment templates to database
     at1 = AssignmentTemplate(name='test name 1', course=self.course)
     at1.save()
     at2 = AssignmentTemplate(name='test name 2', course=self.course)
     at2.save()
     # assign student the first assignment template
     assignment = Assignment(
         assignment_template=at1,
         labgroup=labgroup_1,
         open_date=datetime.now(timezone(settings.TIME_ZONE)) -
         timedelta(days=1),
         close_date=datetime.now(timezone(settings.TIME_ZONE)) +
         timedelta(days=1))
     assignment.save()
     # create different assignment
     Assignment(assignment_template=at2,
                labgroup=labgroup_2,
                open_date=datetime.now(timezone(settings.TIME_ZONE)) -
                timedelta(days=1),
                close_date=datetime.now(timezone(settings.TIME_ZONE)) +
                timedelta(days=1))
     # request
     response = self.client.get(reverse(self.view_name))
     response_body = json.loads(response.content.decode('utf-8'))
     # test response
     assignments = AssignmentTemplate.objects.all()
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     self.assertEqual(len(response_body['templates']), 1)
     self.assertEqual(response_body['templates'][0]['pk'],
                      assignments[0].id)
     self.assertEqual(response_body['templates'][0]['course'],
                      assignments[0].course.id)
     self.assertEqual(response_body['templates'][0]['name'],
                      assignments[0].name)