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]))
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'], })