Exemple #1
0
 def testCreateSubmittedAssignmentNotification(self):
     notification = Notification.create_submitted_assignment_notification(
         self.course, self.student1, self.assignment
     )
     self.assertTrue(self.instructor.notifications.filter(pk=notification.pk).exists())
Exemple #2
0
 def testCreateSubmittedAssignmentNotification(self):
     notification = Notification.create_submitted_assignment_notification(
         self.course, self.student1, self.assignment)
     self.assertTrue(
         self.instructor.notifications.filter(pk=notification.pk).exists())
Exemple #3
0
def student_view_assignment(request, course_name, assignment_name):
    try:
        assignment = request.assignment
    except AttributeError:
        assignment_name = assignment_name.replace("_", " ")
        assignment = get_object_or_404(Assignment,
                                       name=assignment_name,
                                       course=request.course)

    #request.user.notifications.filter(assignment=assignment, resource__isnull=True, is_new=True).update(is_new=False)

    resources = assignment.resources.all()
    """
	for resource in resources:
		resource.notification_count = resource.get_notification_count(request.user)
	"""
    try:
        submission = request.user.submissions.select_related("assignment").get(
            assignment=assignment)
    except AssignmentSubmission.DoesNotExist:
        if request.user.is_superuser or request.user.is_staff:
            submission = AssignmentSubmission(assignment=assignment,
                                              user=request.user)
        else:
            submission = request.user.submissions.create(assignment=assignment)

    quiz = None
    quiz_submission = None
    if assignment.type == 'o':
        quiz, created = OnlineQuiz.objects.get_or_create(assignment=assignment)
        quiz_submission, created = QuizSubmission.objects.get_or_create(
            quiz=quiz, submission=submission)
        quiz_submission._set_cached_quiz(quiz)

    try:
        scheme = request.course.get_grading_scheme()
        submission.grade = scheme.grade_for_percent(100 *
                                                    submission.get_grade())
    except:
        pass

    due_date_expired = assignment.due_date < datetime.datetime.now()

    submission_errors = {}
    if request.method == "POST":
        if assignment.type == 's' and not due_date_expired:

            submission_errors = save_files_for_submission(
                request.FILES.items(), submission)
            submission.text = request.POST['submission-text']

            if submission_errors == {}:
                submission.status = 0  #submitted status
                messages.success(request,
                                 "Your response was submitted successfully.")

            if not (request.user.is_superuser or request.user.is_staff):
                submission.save()

            Notification.create_submitted_assignment_notification(
                request.course, request.user, assignment)

    files = submission.files.all()
    for file in files:
        file._set_cached_course(request.course)  #for performance

    return render_with_context(
        request, "assignments/student/view_assignment.html", {
            'assignment': assignment,
            'submission': submission,
            'files': files,
            'errors': submission_errors,
            'due_date_expired': due_date_expired,
            'resources': resources,
            'MAX_UPLOAD_FILE_SIZE': settings.MAX_UPLOAD_FILE_SIZE,
            'quiz': quiz,
            'quiz_submission': quiz_submission
        })
Exemple #4
0
def student_view_assignment(request, course_name, assignment_name):
	try:
		assignment = request.assignment
	except AttributeError:
		assignment_name = assignment_name.replace("_", " ")
		assignment = get_object_or_404(Assignment, name=assignment_name, course=request.course)
	
	#request.user.notifications.filter(assignment=assignment, resource__isnull=True, is_new=True).update(is_new=False)
	
	resources = assignment.resources.all()
	
	"""
	for resource in resources:
		resource.notification_count = resource.get_notification_count(request.user)
	"""
	try:
		submission = request.user.submissions.select_related("assignment").get(assignment=assignment)
	except AssignmentSubmission.DoesNotExist:
		if request.user.is_superuser or request.user.is_staff:
			submission = AssignmentSubmission(assignment=assignment, user=request.user)
		else:
			submission = request.user.submissions.create(assignment=assignment)
		
	
	quiz = None
	quiz_submission = None
	if assignment.type == 'o':
		quiz, created = OnlineQuiz.objects.get_or_create(assignment=assignment)
		quiz_submission, created = QuizSubmission.objects.get_or_create(quiz=quiz, submission=submission)
		quiz_submission._set_cached_quiz(quiz)
		
	try:
		scheme = request.course.get_grading_scheme()
		submission.grade = scheme.grade_for_percent(100 * submission.get_grade())
	except:
		pass
	
	due_date_expired = assignment.due_date < datetime.datetime.now()
	
	submission_errors = {}
	if request.method == "POST":
		if assignment.type == 's' and not due_date_expired:
			
			submission_errors = save_files_for_submission(request.FILES.items(), submission)
			submission.text = request.POST['submission-text']
		
			if submission_errors == {}:
				submission.status = 0 #submitted status
				messages.success(request, "Your response was submitted successfully.")
		
			if not (request.user.is_superuser or request.user.is_staff):
				submission.save()
			
			Notification.create_submitted_assignment_notification(request.course, request.user, assignment)
		
	files = submission.files.all()
	for file in files:
		file._set_cached_course(request.course) #for performance
		
	return render_with_context(request, "assignments/student/view_assignment.html",
						{ 'assignment': assignment, 'submission': submission, 'files': files, 
						'errors': submission_errors, 'due_date_expired': due_date_expired,
						'resources': resources, 'MAX_UPLOAD_FILE_SIZE': settings.MAX_UPLOAD_FILE_SIZE,
						'quiz': quiz, 'quiz_submission': quiz_submission })