Beispiel #1
0
 def test_quicksearchform(self):
     from crispy_forms.templatetags.crispy_forms_filters import as_crispy_form
     data = {'q_quick_search_kw': 'keyword'}
     form = QuickSearchForm(data)
     form.is_valid()
     self.assertEqual('keyword', form.cleaned_data['q_quick_search_kw'])
     self.assertTrue('id_q_quick_search_kw' in as_crispy_form(form))
Beispiel #2
0
 def test_quicksearchform(self):
     from crispy_forms.templatetags.crispy_forms_filters import as_crispy_form
     data = {'q_quick_search_kw': 'keyword'}
     form = QuickSearchForm(data)
     form.is_valid()
     self.assertEqual('keyword', form.cleaned_data['q_quick_search_kw'])
     self.assertTrue('id_q_quick_search_kw' in as_crispy_form(form))
Beispiel #3
0
def create_question(request, story):
    f = QuestionCreateForm(request.POST)
    if f.is_valid():
        o = f.save(commit=False)
        o.story = story
        o.user = request.user
        o.save()
        return JSONResponse({'result': render_to_string('lqa/_question.html', {'question': o})})
    else:
        return JSONResponse({'form': as_crispy_form(f)})
Beispiel #4
0
def edit_question(request, story, question_id):
    q = Question.objects.get(id=question_id)
    f = QuestionCreateForm(request.POST, instance=q)
    if f.is_valid():
        o = f.save(commit=False)
        o.story = story
        o.user = request.user
        o.save()
        return JSONResponse({'result': render_to_string('lqa/_question.html', {'question': o})})
    else:
        return JSONResponse({'form': as_crispy_form(f)})
Beispiel #5
0
def render_form(form):
    """same than  {{ form|crispy }} if crispy_forms is installed.
    render using a bootstrap3 templating otherwise"""

    if 'crispy_forms' in settings.INSTALLED_APPS:
        from crispy_forms.templatetags.crispy_forms_filters import as_crispy_form
        return as_crispy_form(form)

    template = get_template("bootstrap/form.html")
    form = _preprocess_fields(form)

    return template.render({"form": form})
Beispiel #6
0
def render_form(form):
    """same than  {{ form|crispy }} if crispy_forms is installed.
    render using a bootstrap3 templating otherwise"""

    if 'crispy_forms' in settings.INSTALLED_APPS:
        from crispy_forms.templatetags.crispy_forms_filters import as_crispy_form
        return as_crispy_form(form)

    template = get_template("bootstrap/form.html")
    form = _preprocess_fields(form)

    return template.render({"form": form})
Beispiel #7
0
def get_metadata_form(request):
    paper = get_object_or_404(Paper, pk=request.GET.get('paper'))
    repo = get_object_or_404(Repository, pk=request.GET.get('repository'))
    protocol = repo.protocol_for_deposit(paper, request.user)
    if protocol is None:
        logger.warning("No protocol")
        return {'status': 'repoNotAvailable',
                'message': _('This repository is not available for this paper.')}

    form = protocol.get_form()
    return {'status': 'success',
            'form': as_crispy_form(form)}
Beispiel #8
0
def get_metadata_form(request):
    paper = get_object_or_404(Paper, pk=request.GET.get('paper'))
    repo = get_object_or_404(Repository, pk=request.GET.get('repository'))
    protocol = repo.protocol_for_deposit(paper, request.user)
    if protocol is None:
        print "no protocol"
        return {'status': 'repoNotAvailable',
                'message': _('This repository is not available for this paper.')}

    form = protocol.get_form()
    return {'status': 'success',
            'form': as_crispy_form(form)}
Beispiel #9
0
def create_question(request, story):
    f = QuestionCreateForm(request.POST)
    if f.is_valid():
        o = f.save(commit=False)
        o.story = story
        o.user = request.user
        o.save()
        return JSONResponse({
            'result':
            render_to_string('lqa/_question.html', {'question': o})
        })
    else:
        return JSONResponse({'form': as_crispy_form(f)})
Beispiel #10
0
def get_metadata_form(request):
    repo = get_object_or_404(Repository, pk=request.GET.get('repository'))
    if not repo.enabled:
        return HttpResponseForbidden(_('This repository is currently not enabled.'))
    paper = get_object_or_404(Paper, pk=request.GET.get('paper'))
    protocol = repo.protocol_for_deposit(paper, request.user)
    if protocol is None:
        logger.warning("No protocol")
        return {'status': 'repoNotAvailable',
                'message': _('This repository is not available for this paper.')}

    form = protocol.get_form()
    return {'status': 'success',
            'form': as_crispy_form(form)}
Beispiel #11
0
def edit_question(request, story, question_id):
    q = Question.objects.get(id=question_id)
    f = QuestionCreateForm(request.POST, instance=q)
    if f.is_valid():
        o = f.save(commit=False)
        o.story = story
        o.user = request.user
        o.save()
        return JSONResponse({
            'result':
            render_to_string('lqa/_question.html', {'question': o})
        })
    else:
        return JSONResponse({'form': as_crispy_form(f)})
Beispiel #12
0
 def crispy(form):
     return as_crispy_form(form, 'Bootstrap3', form.helper.label_class, form.helper.field_class)
Beispiel #13
0
def submitDeposit(request, pk):
    paper = get_object_or_404(Paper, pk=pk)
    context = {'status': 'error'}
    form = PaperDepositForm(data=request.POST)
    if not form.is_valid():
        context['form'] = form.errors
        context['message'] = _("Not all fields have been filled correctly.")
        return context, 400

    # This validation could take place in the form (but we need access to the
    # paper and user?)
    repository = form.cleaned_data['radioRepository']
    protocol = repository.protocol_for_deposit(paper, request.user)
    if protocol is None:
        context['radioRepository'] = _(
            "This repository cannot be used for this paper.")
        return context, 400

    repositoryForm = protocol.get_bound_form(request.POST)

    if not repositoryForm.is_valid():
        context['form_html'] = as_crispy_form(repositoryForm)
        context['message'] = _("Not all fields have been filled correctly.")
        return context, 400

    # Store the repository as in the user preferences
    userprefs = UserPreferences.get_by_user(request.user)
    userprefs.last_repository = repository
    userprefs.save(update_fields=['last_repository'])

    # Check that the paper has been uploaded by the same user
    pdf = form.cleaned_data['file_id']
    if pdf.user != request.user:
        context['message'] = _('Access to the PDF was denied.')
        return context, 400

    # Submit the paper to the repository
    path = os.path.join(settings.MEDIA_ROOT, pdf.file.name)

    # Create initial record
    d = DepositRecord(
            paper=paper,
            user=pdf.user,
            repository=repository,
            upload_type=form.cleaned_data['radioUploadType'],
            file=pdf)
    d.save()

    submitResult = protocol.submit_deposit_wrapper(path, repositoryForm)

    d.request = submitResult.logs
    if submitResult.status == 'failed':
        context['message'] = submitResult.message
        d.save()
        # Send the failed deposit as error to sentry
        msg = "Deposit failed for id %s for paper %s \n\n" % (d.pk, paper.pk)
        logger.error(msg + submitResult.logs)
        return context, 400

    d.identifier = submitResult.identifier
    d.additional_info = submitResult.additional_info
    d.status = submitResult.status
    d.oairecord = submitResult.oairecord
    d.license = submitResult.license
    d.pub_date = submitResult.embargo_date
    if d.pub_date is None and d.status == 'published':
        d.pub_date = date.today()
    d.save()
    paper.update_availability()
    paper.save()
    paper.update_index()

    context['status'] = 'success'
    # TODO change this (we don't need it)
    context['upload_id'] = d.id
    return context
Beispiel #14
0
def crispy(form):
    return as_crispy_form(form)
Beispiel #15
0
def crispy_form_horizontal(form, config='col-md-4,col-md-8'):
    label_class, field_class = config.split(',')
    form = as_crispy_form(form, label_class=label_class, field_class=field_class)
    return form