diff --git a/loaders/python/formLoader.py b/loaders/python/formLoader.py new file mode 100644 index 0000000..dd26a6b --- /dev/null +++ b/loaders/python/formLoader.py @@ -0,0 +1,191 @@ +#!/usr/bin/env python + +__author__ = 'Linggar Primahastoko' + +import re +import json + +class formLoader: + + def __init__(self, form_json, form_action): + self.form_data = json.loads(form_json.replace('\\', '')) + self.action = form_action + + def render_form(self): + """ + Render Form + """ + if (not self.form_data or not self.action): + return False + + fields = '' + + for field in self.form_data['fields']: + + if field['type'] == 'element-single-line-text': + fields += self.element_single_line_text(field) + + if field['type'] == 'element-number': + fields += self.element_number(field) + + if field['type'] == 'element-paragraph-text': + fields += self.element_paragraph_text(field) + + if field['type'] == 'element-checkboxes': + fields += self.element_checkboxes(field) + + if field['type'] == 'element-multiple-choice': + fields += self.element_multiple_choice(field) + + if field['type'] == 'element-dropdown': + fields += self.element_dropdown(field) + + if field['type'] == 'element-section-break': + fields += self.element_section_break(field) + + form = self.open_form(fields) + + return form + + def open_form(self, fields): + """ + Render the form header + """ + html = '''
''' + + return html + + def encode_element_title(self, title): + """ + Encode Element Title + """ + clean_string = re.compile(r"[^a-zA-Z0-9.-_]") + + string = title.lower().replace(' ', '_') + string = re.sub(clean_string, '', string) + + return string + + def make_label(self, id, title, required): + """ + Get formatted label for form element + """ + if required: + html = ''''''.format(id, title) + else: + html = ''''''.format(id, title) + + return html + + def element_single_line_text(self, field): + """ + Render single line text + """ + id = self.encode_element_title(field['title']) + required = 'required' if field['required'] else False + + html = '''{1}
'''.format(field['title'], field['string']) + html += '''