Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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})
Exemplo n.º 4
0
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                    
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
def disclosure(request):
    # Validate all fields
    print "alive!"
    context = dict()

    if request.method == "POST":
        # Do something
        print "sending form"
        disclosure = SubmissionForm(request.POST)
        if disclosure:
            template = "disclosure_post.html"
            context['success_message'] = "Disclosure created"
            ################
            # REFACTOR
            #
            # Save it in some manner
            if disclosure.is_valid():
                new_disclosure = Disclosure()
                new_disclosure.title = disclosure.cleaned_data.get(
                    "title", None)
                new_disclosure.abstract = disclosure.cleaned_data.get(
                    "abstract", None)
                new_disclosure.abstract_file = disclosure.cleaned_data.get(
                    "abstract_file", None)
                new_disclosure.body = disclosure.cleaned_data.get("body", None)
                new_disclosure.body_file = disclosure.cleaned_data.get(
                    "body_file", None)
                new_disclosure.owner = User.objects.all()[0]

                new_disclosure.save()
                disclosure_id = new_disclosure.id
                #
                ################
            return HttpResponseRedirect(
                '/disclosure/{0}'.format(disclosure_id))

    else:
        template = "disclosure.html"
        context['error_message'] = "Invalid disclosure"
        form = SubmissionForm()
        print "getting form"
        return render(request, template, {'form': form})
Exemplo n.º 7
0
def disclosure(request):
    # Validate all fields
    print "alive!"
    context = dict()

    if request.method == "POST":
        # Do something
        print "sending form"
        disclosure = SubmissionForm(request.POST)
        if disclosure:
            template = "disclosure_post.html"
            context['success_message'] = "Disclosure created" 
            ################
            # REFACTOR
            #
            # Save it in some manner
            if disclosure.is_valid():
                new_disclosure = Disclosure()
                new_disclosure.title = disclosure.cleaned_data.get("title", None)
                new_disclosure.abstract = disclosure.cleaned_data.get("abstract", None)
                new_disclosure.abstract_file = disclosure.cleaned_data.get("abstract_file", None)
                new_disclosure.body = disclosure.cleaned_data.get("body", None)
                new_disclosure.body_file = disclosure.cleaned_data.get("body_file", None)
                new_disclosure.owner = User.objects.all()[0]
                
                new_disclosure.save()
                disclosure_id = new_disclosure.id
                # 
                ################
            return HttpResponseRedirect('/disclosure/{0}'.format(disclosure_id))

    else:            
        template = "disclosure.html"
        context['error_message'] = "Invalid disclosure" 
        form = SubmissionForm()
        print "getting form"
        return render(request, template, {'form': form})
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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