def create(request): if SUBMISSION_END < datetime.datetime.now(): raise Http404 context = { 'user': request.user, 'rule': render_document(Node(nid=settings.SUBMISSION_RULE_DOCID).model.current_revision.text.text) } if request.POST.get('submit'): sub = SubmissionForm(request.POST, request.FILES) if sub.is_valid(): submission = sub.save(commit=False) submission.user = request.user submission.save() for f in request.FILES.getlist('slide'): form = SubmissionFileForm().save(commit=False) form.submission = submission form.file = f form.save() return redirect('submission:list') else: pass return render(request, 'submission/create.html', context)
def render(request, identifier): try: node = Node(identifier, user=request.user) except ObjectDoesNotExist: node = None if not node or not node.is_file(): try: permalink = Permalink.objects.get(name=identifier) except Permalink.DoesNotExist: permalink = None if not permalink or (permalink.valid_since and permalink.valid_since > now()): from django.http import Http404 raise Http404 node = Node(nodeobj=permalink.file, user=request.user) rev = permalink.revision if permalink.revision else permalink.file.current_revision else: rev = node.model.current_revision if not node.can_view(): if request.user.is_authenticated(): from django.core.exceptions import PermissionDenied raise PermissionDenied else: from django.contrib.auth.views import redirect_to_login return redirect_to_login(request.path) text = rev.text if text.format == BlobText.MARKDOWN: from core.formatting import render_document rendered_text = render_document(text.text) elif text.format == BlobText.HTML: rendered_text = text else: # text.format == BlobText.TEXT: rendered_text = r'<blockquote>%s</blockquote>' % text.text return render_request(request, 'docs/render.html', { 'node': node, 'text': rendered_text, })
def edit(request, submission_id): if SUBMISSION_END < datetime.datetime.now(): instance = get_object_or_404(Submission, id=submission_id, user=request.user) if instance.status!='E': raise Http404 elif request.user.has_perm('submission.review'): instance = get_object_or_404(Submission, id=submission_id) else: instance = get_object_or_404(Submission, id=submission_id, user=request.user) if request.POST.get('submit'): if request.FILES: submission = SubmissionForm(request.POST, request.FILES, instance=instance) else: submission = SubmissionForm(request.POST, instance=instance) if submission.is_valid(): sub = submission.save() if request.FILES.getlist('slide'): for f in sub.files.all(): f.file.delete() f.delete() for f in request.FILES.getlist('slide'): form = SubmissionFileForm().save(commit=False) form.submission = sub form.file = f form.save() return redirect('submission:list') else: pass context = { 'user': request.user, 'rule': render_document(Node(nid=settings.SUBMISSION_RULE_DOCID).model.current_revision.text.text), 'submission': instance, } return render(request, 'submission/edit.html', context)