예제 #1
0
    def post(self, request, task_id):
        context = self.get_context_data()
        task = get_object_or_404(Task, pk=task_id)

        if request.user.is_authenticated and CourseMember.is_student_of(
                request.user.pk, task.course.pk):
            try:
                submission = Submission.objects.get(
                    task__pk=task_id, submitter__pk=request.user.pk)
                form = UploadFileForm(files=request.FILES)
                if form.is_valid():
                    file = form.save()
                    submission.file = file
                    submission.save()
                    messages.info(request, "Successfully submit homework")
                    return redirect(
                        reverse("courses:task_detail", args=[task_id]))
                messages.info(request, "Fail to validate form.")
                context['form'] = form
                print(form.errors)
                return render(request, self.template_name, context=context)
            except Submission.DoesNotExist:
                # Normal case
                form = UploadFileForm(files=request.FILES)
                if form.is_valid():
                    file = form.save()
                    submission = Submission(submitter=request.user,
                                            task=task,
                                            file=file)
                    submission.save()
                    messages.info(request, "Successfully submit homework")
                    return redirect(
                        reverse("courses:task_detail", args=[task_id]))
                messages.info(request, "Fail to validate form.")
                context['form'] = form
                print(form.errors)
                return render(request, self.template_name, context=context)
            except Exception as e:
                # More than one copy
                print(e)
                messages.error("More than one copy for {} in {}".format(
                    request.user.pk, task_id))
                return redirect(reverse("courses:task_detail", args=[task_id]))
        return redirect(reverse("courses:task_detail", args=[task_id]))
예제 #2
0
 def post(self, request):
     upload_file_form = UploadFileForm(request.POST, request.FILES)
     patient_id = request.POST.get('patient_id')
     if upload_file_form.is_valid():
         upload_file = upload_file_form.save()
         if upload_file.name == '':
             file_name = os.path.basename(upload_file.upload_file.name)
             upload_file.name = file_name
         patient = Patient.objects.get(id=patient_id)
         upload_file.patient = [patient]
         upload_file.save()
         return HttpResponseRedirect(
             reverse('patient_detail', kwargs={'patient_id': patient_id}))
     else:
         return render(
             request, 'error_message.html', {
                 "title": "上传文件失败",
                 "errors": upload_file_form.errors,
                 "patient_id": patient_id,
                 "url": request.META['HTTP_REFERER'],
             })