예제 #1
0
    def get(self, request, *args, **kwargs):
        course_id = int(self.kwargs['course_id'])
        self.model.objects.filter(course__course_id=course_id).delete()
        course = CanvasCourse.objects.filter(course_id=course_id).first()
        api = CanvasAPI(term=course.term.term_id)

        json_data = api.get_assignments(course_id)
        json_list = list(json_data)  #the data from canvas

        for assignment in json_list:  #get the stuff i need from the canvas data
            assignment_id = assignment['id']
            assignment_name = assignment['name']
            has_override = assignment['has_overrides']
            is_quiz = assignment['is_quiz_assignment']

            td = timedelta(hours=6)  #adjust to local time
            if assignment['unlock_at'] is not None:
                unlockCanvas = datetime.strptime(
                    assignment['unlock_at'],
                    '%Y-%m-%dT%H:%M:%SZ')  #save in datetime object
                unlockCanvas = unlockCanvas - td  #adjust time.  else it goes past midnight altering the date
                start_date = datetime.strftime(
                    unlockCanvas, '%Y-%m-%d'
                )  #remove time and save just the date as a string
            else:
                start_date = None
            if assignment['due_at'] is not None:
                dueCanvas = datetime.strptime(assignment['due_at'],
                                              '%Y-%m-%dT%H:%M:%SZ')
                dueCanvas = dueCanvas - td
                due_date = datetime.strftime(
                    dueCanvas, '%Y-%m-%d'
                )  #saving date as string and in m/d/y for use with datepicker
            else:
                due_date = None
            if assignment['lock_at'] is not None:
                lockCanvas = datetime.strptime(assignment['lock_at'],
                                               '%Y-%m-%dT%H:%M:%SZ')
                lockCanvas = lockCanvas - td
                end_date = datetime.strftime(lockCanvas, '%Y-%m-%d')
            else:
                end_date = None

            Assignment.user_objects.create(assignment_id=assignment_id,
                                           name=assignment_name,
                                           start_date=start_date,
                                           due_date=due_date,
                                           end_date=end_date,
                                           has_override=has_override,
                                           is_quiz=is_quiz,
                                           course=course)

        return super(AssignmentListView, self).get(request, *args, **kwargs)
예제 #2
0
    def get(self, request, *args, **kwargs):
        course_id = int(self.kwargs['course_id'])
        reload = request.GET.get('reload', False) == "True"
        existing_records = self.model.objects.filter(
            assignment__course__course_id=course_id).first()
        course = CanvasCourse.objects.filter(course_id=course_id).first()

        if existing_records is None or reload:
            api = CanvasAPI(course.term.term_id)

            # Delete existing data
            self.model.objects.filter(assignment__course=course).all().delete()
            Assignment.objects.filter(course=course).all().delete()
            UserCourse.objects.filter(course=course).all().delete()

            json_data = api.get_assignments(course_id)
            json_list = list(json_data)  #the data from canvas

            for assignment in json_list:  #get the stuff i need from the canvas data
                assignment_id = assignment['id']
                assignment_name = assignment['name']
                has_override = assignment['has_overrides']
                is_quiz = assignment['is_quiz_assignment']

                td = timedelta(hours=6)  #adjust to local time
                if assignment['unlock_at'] is not None:
                    unlockCanvas = datetime.strptime(
                        assignment['unlock_at'],
                        '%Y-%m-%dT%H:%M:%SZ')  #save in datetime object
                    unlockCanvas = unlockCanvas - td  #adjust time.  else it goes past midnight altering the date
                    start_date = datetime.strftime(
                        unlockCanvas, '%Y-%m-%d'
                    )  #remove time and save just the date as a string
                else:
                    start_date = None
                if assignment['due_at'] is not None:
                    dueCanvas = datetime.strptime(assignment['due_at'],
                                                  '%Y-%m-%dT%H:%M:%SZ')
                    dueCanvas = dueCanvas - td
                    due_date = datetime.strftime(
                        dueCanvas, '%Y-%m-%d'
                    )  #saving date as string and in m/d/y for use with datepicker
                else:
                    due_date = None
                if assignment['lock_at'] is not None:
                    lockCanvas = datetime.strptime(assignment['lock_at'],
                                                   '%Y-%m-%dT%H:%M:%SZ')
                    lockCanvas = lockCanvas - td
                    end_date = datetime.strftime(lockCanvas, '%Y-%m-%d')
                else:
                    end_date = None

                Assignment.user_objects.create(assignment_id=assignment_id,
                                               name=assignment_name,
                                               start_date=start_date,
                                               due_date=due_date,
                                               end_date=end_date,
                                               has_override=has_override,
                                               is_quiz=is_quiz,
                                               course=course)

            student_list = api.get_students(course_id)
            for student in student_list:
                localstudent = User.objects.filter(
                    canvas_id=int(student['id'])).first()
                if localstudent is not None:
                    usercourse = UserCourse.objects.filter(
                        course=course).filter(user=localstudent).first()
                    if usercourse is None:
                        UserCourse.user_objects.create(user=localstudent,
                                                       course=course)

            json_data = api.get_submissions(course_id)
            json_list = list(json_data)  #the data from canvas

            for sub in json_list:
                student_id = sub['user_id']
                student = User.objects.filter(canvas_id=student_id).first()

                assignment_id = sub['assignment_id']
                assignment = Assignment.objects.filter(
                    assignment_id=assignment_id).first()

                submitted = False
                if sub['workflow_state'] != 'unsubmitted':
                    submitted = True
                late = sub['late']
                self.model.user_objects.create(student=student,
                                               assignment=assignment,
                                               submitted=submitted,
                                               late=late)

        return super(SubmissionListView, self).get(request, *args, **kwargs)
예제 #3
0
    def get(self, request, *args, **kwargs):
        creds = UserCredentials()

        course_id = int(self.kwargs['course_id'])
        course = CanvasCourse.objects.filter(course_id=course_id).first()
        api = CanvasAPI(term=course.term.term_id)
        logging.warning("Term Set as : " + str(course.term.term_id))

        api.is_teacher_of_course(course_id, creds.get_OUNetID())
        if not api.is_teacher_of_course(course_id, creds.get_OUNetID()):
            raise PermissionDenied

        if ('assignment_id' in self.kwargs and 'student_id' in self.kwargs):
            self.assignment_id = self.kwargs['assignment_id']
            self.student_id = self.kwargs['student_id']
            self.page_title = "Extend Due Dates"

            json_data = api.get_assignment(course_id, self.assignment_id)

            override = api.get_assignment_override(course_id,
                                                   self.assignment_id,
                                                   self.student_id)
            if override:
                if 'due_at' in override:
                    json_data['due_at'] = override['due_at']
                else:
                    json_data['due_at'] = None
                if 'unlock_at' in override:
                    json_data['unlock_at'] = override['unlock_at']
                else:
                    json_data['unlock_at'] = None
                if 'lock_at' in override:
                    json_data['lock_at'] = override['lock_at']
                else:
                    json_data['lock_at'] = None
                json_data['has_overrides'] = True
            else:
                json_data['has_overrides'] = False

            json_list = [json_data]  #the data from canvas

        else:
            json_data = api.get_assignments(course_id)
            json_list = list(json_data)  #the data from canvas

        for assignment in json_list:  #get the stuff i need from the canvas data
            assignment_id = assignment['id']
            assignment_name = assignment['name']
            is_quiz = assignment['is_quiz_assignment']
            has_override = assignment['has_overrides']

            td = timedelta(hours=6)  #adjust to local time
            if assignment['unlock_at'] is not None:
                unlockCanvas = datetime.strptime(
                    assignment['unlock_at'],
                    '%Y-%m-%dT%H:%M:%SZ')  #save in datetime object
                unlockCanvas = unlockCanvas - td  #adjust time.  else it goes past midnight altering the date
                start_date = datetime.strftime(
                    unlockCanvas, '%Y-%m-%d'
                )  #remove time and save just the date as a string
            else:
                start_date = None
            if assignment['due_at'] is not None:
                dueCanvas = datetime.strptime(assignment['due_at'],
                                              '%Y-%m-%dT%H:%M:%SZ')
                dueCanvas = dueCanvas - td
                due_date = datetime.strftime(
                    dueCanvas, '%Y-%m-%d'
                )  #saving date as string and in m/d/y for use with datepicker
            else:
                due_date = None
            if assignment['lock_at'] is not None:
                lockCanvas = datetime.strptime(assignment['lock_at'],
                                               '%Y-%m-%dT%H:%M:%SZ')
                lockCanvas = lockCanvas - td
                end_date = datetime.strftime(lockCanvas, '%Y-%m-%d')
            else:
                end_date = None

            assignment_record = self.model.objects.filter(
                assignment_id=assignment_id)
            if assignment_record is None or not assignment_record:
                self.model.objects.create(assignment_id=assignment_id,
                                          name=assignment_name,
                                          start_date=start_date,
                                          due_date=due_date,
                                          end_date=end_date,
                                          has_override=has_override,
                                          is_quiz=is_quiz,
                                          course=course)
            else:
                assignment_record.update(assignment_id=assignment_id,
                                         name=assignment_name,
                                         start_date=start_date,
                                         due_date=due_date,
                                         end_date=end_date,
                                         has_override=has_override,
                                         is_quiz=is_quiz,
                                         course=course)

        return super(EditDueDates, self).get(request, *args, **kwargs)
예제 #4
0
    def get(self, request, *args, **kwargs):
        course_id = None
        if 'course_id' in self.kwargs:
            course_id = int(self.kwargs['course_id'])
        reload = request.GET.get('reload', False) == "True"

        if course_id is not None:
            existing_records = self.model.objects.filter(
                course__course_id=course_id).first()

            if existing_records is None or reload:
                api = CanvasAPI()

                course = Course.objects.filter(course_id=course_id).first()
                self.model.objects.filter(course=course).all().delete()
                json_data = api.get_assignments(course_id)
                json_list = list(json_data)  #the data from canvas

                for assignment in json_list:  #get the stuff i need from the canvas data
                    assignment_id = assignment['id']
                    assignment_name = assignment['name']
                    has_override = assignment['has_overrides']
                    is_quiz = assignment['is_quiz_assignment']
                    logging.warning("ASSIGNMENT")
                    logging.warning(str(assignment))
                    td = timedelta(hours=6)  #adjust to local time
                    if assignment['unlock_at'] is not None:
                        unlockCanvas = datetime.strptime(
                            assignment['unlock_at'],
                            '%Y-%m-%dT%H:%M:%SZ')  #save in datetime object
                        unlockCanvas = unlockCanvas - td  #adjust time.  else it goes past midnight altering the date
                        start_date = datetime.strftime(
                            unlockCanvas, '%Y-%m-%d'
                        )  #remove time and save just the date as a string
                    else:
                        start_date = None
                    if assignment['due_at'] is not None:
                        dueCanvas = datetime.strptime(assignment['due_at'],
                                                      '%Y-%m-%dT%H:%M:%SZ')
                        dueCanvas = dueCanvas - td
                        due_date = datetime.strftime(
                            dueCanvas, '%Y-%m-%d'
                        )  #saving date as string and in m/d/y for use with datepicker
                    else:
                        due_date = None
                    if assignment['lock_at'] is not None:
                        lockCanvas = datetime.strptime(assignment['lock_at'],
                                                       '%Y-%m-%dT%H:%M:%SZ')
                        lockCanvas = lockCanvas - td
                        end_date = datetime.strftime(lockCanvas, '%Y-%m-%d')
                    else:
                        end_date = None

                    self.model.user_objects.create(assignment_id=assignment_id,
                                                   name=assignment_name,
                                                   start_date=start_date,
                                                   due_date=due_date,
                                                   end_date=end_date,
                                                   has_override=has_override,
                                                   is_quiz=is_quiz,
                                                   course=course)

        return super(AssignmentListView, self).get(request, *args, **kwargs)