Exemplo n.º 1
0
 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
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
 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">