def get_context_data(self, **kwargs): context = super(AssignmentDetailView, self).get_context_data(**kwargs) student = get_current_student(self.request) teacher = get_current_teacher(self.request) context['is_assignment_page'] = 'active' context['meta'] = self.get_object().as_meta(self.request) if student: # context['student'] = self.student context['form'] = AssignmentSubmissionForm slug = self.kwargs['slug'] context['work_files'] = AssignmentWorkFile.objects.filter( assignment_work__assignment__slug=slug, assignment_work__student=student) context['materials'] = AssignmentFile.objects.filter( assignment__slug=slug) # print(context['work_files']) # print(slug) object = self.get_object() context['work'] = self.asgmt_work context['turned'] = self.asgmt_work.submitted elif teacher: context['students'] = Student.objects.filter( assignmentwork__submitted=True, assignmentwork__assignment=self.object) return context
def post(self, request, *args, **kwargs): if not request.user.is_teacher: return HttpResponseForbidden() self.object = self.get_object() slug = self.kwargs.get('slug') teacher = get_current_teacher(self.request) form = self.form_class(request.POST) if form.is_valid(): obj = Assignment.objects.filter(slug=slug)[0] obj.title = form.cleaned_data['title'] obj.points = form.cleaned_data['points'] dt = form.cleaned_data['date'] tm = form.cleaned_data['time'] obj.deadline = datetime.combine(dt, tm) obj.description = form.cleaned_data['description'] obj.modified = datetime.now() obj.save() messages.success(request, f"Assignment updated") return self.form_valid(form) else: for msg in form.error_messages: messages.error(request, f"{msg}: {form.error_messages[msg]}") return self.form_invalid(form)
def get(self, request, *args, **kwargs): is_teacher = request.user.is_teacher is_student = request.user.is_student stream_slug = self.kwargs['slug'] try: course_offering = course.models.CourseOffering.objects.filter( slug=stream_slug)[:1].get() except course.models.CourseOffering.DoesNotExist: course_offering = None if is_student: student = get_current_student(self.request) if not student.user.has_perm('view_courseoffering', course_offering): return HttpResponseForbidden() return super().get(self, request, *args, **kwargs) elif is_teacher: teacher = get_current_teacher(self.request) if not teacher.user.has_perm('view_courseoffering', course_offering): return HttpResponseForbidden() return super().get(self, request, *args, **kwargs) else: return HttpResponseForbidden()
def get(self, request, *args, **kwargs): if not request.user.teacher: return HttpResponseForbidden() teacher = get_current_teacher(self.request) if not teacher.user.has_perm('view_assignment', self.get_object()): return HttpResponseForbidden() return super().get(self, request, *args, **kwargs)
def get(self, request, *args, **kwargs): if not request.user.is_teacher: return HttpResponseForbidden() teacher = get_current_teacher(self.request) obj = self.get_object() if not teacher.user.has_perm('view_courseoffering', obj): return HttpResponseForbidden() return super().get(self, request, *args, **kwargs)
def get_queryset(self): student = get_current_student(self.request) teacher = get_current_teacher(self.request) queryset = super(CourseListView, self).get_queryset() if student: queryset = queryset.filter(courseenrollment__student=student, courseenrollment__is_hidden=False) elif teacher: queryset = queryset.filter(teacher=teacher, archive=False) return queryset
def get_context_data(self, **kwargs): context = super(AssignmentEditView, self).get_context_data(**kwargs) teacher = get_current_teacher(self.request) meta = Meta(title=get_site_title(f'Edit assignment')) context['is_assignment_page'] = 'active' context['meta'] = meta context['assignment_files'] = AssignmentFile.objects.filter( assignment=self.object) context['form'] = self.form_class() return context
def post(self, request, *args, **kwargs): if not request.user.teacher: return HttpResponseForbidden() teacher = get_current_teacher(self.request) self.object = self.get_object() if not teacher.user.has_perm('change_assignment', self.object): return HttpResponseForbidden() username = self.kwargs['username'] slug = self.kwargs['slug'] student = Student.objects.filter(user__username=username)[0] form = AssignPointForm(request.POST) if form.is_valid(): obj = AssignmentWork.objects.filter( assignment__slug=slug, student__user__username=username)[0] obj.points = form.cleaned_data['points'] obj.save() if obj.points != -1: messages.success( request, f"Assigned {obj.points} point{pluralize(obj.points)} to {username}" ) else: messages.info(request, f"Assignment ungraded for {username}") description = f"returned <b>{ self.object.title }</b> in { self.object.course_offering.course.code }" href = reverse('assignment:detail', kwargs={'slug': self.object.slug}) notify.send(teacher.user, verb='returned', recipient=student.user, action_object=self.object, target=self.object.course_offering, description=description, href=href) return self.form_valid(form) else: for msg in form.error_messages: messages.error(request, f"{msg}: {form.error_messages[msg]}") return self.form_invalid(form)
def get_context_data(self, **kwargs): context = super(AssignmentListView, self).get_context_data(**kwargs) student = get_current_student(self.request) teacher = get_current_teacher(self.request) course_slug = self.kwargs.get('slug') context['is_assignment_page'] = 'active' try: course_offering = course.models.CourseOffering.objects.filter( slug=course_slug)[:1].get() except course.models.CourseOffering.DoesNotExist: course_offering = None context['course'] = course_offering title = 'Assignments' if (course_offering): title = f'Assignment - { course_offering.course.code }' meta = Meta(title=get_site_title(title)) context['meta'] = meta if student: if not course_slug: context[ 'assignments_submitted'] = AssignmentWork.objects.filter( assignment__course_offering__courseenrollment__is_hidden =False, assignment__course_offering__courseenrollment__student= student, student=student, submitted=True).order_by('-submit_date') else: context[ 'assignments_submitted'] = AssignmentWork.objects.filter( student=student, submitted=True, assignment__course_offering=course_offering) elif teacher: if not course_slug: context[ 'courses'] = course.models.CourseOffering.objects.filter( teacher=teacher, archive=False) return context
def post(self, request, *args, **kwargs): teacher = get_current_teacher(self.request) if not request.user.is_authenticated: return HttpResponseForbidden() if not teacher: return HttpResponseForbidden() self.object = self.get_object() username = self.kwargs['username'] student = Student.objects.filter(user__username=username)[0] form = GradeForm(request.POST) if form.is_valid(): obj = Grade.objects.filter( course_enrollment__student=student, course_enrollment__course_offered=self.object)[0] obj.letter_grade = form.cleaned_data['grade'] obj.save() messages.success(request, f"Student record updated: {username}") if obj.letter_grade == None: verb = "ungraded" s = "" else: verb = "graded " s = f" <b>{ obj.letter_grade } GPA</b>" description = f"{ verb }{ s } in { self.object.course.code }" href = reverse('result:by_term', kwargs={'pk': self.object.term.id}) notify.send(teacher.user, verb=verb, recipient=student.user, action_object=obj, target=self.object, description=description, href=href) return self.form_valid(form) else: for msg in form.error_messages: messages.error(request, f"{msg}: {form.error_messages[msg]}") return self.form_invalid(form)
def get_context_data(self, **kwargs): context = super(CourseListView, self).get_context_data(**kwargs) student = get_current_student(self.request) teacher = get_current_teacher(self.request) meta = Meta(title=get_site_title('Courses')) context['random'] = str(uuid4())[:8] context['is_course_page'] = 'active' context['meta'] = meta if student: context['hidden_courses'] = CourseOffering.objects.filter( courseenrollment__student=student, courseenrollment__is_hidden=True) elif teacher: context['archives'] = CourseOffering.objects.filter( teacher=teacher, archive=True) return context
def post(self, request, *args, **kwargs): is_teacher = request.user.is_teacher is_student = request.user.is_student stream_slug = self.kwargs['slug'] try: course_offering = course.models.CourseOffering.objects.filter( slug=stream_slug)[:1].get() except course.models.CourseOffering.DoesNotExist: course_offering = None if not (is_student or is_teacher): return HttpResponseForbidden() if is_student: student = get_current_student(self.request) if not student.user.has_perm('view_courseoffering', course_offering): return HttpResponseForbidden() elif is_teacher: teacher = get_current_teacher(self.request) if not teacher.user.has_perm('view_courseoffering', course_offering): return HttpResponseForbidden() form = self.form_class(request.POST) if form.is_valid(): obj = Post() obj.body = form.cleaned_data['body'] obj.stream = course_offering obj.allow_comments = True obj.user = request.user obj.save() return redirect(obj) else: print('invalid') return redirect('course:stream:index', slug=stream_slug)
def post(self, request, *args, **kwargs): is_teacher = request.user.is_teacher is_student = request.user.is_student if not (is_student or is_teacher): return HttpResponseForbidden() obj = self.get_object() if is_student: student = get_current_student(self.request) if not student.user.has_perm('delete_post', obj): return HttpResponseForbidden() elif is_teacher: teacher = get_current_teacher(self.request) if not teacher.user.has_perm('delete_post', obj): return HttpResponseForbidden() return super().post(self, request, *args, **kwargs)
def get(self, request, *args, **kwargs): is_teacher = request.user.is_teacher is_student = request.user.is_student obj = self.get_object() if is_student: student = get_current_student(self.request) if not student.user.has_perm('view_courseoffering', obj): return HttpResponseForbidden() return redirect('course:stream:index', slug=obj.slug) elif is_teacher: teacher = get_current_teacher(self.request) if not teacher.user.has_perm('view_courseoffering', obj): return HttpResponseForbidden() return redirect('course:stream:index', slug=obj.slug) else: return HttpResponseForbidden()
def get(self, request, *args, **kwargs): is_teacher = request.user.is_teacher is_student = request.user.is_student obj = self.get_object() if is_student: student = get_current_student(self.request) if not student.user.has_perm('view_assignment', obj): return HttpResponseForbidden() self.asgmt_work, _created = AssignmentWork.objects.get_or_create( assignment=obj, student=student) elif is_teacher: teacher = get_current_teacher(self.request) if not teacher.user.has_perm('view_assignment', obj): return HttpResponseForbidden() else: return HttpResponseForbidden() return super().get(self, request, *args, **kwargs)
def get_context_data(self, **kwargs): context = super(AssignmentAssignPointView, self).get_context_data(**kwargs) student = get_current_student(self.request) teacher = get_current_teacher(self.request) slug = self.kwargs['slug'] username = self.kwargs['username'] context['is_assignment_page'] = 'active' context['meta'] = self.get_object().as_meta(self.request) context['submission'] = AssignmentWorkFile.objects.filter( assignment_work__assignment__slug=slug, assignment_work__student__user__username=username) context['materials'] = AssignmentFile.objects.filter( assignment__slug=slug) context['student_'] = Student.objects.filter( user__username=username)[0] context['assignment_work'] = AssignmentWork.objects.filter( assignment__slug=slug, student__user__username=username)[0] context['form'] = self.form_class() context['form']['points'].initial = context['assignment_work'].points return context
def get_queryset(self): student = get_current_student(self.request) teacher = get_current_teacher(self.request) course_slug = self.kwargs.get('slug') queryset = super(AssignmentListView, self).get_queryset() try: course_offering = course.models.CourseOffering.objects.filter( slug=course_slug)[:1].get() except course.models.CourseOffering.DoesNotExist: course_offering = None if student: if not course_slug: queryset = queryset.filter( course_offering__courseenrollment__is_hidden=False, course_offering__courseenrollment__student=student ).exclude(assignmentwork__student=student, assignmentwork__submitted=True).order_by('deadline') else: queryset = queryset.filter( course_offering=course_offering, course_offering__courseenrollment__student=student ).exclude(assignmentwork__student=student, assignmentwork__submitted=True) elif teacher: if not course_slug: queryset = queryset.filter(course_offering__teacher=teacher, course_offering__archive=False) else: queryset = queryset.filter(course_offering__teacher=teacher, course_offering__archive=False, course_offering=course_offering) return queryset