From ca8ba10efaa2903b05ba012971dd747297587fde Mon Sep 17 00:00:00 2001 From: David Taylor Date: Sun, 9 Aug 2015 23:39:03 +0300 Subject: [PATCH] Added printing --- .../images/form-print/checked_checkbox.jpg | Bin 0 -> 4530 bytes .../images/form-print/unchecked_checkbox.jpg | Bin 0 -> 6280 bytes rigForms/templates/rigForms/form_print.xml | 96 +++++++++++ .../templates/rigForms/form_print_page.xml | 17 ++ .../templates/rigForms/print/render-array.xml | 16 ++ .../rigForms/print/render-boolean.xml | 15 ++ .../rigForms/print/render-object.xml | 14 ++ .../rigForms/print/render-string.xml | 12 ++ rigForms/urls.py | 1 + rigForms/views.py | 153 ++++++++++++++++++ 10 files changed, 324 insertions(+) create mode 100644 rigForms/static/images/form-print/checked_checkbox.jpg create mode 100644 rigForms/static/images/form-print/unchecked_checkbox.jpg create mode 100644 rigForms/templates/rigForms/form_print.xml create mode 100644 rigForms/templates/rigForms/form_print_page.xml create mode 100644 rigForms/templates/rigForms/print/render-array.xml create mode 100644 rigForms/templates/rigForms/print/render-boolean.xml create mode 100644 rigForms/templates/rigForms/print/render-object.xml create mode 100644 rigForms/templates/rigForms/print/render-string.xml diff --git a/rigForms/static/images/form-print/checked_checkbox.jpg b/rigForms/static/images/form-print/checked_checkbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9de2c75c73d73ea6654bd682e2298c162ff0747e GIT binary patch literal 4530 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 GNc|V`HvQ`W literal 0 HcmV?d00001 diff --git a/rigForms/static/images/form-print/unchecked_checkbox.jpg b/rigForms/static/images/form-print/unchecked_checkbox.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c602955c342f95e378e743ba909a596ee603be89 GIT binary patch literal 6280 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 literal 0 HcmV?d00001 diff --git a/rigForms/templates/rigForms/form_print.xml b/rigForms/templates/rigForms/form_print.xml new file mode 100644 index 00000000..3e192c6e --- /dev/null +++ b/rigForms/templates/rigForms/form_print.xml @@ -0,0 +1,96 @@ + +{% load multiply from filters %} +{% load static %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hello this is some text + {% include "rigForms/form_print_page.xml" %} + + + \ No newline at end of file diff --git a/rigForms/templates/rigForms/form_print_page.xml b/rigForms/templates/rigForms/form_print_page.xml new file mode 100644 index 00000000..1060f43a --- /dev/null +++ b/rigForms/templates/rigForms/form_print_page.xml @@ -0,0 +1,17 @@ + + + + + {% autoescape off %} + + + + +{{ formData }} + + +{% endautoescape %} + + + + \ No newline at end of file diff --git a/rigForms/templates/rigForms/print/render-array.xml b/rigForms/templates/rigForms/print/render-array.xml new file mode 100644 index 00000000..6f410cfe --- /dev/null +++ b/rigForms/templates/rigForms/print/render-array.xml @@ -0,0 +1,16 @@ +{# "field" context should have "title", "description" and "value" #} +{# "children" context should be a string of inner XML #} + + + +

{{field.title}}

+ +
+ +{% autoescape off %} + +{% for child in children %} + {{ child }} +{% endfor %} + +{% endautoescape %} \ No newline at end of file diff --git a/rigForms/templates/rigForms/print/render-boolean.xml b/rigForms/templates/rigForms/print/render-boolean.xml new file mode 100644 index 00000000..74474b0a --- /dev/null +++ b/rigForms/templates/rigForms/print/render-boolean.xml @@ -0,0 +1,15 @@ +{# "field" context should have "title", "description"} + + + + + {% if value %} + + {% else %} + + {% endif %} + +

{{field.title}}

+ {{field.description}} + +
\ No newline at end of file diff --git a/rigForms/templates/rigForms/print/render-object.xml b/rigForms/templates/rigForms/print/render-object.xml new file mode 100644 index 00000000..a7769fe5 --- /dev/null +++ b/rigForms/templates/rigForms/print/render-object.xml @@ -0,0 +1,14 @@ +{# "field" context should have "title", "description" and "value" #} +{# "children" context should be a string of inner XML #} + + + +

{{field.title}}

+ +
+ +{% autoescape off %} + +{{ children }} + +{% endautoescape %} \ No newline at end of file diff --git a/rigForms/templates/rigForms/print/render-string.xml b/rigForms/templates/rigForms/print/render-string.xml new file mode 100644 index 00000000..d05758fd --- /dev/null +++ b/rigForms/templates/rigForms/print/render-string.xml @@ -0,0 +1,12 @@ +{# "field" context should have "title", "description" and "value"} + + + + +

{{field.title}}

+ {{field.description}} + + + {{value}} + +
\ No newline at end of file diff --git a/rigForms/urls.py b/rigForms/urls.py index 30c56091..abec91a0 100644 --- a/rigForms/urls.py +++ b/rigForms/urls.py @@ -11,5 +11,6 @@ urlpatterns = patterns('', name='update_form'), url(r'^for-event/(?P\d+)/$', permission_required_with_403('rigForms.view_form')(views.FormList.as_view()), name='form_list'), + url(r'^(?P\d+)/print/$', permission_required_with_403('rigForms.view_form')(views.FormPrint.as_view()), name='form_print'), ) diff --git a/rigForms/views.py b/rigForms/views.py index f22f80f7..14a7bd7f 100644 --- a/rigForms/views.py +++ b/rigForms/views.py @@ -7,6 +7,18 @@ from django.http.response import HttpResponseRedirect from django.core.urlresolvers import reverse_lazy, reverse, NoReverseMatch from django.db.models import Q +import json +from collections import OrderedDict +from z3c.rml import rml2pdf +from django.template.loader import get_template +from django.template import RequestContext +import cStringIO as StringIO +import re +import copy + + +from django.http import HttpResponse + import RIGS class FormCreate(generic.CreateView): @@ -76,5 +88,146 @@ class FormList(generic.ListView): return context +class FormPrint(generic.TemplateView): + def _render_object(self, field, value, current_indent): + # Render all the child form bits first + current_indent += 20 + children = self._render_field(field["properties"], value, current_indent) + current_indent -= 20 + template = get_template('rigForms/print/render-object.xml') + context = { + 'field': field, + 'children': children, + 'currentIndent':current_indent + } + return template.render(context) + + def _render_string(self, field, value, current_indent): + template = get_template('rigForms/print/render-string.xml') + context = { + 'field': field, + 'currentIndent':current_indent, + 'value':value + } + return template.render(context) + + def _render_array(self, field, value, current_indent): + # Render all the child form bits first + current_indent += 20 + children=[] + + try: + numberOfChildren = len(value) + + for key,item in enumerate(value): + thisField = copy.deepcopy(field["items"]) + try: + thisField["title"] = thisField["title"] + " " + str(key+1) + except KeyError: + pass + + children.append(self._render_field_item(thisField,item,current_indent)) + + except TypeError: + numberOfChildren = 0 + + current_indent -= 20 + + template = get_template('rigForms/print/render-array.xml') + context = { + 'field': field, + 'children': children, + 'currentIndent':current_indent + } + return template.render(context) + + + def _render_boolean(self, field, value, current_indent): + template = get_template('rigForms/print/render-boolean.xml') + context = { + 'field': field, + 'currentIndent':current_indent, + 'value':value + } + return template.render(context) + + def _render_field_item(self, field, value, current_indent): + result = "" + if type(field) is OrderedDict: + + if "type" in field: + if field["type"] == "object": + rendered = self._render_object(field,value,current_indent) + elif field["type"] == "string": + rendered = self._render_string(field,value,current_indent) + elif field["type"] == "array": + rendered = self._render_array(field,value,current_indent) + elif field["type"] == "boolean": + rendered = self._render_boolean(field,value,current_indent) + else: + rendered = "

an unknown field

" + # self._render_field(field,value,current_indent) + else: + rendered = "

No type:" + str(key) + str(field) + "

" + + result += rendered + else: + result += "

Not ordereddict:" + str(key) + str(field) + "

" + + return result + + + def _render_field(self, parentField, parentValue, current_indent): + result = "" + for (key,field) in parentField.items(): + try: + value = parentValue[str(key)] + except KeyError: + value = None + except TypeError: + value = None + + result += self._render_field_item(field, value, current_indent) + + return result + + def get(self, request, pk): + form = get_object_or_404(models.Form, pk=pk) + + jsonSchema = json.loads(form.schema.schema, object_pairs_hook=OrderedDict) + jsonData = json.loads(form.data, object_pairs_hook=OrderedDict) + + formData = self._render_field(jsonSchema["properties"], jsonData, 0) + + # For development return the raw string + # response = HttpResponse() + # response.write(pdfData) + # return response + + template = get_template('rigForms/form_print.xml') + + context = RequestContext(request, { + 'fonts': { + 'opensans': { + 'regular': 'RIGS/static/fonts/OPENSANS-REGULAR.TTF', + 'bold': 'RIGS/static/fonts/OPENSANS-BOLD.TTF', + } + }, + 'formData':formData + }) + + rml = template.render(context) + buffer = StringIO.StringIO() + + buffer = rml2pdf.parseString(rml) + + pdfData = buffer.read() + + # escapedEventName = re.sub('[^a-zA-Z0-9 \n\.]', '', object.name) + + response = HttpResponse(content_type='application/pdf') + response['Content-Disposition'] = "filename=Form.pdf" + response.write(pdfData) + return response