def new_submission(request): if request.method == 'POST': form = SubmissionForm(request.POST, request.FILES) if form.is_valid(): form.save() return HttpResponseRedirect(reverse('artshow.views.submissions')) else: form = SubmissionForm() return render_to_response('artshow/new_submission.html', {'form' : form}, context_instance=RequestContext(request))
def submit(request, prob_id): session = Session() prob = session.query(Problem).get(int(prob_id)) if request.method == "POST": form = SubmissionForm(request.POST, request.FILES) if form.is_valid(): form.save(problem=prob, user=request.user) return HttpResponseRedirect(reverse('status', kwargs={'page': 1})) else: form = SubmissionForm() res = render_to_response('problem/submit.html', {"prob": prob, "form": form}, context_instance=RequestContext(request)) session.close() return res
def index(request): # if this is a POST request we need to process the form data if request.method == 'POST': # create a form instance and populate it with data from the request: form = SubmissionForm(request.POST, request.FILES) # check whether it's valid: if form.is_valid(): sub = form.save(commit=False) sub.user = request.user sub.save() return redirect(sub) # if a GET (or any other method) we'll create a blank form else: form = SubmissionForm() return render(request, 'index.html', {'form': form})
def convert_file(request): kwargs = {"most_recent_survey" : "surveys-v0.2.xls"} # here's a hack to avoid dealing with serving static files # I've passed the responsibility to settings.py readme = codecs.open(settings.PATH_TO_XLS2XFORM + "README.mkdn", mode="r", encoding="utf8") text = readme.read() kwargs["documentation"] = markdown.markdown(text) textdoc = pydoc.TextDoc() kwargs["api"] = pydoc.plain( textdoc.docmodule(xls2xform) ) kwargs["form"] = SubmissionForm() if request.method != "POST": # if nothing's posted give them an empty form return render_to_response("upload.html", kwargs) else: # otherwise pull the data out of the request and process it populated_form = SubmissionForm(request.POST, request.FILES) if populated_form.is_valid(): s = populated_form.save() try: # process the excel file surveys = write_xforms(s.file.path) for survey in surveys: x = XForm(submission=s, file=survey) x.save() # list the files created return render_to_response("list.html", {"list": XForm.objects.filter(submission=s)}) except ConversionError, e: # record and display any error messages s.error_msg = e.__str__() s.save() kwargs["msg"] = s.error_msg return render_to_response("upload.html", kwargs) except XLRDError, e: if e.__str__().startswith("Unsupported format, or corrupt file"): s.error_msg = "xls2xform only accepts Excel 97 - 2004 Workbooks (.xls)" s.save() kwargs["msg"] = s.error_msg return render_to_response("upload.html", kwargs) else: raise e
def create_submission(request, template="create_project.html"): project_id = request.GET.get("project_id") print "create submission for project:{}".format(project_id) form = SubmissionForm(request.POST or None) if project_id is not None: project = get_object_or_404(Project, pk=project_id) form = SubmissionForm(request.POST or None, initial={"project": project}) if request.method == "POST" and form.is_valid(): new_submission = form.save() print new_submission if project_id is None: project_id = new_submission.project.id event = {"time": datetime.now(), "project_id": int(project_id), "message": _("Create Submission")} create_log(event) return redirect("enterprise.submissions") context = {"form": form, "title": _("Create Submission")} return render(request, template, context)
def process_submission(request): """ Processes the submission and returns back to the browser. :Return: HttpResponse """ data = { 'error' : False, } submission = None email_form = None try: #force the request to be ajax. request.META['HTTP_X_REQUESTED_WITH'] = "XMLHttpRequest" if request.method == 'POST' and request.POST.has_key('type'): #if submission is of type email, process the email form if 'email' in request.POST['type']: form, email_form = SubmissionForm(request.POST), EmailForm(request.POST) #else if submission is of type link, process the submission form elif 'link' in request.POST['type']: form = SubmissionForm(request.POST) else: raise ValidationError('Incorrect Post type.') form.instance.submit_ip = request.META['REMOTE_ADDR'] form.instance.browser_meta = "%s %s" % ( request.META['HTTP_USER_AGENT'], request.POST['flash_meta'] ) if form.is_valid(): #save form form.save() #save email form if email_form: #set the pk from the submission email_form.instance.submission = form.instance if email_form.is_valid(): email_form.save() else: raise ValidationError(email_form.errors) else: raise ValidationError(form.errors) submission = form.instance data['submission_slug'] = submission.slug data['submission_url'] = reverse('files', args=[submission.slug]) #process files if uploaded via html upload_html(request, form.instance) #if no request.POST, throw error else: raise ValidationError('No Post or Post type.') except StopUpload: data['error'] = True data['messages'] = ['The file you uploaded exceeds the allowed limit!'] except IOError: data['error'] = True data['messages'] = [ 'Your file upload has timed out.' ' This might be due to problems with your flash player.' 'Please try your upload using the' '<a href="%s">No Flash</a> version.' % reverse('noflash') ] except ValidationError, e: data['error'] = True data['messages'] = e.messages
def process_submission(request): """ Processes the submission and returns back to the browser. :Return: HttpResponse """ data = { 'error': False, } submission = None email_form = None try: #force the request to be ajax. request.META['HTTP_X_REQUESTED_WITH'] = "XMLHttpRequest" if request.method == 'POST' and request.POST.has_key('type'): #if submission is of type email, process the email form if 'email' in request.POST['type']: form, email_form = SubmissionForm(request.POST), EmailForm( request.POST) #else if submission is of type link, process the submission form elif 'link' in request.POST['type']: form = SubmissionForm(request.POST) else: raise ValidationError('Incorrect Post type.') form.instance.submit_ip = request.META['REMOTE_ADDR'] form.instance.browser_meta = "%s %s" % ( request.META['HTTP_USER_AGENT'], request.POST['flash_meta']) if form.is_valid(): #save form form.save() #save email form if email_form: #set the pk from the submission email_form.instance.submission = form.instance if email_form.is_valid(): email_form.save() else: raise ValidationError(email_form.errors) else: raise ValidationError(form.errors) submission = form.instance data['submission_slug'] = submission.slug data['submission_url'] = reverse('files', args=[submission.slug]) #process files if uploaded via html upload_html(request, form.instance) #if no request.POST, throw error else: raise ValidationError('No Post or Post type.') except StopUpload: data['error'] = True data['messages'] = ['The file you uploaded exceeds the allowed limit!'] except IOError: data['error'] = True data['messages'] = [ 'Your file upload has timed out.' ' This might be due to problems with your flash player.' 'Please try your upload using the' '<a href="%s">No Flash</a> version.' % reverse('noflash') ] except ValidationError, e: data['error'] = True data['messages'] = e.messages