コード例 #1
0
def delete_submissions(request, page_id):
    if not get_forms_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    page = get_object_or_404(Page, id=page_id).specific

    # Get submissions
    submission_ids = request.GET.getlist('selected-submissions')
    submissions = page.get_submission_class()._default_manager.filter(id__in=submission_ids)

    if request.method == 'POST':
        count = submissions.count()
        submissions.delete()

        messages.success(
            request,
            ungettext(
                "One submission has been deleted.",
                "%(count)d submissions have been deleted.",
                count
            ) % {
                'count': count,
            }
        )

        return redirect('wagtailforms:list_submissions', page_id)

    return render(request, 'wagtailforms/confirm_delete.html', {
        'page': page,
        'submissions': submissions,
    })
コード例 #2
0
ファイル: views.py プロジェクト: didorothy/wagtail
def delete_submissions(request, page_id):
    if not get_forms_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    page = get_object_or_404(Page, id=page_id).specific

    # Get submissions
    submission_ids = request.GET.getlist('selected-submissions')
    submissions = page.get_submission_class()._default_manager.filter(id__in=submission_ids)

    if request.method == 'POST':
        count = submissions.count()
        submissions.delete()

        messages.success(
            request,
            ungettext(
                "One submission has been deleted.",
                "%(count)d submissions have been deleted.",
                count
            ) % {
                'count': count,
            }
        )

        return redirect('wagtailforms:list_submissions', page_id)

    return render(request, 'wagtailforms/confirm_delete.html', {
        'page': page,
        'submissions': submissions,
    })
コード例 #3
0
ファイル: views.py プロジェクト: alexgleason/wagtail
def index(request):
    form_pages = get_forms_for_user(request.user)

    paginator, form_pages = paginate(request, form_pages)

    return render(request, 'wagtailforms/index.html', {
        'form_pages': form_pages,
    })
コード例 #4
0
def index(request):
    form_pages = get_forms_for_user(request.user)

    paginator, form_pages = paginate(request, form_pages)

    return render(request, 'wagtailforms/index.html', {
        'form_pages': form_pages,
    })
コード例 #5
0
ファイル: wagtail_hooks.py プロジェクト: rclark72/wagtail
def construct_main_menu(request, menu_items):
    # show this only if the user has permission to retrieve submissions for at least one form
    if get_forms_for_user(request.user).exists():
        menu_items.append(
            MenuItem(_('Forms'),
                     urlresolvers.reverse('wagtailforms_index'),
                     classnames='icon icon-form',
                     order=700))
コード例 #6
0
ファイル: views.py プロジェクト: thrawny/wagtail
def delete_submission(request, page_id, submission_id):
    if not get_forms_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    submission = get_object_or_404(FormSubmission, id=submission_id)
    page = get_object_or_404(Page, id=page_id)

    if request.method == "POST":
        submission.delete()

        messages.success(request, _("Submission deleted."))
        return redirect("wagtailforms:list_submissions", page_id)

    return render(request, "wagtailforms/confirm_delete.html", {"page": page, "submission": submission})
コード例 #7
0
ファイル: views.py プロジェクト: wengole/wagtail
def delete_submission(request, page_id, submission_id):
    if not get_forms_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    submission = get_object_or_404(FormSubmission, id=submission_id)
    page = get_object_or_404(Page, id=page_id)

    if request.method == 'POST':
        submission.delete()

        messages.success(request, _("Submission deleted."))
        return redirect('wagtailforms:list_submissions', page_id)

    return render(request, 'wagtailforms/confirm_delete.html', {
        'page': page,
        'submission': submission
    })
コード例 #8
0
ファイル: views.py プロジェクト: alexgleason/wagtail
def delete_submission(request, page_id, submission_id):
    if not get_forms_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    page = get_object_or_404(Page, id=page_id).specific
    submission = get_object_or_404(page.get_submission_class(), id=submission_id)

    if request.method == 'POST':
        submission.delete()

        messages.success(request, _("Submission deleted."))
        return redirect('wagtailforms:list_submissions', page_id)

    return render(request, 'wagtailforms/confirm_delete.html', {
        'page': page,
        'submission': submission
    })
コード例 #9
0
def index(request):
    p = request.GET.get("p", 1)

    form_pages = get_forms_for_user(request.user)

    paginator = Paginator(form_pages, 20)

    try:
        form_pages = paginator.page(p)
    except PageNotAnInteger:
        form_pages = paginator.page(1)
    except EmptyPage:
        form_pages = paginator.page(paginator.num_pages)

    return render(request, 'wagtailforms/index.html', {
        'form_pages': form_pages,
    })
コード例 #10
0
def list_submissions(request, page_id):
    if not get_forms_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    form_page = get_object_or_404(Page, id=page_id).specific
    form_submission_class = form_page.get_submission_class()

    data_fields = form_page.get_data_fields()

    submissions = form_submission_class.objects.filter(
        page=form_page).order_by('submit_time')
    data_headings = [label for name, label in data_fields]

    select_date_form = SelectDateForm(request.GET)
    if select_date_form.is_valid():
        date_from = select_date_form.cleaned_data.get('date_from')
        date_to = select_date_form.cleaned_data.get('date_to')
        # careful: date_to should be increased by 1 day since the submit_time
        # is a time so it will always be greater
        if date_to:
            date_to += datetime.timedelta(days=1)
        if date_from and date_to:
            submissions = submissions.filter(
                submit_time__range=[date_from, date_to])
        elif date_from and not date_to:
            submissions = submissions.filter(submit_time__gte=date_from)
        elif not date_from and date_to:
            submissions = submissions.filter(submit_time__lte=date_to)

    if request.GET.get('action') == 'CSV':
        # return a CSV instead
        response = HttpResponse(content_type='text/csv; charset=utf-8')
        response['Content-Disposition'] = 'attachment;filename=export.csv'

        # Prevents UnicodeEncodeError for labels with non-ansi symbols
        data_headings = [smart_str(label) for label in data_headings]

        writer = csv.writer(response)
        writer.writerow(data_headings)
        for s in submissions:
            data_row = []
            form_data = s.get_data()
            for name, label in data_fields:
                data_row.append(smart_str(form_data.get(name)))
            writer.writerow(data_row)
        return response

    paginator, submissions = paginate(request, submissions)

    data_rows = []
    for s in submissions:
        form_data = s.get_data()
        data_row = [form_data.get(name) for name, label in data_fields]
        data_rows.append({"model_id": s.id, "fields": data_row})

    return render(
        request, 'wagtailforms/index_submissions.html', {
            'form_page': form_page,
            'select_date_form': select_date_form,
            'submissions': submissions,
            'data_headings': data_headings,
            'data_rows': data_rows
        })
コード例 #11
0
ファイル: wagtail_hooks.py プロジェクト: EricSchles/wagtail
 def is_shown(self, request):
     # show this only if the user has permission to retrieve submissions for at least one form
     return get_forms_for_user(request.user).exists()
コード例 #12
0
def list_submissions(request, page_id):
    form_page = get_object_or_404(Page, id=page_id).specific

    if not get_forms_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    data_fields = [
        (field.clean_name, field.label)
        for field in form_page.form_fields.all()
    ]

    submissions = FormSubmission.objects.filter(page=form_page)

    select_date_form = SelectDateForm(request.GET)
    if select_date_form.is_valid():
        date_from = select_date_form.cleaned_data.get('date_from')
        date_to = select_date_form.cleaned_data.get('date_to')
        # careful: date_to should be increased by 1 day since the submit_time
        # is a time so it will always be greater
        if date_to:
            date_to += datetime.timedelta(days=1)
        if date_from and date_to:
            submissions = submissions.filter(submit_time__range=[date_from, date_to])
        elif date_from and not date_to:
            submissions = submissions.filter(submit_time__gte=date_from)
        elif not date_from and date_to:
            submissions = submissions.filter(submit_time__lte=date_to)

    if request.GET.get('action') == 'CSV':
        # return a CSV instead
        response = HttpResponse(content_type='text/csv; charset=utf-8')
        response['Content-Disposition'] = 'attachment;filename=export.csv'
        writer = unicodecsv.writer(response, encoding='utf-8')

        header_row = ['Submission date'] + [label for name, label in data_fields]

        writer.writerow(header_row)
        for s in submissions:
            data_row = [s.submit_time]
            form_data = s.get_data()
            for name, label in data_fields:
                data_row.append(form_data.get(name))
            writer.writerow(data_row)
        return response

    p = request.GET.get('p', 1)
    paginator = Paginator(submissions, 20)

    try:
        submissions = paginator.page(p)
    except PageNotAnInteger:
        submissions = paginator.page(1)
    except EmptyPage:
        submissions = paginator.page(paginator.num_pages)

    data_headings = [label for name, label in data_fields]
    data_rows = []
    for s in submissions:
        form_data = s.get_data()
        data_row = [s.submit_time] + [form_data.get(name) for name, label in data_fields]
        data_rows.append(data_row)

    return render(request, 'wagtailforms/index_submissions.html', {
         'form_page': form_page,
         'select_date_form': select_date_form,
         'submissions': submissions,
         'data_headings': data_headings,
         'data_rows': data_rows
    })
コード例 #13
0
 def is_shown(self, request):
     # show this only if the user has permission to retrieve submissions for at least one form
     return get_forms_for_user(request.user).exists()
コード例 #14
0
ファイル: wagtail_hooks.py プロジェクト: Halfnhav4/wagtail
def construct_main_menu(request, menu_items):
    # show this only if the user has permission to retrieve submissions for at least one form
    if get_forms_for_user(request.user).exists():
        menu_items.append(
            MenuItem(_('Forms'), urlresolvers.reverse('wagtailforms_index'), classnames='icon icon-form', order=700)
        )
コード例 #15
0
ファイル: views.py プロジェクト: thrawny/wagtail
def list_submissions(request, page_id):
    form_page = get_object_or_404(Page, id=page_id).specific

    if not get_forms_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    data_fields = [(field.clean_name, field.label) for field in form_page.form_fields.all()]

    submissions = FormSubmission.objects.filter(page=form_page)

    select_date_form = SelectDateForm(request.GET)
    if select_date_form.is_valid():
        date_from = select_date_form.cleaned_data.get("date_from")
        date_to = select_date_form.cleaned_data.get("date_to")
        # careful: date_to should be increased by 1 day since the submit_time
        # is a time so it will always be greater
        if date_to:
            date_to += datetime.timedelta(days=1)
        if date_from and date_to:
            submissions = submissions.filter(submit_time__range=[date_from, date_to])
        elif date_from and not date_to:
            submissions = submissions.filter(submit_time__gte=date_from)
        elif not date_from and date_to:
            submissions = submissions.filter(submit_time__lte=date_to)

    if request.GET.get("action") == "CSV":
        # return a CSV instead
        response = HttpResponse(content_type="text/csv; charset=utf-8")
        response["Content-Disposition"] = "attachment;filename=export.csv"

        writer = csv.writer(response)

        header_row = ["Submission date"] + [label for name, label in data_fields]

        writer.writerow(header_row)
        for s in submissions:
            data_row = [s.submit_time]
            form_data = s.get_data()
            for name, label in data_fields:
                data_row.append(smart_str(form_data.get(name)))
            writer.writerow(data_row)
        return response

    paginator, submissions = paginate(request, submissions)

    data_headings = [label for name, label in data_fields]
    data_rows = []
    for s in submissions:
        form_data = s.get_data()
        data_row = [s.submit_time] + [form_data.get(name) for name, label in data_fields]
        data_rows.append({"model_id": s.id, "fields": data_row})

    return render(
        request,
        "wagtailforms/index_submissions.html",
        {
            "form_page": form_page,
            "select_date_form": select_date_form,
            "submissions": submissions,
            "data_headings": data_headings,
            "data_rows": data_rows,
        },
    )
コード例 #16
0
ファイル: views.py プロジェクト: thrawny/wagtail
def index(request):
    form_pages = get_forms_for_user(request.user)

    paginator, form_pages = paginate(request, form_pages)

    return render(request, "wagtailforms/index.html", {"form_pages": form_pages})
コード例 #17
0
ファイル: views.py プロジェクト: alexgleason/wagtail
def list_submissions(request, page_id):
    if not get_forms_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    form_page = get_object_or_404(Page, id=page_id).specific
    form_submission_class = form_page.get_submission_class()

    data_fields = form_page.get_data_fields()

    submissions = form_submission_class.objects.filter(page=form_page)
    data_headings = [label for name, label in data_fields]

    select_date_form = SelectDateForm(request.GET)
    if select_date_form.is_valid():
        date_from = select_date_form.cleaned_data.get('date_from')
        date_to = select_date_form.cleaned_data.get('date_to')
        # careful: date_to should be increased by 1 day since the submit_time
        # is a time so it will always be greater
        if date_to:
            date_to += datetime.timedelta(days=1)
        if date_from and date_to:
            submissions = submissions.filter(submit_time__range=[date_from, date_to])
        elif date_from and not date_to:
            submissions = submissions.filter(submit_time__gte=date_from)
        elif not date_from and date_to:
            submissions = submissions.filter(submit_time__lte=date_to)

    if request.GET.get('action') == 'CSV':
        # return a CSV instead
        response = HttpResponse(content_type='text/csv; charset=utf-8')
        response['Content-Disposition'] = 'attachment;filename=export.csv'

        # Prevents UnicodeEncodeError for labels with non-ansi symbols
        data_headings = [smart_str(label) for label in data_headings]

        writer = csv.writer(response)
        writer.writerow(data_headings)
        for s in submissions:
            data_row = []
            form_data = s.get_data()
            for name, label in data_fields:
                data_row.append(smart_str(form_data.get(name)))
            writer.writerow(data_row)
        return response

    paginator, submissions = paginate(request, submissions)

    data_rows = []
    for s in submissions:
        form_data = s.get_data()
        data_row = [form_data.get(name) for name, label in data_fields]
        data_rows.append({
            "model_id": s.id,
            "fields": data_row
        })

    return render(request, 'wagtailforms/index_submissions.html', {
        'form_page': form_page,
        'select_date_form': select_date_form,
        'submissions': submissions,
        'data_headings': data_headings,
        'data_rows': data_rows
    })
コード例 #18
0
def list_submissions(request, page_id):
    if not get_forms_for_user(request.user).filter(id=page_id).exists():
        raise PermissionDenied

    form_page = get_object_or_404(Page, id=page_id).specific
    form_submission_class = form_page.get_submission_class()

    data_fields = form_page.get_data_fields()

    ordering = form_page.get_field_ordering(request.GET.getlist('order_by'))

    # convert ordering tuples to a list of strings like ['-submit_time']
    ordering_strings = [
        '%s%s' % ('-' if order_str[1] == 'descending' else '', order_str[0])
        for order_str in ordering
    ]

    if request.GET.get('action') == 'CSV':
        #  Revert to CSV being sorted submit_time ascending for backwards compatibility
        submissions = form_submission_class.objects.filter(
            page=form_page).order_by('submit_time')
    else:
        submissions = form_submission_class.objects.filter(
            page=form_page).order_by(*ordering_strings)

    data_fields_with_ordering = []
    for name, label in data_fields:
        order = None
        for order_value in [o[1] for o in ordering if o[0] == name]:
            order = order_value
        data_fields_with_ordering.append({
            "name": name,
            "label": label,
            "order": order,
        })

    data_headings = [label for name, label in data_fields]

    select_date_form = SelectDateForm(request.GET)
    if select_date_form.is_valid():
        date_from = select_date_form.cleaned_data.get('date_from')
        date_to = select_date_form.cleaned_data.get('date_to')
        # careful: date_to should be increased by 1 day since the submit_time
        # is a time so it will always be greater
        if date_to:
            date_to += datetime.timedelta(days=1)
        if date_from and date_to:
            submissions = submissions.filter(
                submit_time__range=[date_from, date_to])
        elif date_from and not date_to:
            submissions = submissions.filter(submit_time__gte=date_from)
        elif not date_from and date_to:
            submissions = submissions.filter(submit_time__lte=date_to)

    if request.GET.get('action') == 'CSV':
        # return a CSV instead
        response = HttpResponse(content_type='text/csv; charset=utf-8')
        response['Content-Disposition'] = 'attachment;filename=export.csv'

        # Prevents UnicodeEncodeError for labels with non-ansi symbols
        data_headings = [smart_str(label) for label in data_headings]

        writer = csv.writer(response)
        writer.writerow(data_headings)
        for s in submissions:
            data_row = []
            form_data = s.get_data()
            for name, label in data_fields:
                val = form_data.get(name)
                if isinstance(val, list):
                    val = ', '.join(val)
                data_row.append(smart_str(val))
            writer.writerow(data_row)
        return response

    paginator, submissions = paginate(request, submissions)

    data_rows = []
    for s in submissions:
        form_data = s.get_data()
        data_row = []
        for name, label in data_fields:
            val = form_data.get(name)
            if isinstance(val, list):
                val = ', '.join(val)
            data_row.append(val)
        data_rows.append({"model_id": s.id, "fields": data_row})

    return render(
        request, 'wagtailforms/index_submissions.html', {
            'form_page': form_page,
            'select_date_form': select_date_form,
            'submissions': submissions,
            'data_fields_with_ordering': data_fields_with_ordering,
            'data_rows': data_rows
        })