def queryForm(self): top = "<form action='/report' method='get'>" bottom_template = "<input type='hidden' name='query_made' value='yes'/><input type='hidden' name='reportname'/><input type='submit' class='submit' value='get report'/></form>" defaults = {"query_made": "yes", "reportname": self.metadata['action']} parser = htmlfill.FillingParser(defaults) parser.feed(bottom_template) parser.close() html = top + self._queryForm() + parser.text() return html
def run_filename(filename): f = open(filename) content = f.read() f.close() parts = re.split(r'---*', content) template = parts[0] expected = parts[1] if len(parts) == 3: data_content = parts[2].strip() elif len(parts) > 3: assert False, "Too many sections: %s" % parts[3:] else: data_content = '' namespace = {} if data_content: exec data_content in namespace data = namespace.copy() data['defaults'] = data.get('defaults', {}) if 'check' in data: checker = data.pop('check') else: def checker(p, s): pass for name in data.keys(): if name.startswith('_') or hasattr('__builtin__', name): del data[name] listener = htmlfill_schemabuilder.SchemaBuilder() p = htmlfill.FillingParser(listener=listener, **data) p.feed(template) p.close() output = p.text() def reporter(v): print v try: output_xml = ET.XML(output) expected_xml = ET.XML(expected) except XMLParseError: comp = output.strip() == expected.strip() else: comp = xml_compare(output_xml, expected_xml, reporter) if not comp: print '---- Output: ----' print output print '---- Expected: ----' print expected assert False checker(p, listener.schema()) checker(p, htmlfill_schemabuilder.parse_schema(template))
def handleString(self, col): # look at http://formencode.org/docs/htmlfill.html form_fragment = """<label class='textbox' for='id_%s'> %s </label> <input class='textbox' type='text' name='%s' id='id_%s'/> """ % (col.name, col.name, col.name, col.name) value = getattr(self, col.name) if 'tostring' in dir(value): print "converting" value = value.tostring() defaults = {col.name: value} parser = htmlfill.FillingParser(defaults) parser.feed(form_fragment) parser.close() html_fragment = parser.text() return html_fragment + "<br />"
def handleString(col): # look at http://formencode.org/docs/htmlfill.html form_fragment = """<label class='textbox' for='id_%s'> %s </label> <input class='textbox' type='text' name='%s' id='id_%s'/> """ % ( col.name, col.name, col.name, col.name, ) value = getattr(cls, col.name) if "tostring" in dir(value): value = value.tostring() parser = htmlfill.FillingParser({}) parser.feed(form_fragment) parser.close() html_fragment = parser.text() return html_fragment + "<br />"
def handleString(col, readOnly=False): if readOnly: readOnlyFragment = "disabled='disabled'" else: readOnlyFragment = "" # look at http://formencode.org/docs/htmlfill.html if getattr(col, "length", 0) and getattr(col, "length", 0) < 256: form_fragment = """<label class='textbox' for='id_%s'> %s </label> <input class='textbox' type='text' name='%s' id='id_%s' %s/> """ % ( col.name, col.name, col.name, col.name, readOnlyFragment, ) else: form_fragment = """<label class='textbox' for='id_%s'> %s </label> <textarea rows=%s class='textbox' type='text' name='%s' id='id_%s' %s/> """ % ( 5, col.name, col.name, col.name, col.name, readOnlyFragment, ) value = getattr(self, col.name) if "tostring" in dir(value): value = value.tostring() defaults = {col.name: value} parser = htmlfill.FillingParser(defaults) parser.feed(form_fragment) parser.close() html_fragment = parser.text() return html_fragment + "<br />"
'name': 'Bob Jones', 'occupation': 'Crazy Cultist', 'address': '14 W. Canal\nNew Guinea', 'living': 'no', 'nice_guy': 0 } errors ={ 'occupation': 'Culivist is not allowed here.' } def mydefault_formatter(error): s="<ERROR>%s</ERROR>" % error return s parser = htmlfill.FillingParser( defaults, errors, error_formatters={'myformatter':mydefault_formatter} ) parser.feed(""" <myform> <form:error name="occupation" format="myformatter"> <input type="text" name="name" value="fill"> <select name="occupation"> <option value="">Default</option> <option value="Crazy Cultist">Crazy cultist</option> </select> <textarea cols=20 style="width: 100%" name="address">An address</textarea> <input type="radio" name="living" value="yes"> <input type="radio" name="living" value="no"> <input type="checkbox" name="nice_guy" checked="checked">