Source code for fobi.contrib.plugins.form_handlers.db_store.views
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from .....base import (
get_form_handler_plugin_widget,
get_form_wizard_handler_plugin_widget,
)
from . import UID
from .helpers import DataExporter
from .models import SavedFormDataEntry, SavedFormWizardDataEntry
__title__ = "fobi.contrib.plugins.form_handlers.db_store.views"
__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
__copyright__ = "Copyright (c) 2014-2019 Artur Barseghyan"
__license__ = "GPL 2.0/LGPL 2.1"
__all__ = (
"view_saved_form_data_entries",
"export_saved_form_data_entries",
"view_saved_form_wizard_data_entries",
"export_saved_form_wizard_data_entries",
)
# *****************************************************************************
# *************************** Form handler views ******************************
# *****************************************************************************
# entries_permissions = [
# 'db_store.add_savedformdataentry',
# 'db_store.change_savedformdataentry',
# 'db_store.delete_savedformdataentry',
# ]
# @permissions_required(satisfy=SATISFY_ANY, perms=entries_permissions)
[docs]@login_required
def view_saved_form_data_entries(
request,
form_entry_id=None,
theme=None,
template_name="db_store/view_saved_form_data_entries.html",
):
"""View saved form data entries.
:param django.http.HttpRequest request:
:param int form_entry_id: Form ID.
:param fobi.base.BaseTheme theme: Subclass of ``fobi.base.BaseTheme``.
:param string template_name:
:return django.http.HttpResponse:
"""
entries = SavedFormDataEntry._default_manager.select_related(
"form_entry"
).filter(form_entry__user__pk=request.user.pk)
if form_entry_id:
entries = entries.filter(form_entry__id=form_entry_id)
context = {"entries": entries, "form_entry_id": form_entry_id}
# If given, pass to the template (and override the value set by
# the context processor.
if theme:
context.update({"fobi_theme": theme})
widget = get_form_handler_plugin_widget(
UID, request=request, as_instance=True, theme=theme
)
if widget and widget.view_saved_form_data_entries_template_name:
template_name = widget.view_saved_form_data_entries_template_name
return render(request, template_name, context)
[docs]@login_required
def export_saved_form_data_entries(request, form_entry_id=None, theme=None):
"""Export saved form data entries.
:param django.http.HttpRequest request:
:param int form_entry_id: Form ID.
:param fobi.base.BaseTheme theme: Subclass of ``fobi.base.BaseTheme``.
:return django.http.HttpResponse:
"""
entries = SavedFormDataEntry._default_manager.select_related(
"form_entry"
).filter(form_entry__user__pk=request.user.pk)
if form_entry_id:
entries = entries.filter(form_entry__id=form_entry_id)
data_exporter = DataExporter(entries, ["form_entry"])
return data_exporter.graceful_export()
# *****************************************************************************
# ************************ Form wizard handler views *************************
# *****************************************************************************
[docs]@login_required
def view_saved_form_wizard_data_entries(
request,
form_wizard_entry_id=None,
theme=None,
template_name="db_store/view_saved_form_wizard_data_entries.html",
):
"""View saved form wizard data entries.
:param django.http.HttpRequest request:
:param int form_wizard_entry_id: Form ID.
:param fobi.base.BaseTheme theme: Subclass of ``fobi.base.BaseTheme``.
:param string template_name:
:return django.http.HttpResponse:
"""
entries = SavedFormWizardDataEntry._default_manager.select_related(
"form_wizard_entry"
).filter(form_wizard_entry__user__pk=request.user.pk)
if form_wizard_entry_id:
entries = entries.filter(form_wizard_entry__id=form_wizard_entry_id)
context = {"entries": entries, "form_wizard_entry_id": form_wizard_entry_id}
# If given, pass to the template (and override the value set by
# the context processor.
if theme:
context.update({"fobi_theme": theme})
widget = get_form_wizard_handler_plugin_widget(
UID, request=request, as_instance=True, theme=theme
)
if widget and widget.view_saved_form_wizard_data_entries_template_name:
template_name = widget.view_saved_form_wizard_data_entries_template_name
return render(request, template_name, context)
[docs]@login_required
def export_saved_form_wizard_data_entries(
request, form_wizard_entry_id=None, theme=None
):
"""Export saved form wizard data entries.
:param django.http.HttpRequest request:
:param int form_wizard_entry_id: Form ID.
:param fobi.base.BaseTheme theme: Subclass of ``fobi.base.BaseTheme``.
:return django.http.HttpResponse:
"""
entries = SavedFormWizardDataEntry._default_manager.select_related(
"form_wizard_entry"
).filter(form_wizard_entry__user__pk=request.user.pk)
if form_wizard_entry_id:
entries = entries.filter(form_wizard_entry__id=form_wizard_entry_id)
data_exporter = DataExporter(entries, ["form_wizard_entry"])
return data_exporter.graceful_export()