diff --git a/rigForms/views.py b/rigForms/views.py index 8d6b8cce..2fa8ea3e 100644 --- a/rigForms/views.py +++ b/rigForms/views.py @@ -89,11 +89,12 @@ class FormList(generic.ListView): return context class FormPrint(generic.TemplateView): + indentBy = 20 + 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 + children = self._render_field(field["properties"], value, current_indent + self.indentBy) + template = get_template('rigForms/print/render-object.xml') context = { 'field': field, @@ -113,26 +114,20 @@ class FormPrint(generic.TemplateView): 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): + # Append the item number onto the item title 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)) + thisField["title"] = thisField.get("title","Item") + " " + str(key+1) + children.append(self._render_field_item(thisField,item,current_indent+self.indentBy)) except TypeError: numberOfChildren = 0 - current_indent -= 20 - template = get_template('rigForms/print/render-array.xml') context = { 'field': field, @@ -151,40 +146,34 @@ class FormPrint(generic.TemplateView): return template.render(context) def _render_field_item(self, field, value, current_indent): + renderFunctions = { + "object": self._render_object, + "string": self._render_string, + "number": self._render_string, + "integer": self._render_string, + "array": self._render_array, + "boolean": self._render_boolean, + + #error values: + "unknown": lambda: "