PK•b<5“×2EGG-INFO/dependency_links.txt PK•b<5“×2EGG-INFO/not-zip-safe PK•b<5ZŽË¦¦EGG-INFO/PKG-INFOMetadata-Version: 1.0 Name: FormBuild Version: 0.1.6b Summary: Form generation tools to complement FormEncode Home-page: http://formbuild.org Author: James Gardner Author-email: james@pythonweb.org License: MIT Description: Form generation tools to complement FormEncode `Development version `_ Platform: UNKNOWN PK•b<5n`¦„EGG-INFO/requires.txtWebHelpers>=0.1PK•b<5›ß½¶HHEGG-INFO/SOURCES.txtsetup.cfg setup.py FormBuild.egg-info/PKG-INFO FormBuild.egg-info/SOURCES.txt FormBuild.egg-info/dependency_links.txt FormBuild.egg-info/not-zip-safe FormBuild.egg-info/requires.txt FormBuild.egg-info/top_level.txt formbuild/__init__.py formbuild/builder/__init__.py formbuild/builder/field/__init__.py formbuild/builder/field/basic.py formbuild/builder/field/compound.py formbuild/builder/layout/__init__.py formbuild/builder/layout/basic.py formbuild/builder/layout/pages.py formbuild/creator/__init__.py formbuild/form/__init__.py formbuild/modifier/__init__.py PK•b<5bå* EGG-INFO/top_level.txtformbuild PKšb<5%þŒŒformbuild/__init__.py"""FormBuild - Helpful tools to generate HTML forms, designed to complement FormEncode (C) James Gardner 2005 MIT Licence see FormBuild.__copyright__""" __docformat__ = "restructuredtext" from formbuild.form import Form __copyright__ = """ Copyright (c) 2005 James Gardner All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author or contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ def handle(schema, template, form=None, data=None, params=None, context=None, render_response=None, fragment=False): if data == None: data = {} else: if not isinstance(data, dict): raise TypeError('Expected data to be a dictionary') #~ values = {} #~ for k in data.c.keys(): #~ values[k] = getattr(data, k) #~ data = values import formencode if params == None: from pylons import request params = {} for k in request.params.keys(): v = request.params.getall(k) if len(v) == 1: params[k] = v[0] else: params[k] = v if context == None: from pylons import c as context if not form: form = Form if not render_response: from pylons.templating import render_response c = context errors = {} data.update(params) results=data if len(params): try: results = schema.to_python(results, state=c) except formencode.Invalid, e: errors = e.error_dict or {} c.form = form(results, errors) if not len(params) or errors: return results, errors, render_response(template, fragment=fragment) return results, errors, '' """ # Some new thoughts for a better handle() import formbuild import formencode # in a controller def email_form(self): if len(request.params): try: results = schema.to_python(results, state=c) except formencode.Invalid, e: errors = e.error_dict or {} results = e.values c.form = form(dict(request.params), errors) return submitted, results, errors, render_response(template, fragment=fragment) else: c.form = form(results, {}) return results, {}, None else: return {}, {}, render_response(template, fragment=fragment) class ProcessedForm: def __init__(self, defaults={}, submitted={}, results={}, response={}, errors={}): self.submitted=submitted self.defaults=defaults self.results = results self.response = response self.errors = errors self.valid = False if not self.response: self.valid = True def pylons_render_form(template, form, **options): fragment = options.get('fragment', False) from pylons.templating import render_response from pylons import c c.form = form return render_response(template, fragment=fragment) def handle(schema, template, form=None, defaults={}, submitted={}, render_from=pylons_render_form, render_options={}): defaults.update(submitted) """ PK–b<5Ô-Âå å formbuild/__init__.pyc;ò °Ec@s>dZdZdklZdZeeeeeed„ZdS(s“FormBuild - Helpful tools to generate HTML forms, designed to complement FormEncode (C) James Gardner 2005 MIT Licence see FormBuild.__copyright__srestructuredtext(sForms» Copyright (c) 2005 James Gardner All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of the author or contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. cCsÒ|tjo h}n"t|tƒ otdƒ‚ndk} |tjordkl}h}x\|ii ƒD]G} |ii | ƒ}t |ƒdjo|d|| YAHOO.namespace("example.calendar"); function init''') lines.append( name ) # SOURCE LINE 9 lines.append('''() { this.today = new Date(); var thisMonth = this.today.getMonth(); var thisDay = this.today.getDate(); var thisYear = this.today.getFullYear(); this.link''') lines.append( name ) lines.append(''' = document.getElementById(\'dateLink''') lines.append( name ) # SOURCE LINE 10 lines.append('''\'); this.''') lines.append( name ) lines.append(''' = document.getElementById(\'''') lines.append( name ) # SOURCE LINE 11 lines.append('''\'); this.selMonth''') lines.append( name ) lines.append(''' = document.getElementById(\'selMonth''') lines.append( name ) # SOURCE LINE 12 lines.append('''\'); this.selDay''') lines.append( name ) lines.append(''' = document.getElementById(\'selDay''') lines.append( name ) # SOURCE LINE 13 lines.append('''\'); this.selYear''') lines.append( name ) lines.append(''' = document.getElementById(\'selYear''') lines.append( name ) # SOURCE LINE 14 lines.append('''\'); YAHOO.example.calendar.cal''') lines.append( name ) lines.append(''' = new YAHOO.widget.Calendar2up("YAHOO.example.calendar.cal''') lines.append( name ) lines.append('''","container''') lines.append( name ) lines.append('''",(this.selMonth''') lines.append( name ) lines.append('''.value)+"/"+(this.selYear''') lines.append( name ) lines.append('''.value),(this.selMonth''') lines.append( name ) lines.append('''.value)+"/"+this.selDay''') lines.append( name ) lines.append('''.value+"/"+(this.selYear''') lines.append( name ) # SOURCE LINE 15 lines.append('''.value)); YAHOO.example.calendar.cal''') lines.append( name ) lines.append('''.title = "''') lines.append( title ) # SOURCE LINE 16 lines.append('''"; YAHOO.example.calendar.cal''') lines.append( name ) lines.append('''.setChildFunction("onSelect",setDate''') lines.append( name ) # SOURCE LINE 17 lines.append('''); YAHOO.example.calendar.cal''') lines.append( name ) # SOURCE LINE 20 lines.append('''.render(); } function showCalendar''') lines.append( name ) # SOURCE LINE 21 lines.append('''() { var pos = YAHOO.util.Dom.getXY(link''') lines.append( name ) # SOURCE LINE 22 lines.append('''); YAHOO.example.calendar.cal''') lines.append( name ) # SOURCE LINE 23 lines.append('''.outerContainer.style.display=\'block\'; YAHOO.util.Dom.setXY(YAHOO.example.calendar.cal''') lines.append( name ) lines.append('''.outerContainer, [pos[0],pos[1]+link''') lines.append( name ) # SOURCE LINE 26 lines.append('''.offsetHeight+1]); } function setDate''') lines.append( name ) # SOURCE LINE 27 lines.append('''() { var date''') lines.append( name ) lines.append(''' = YAHOO.example.calendar.cal''') lines.append( name ) # SOURCE LINE 28 lines.append('''.getSelectedDates()[0]; selMonth''') lines.append( name ) lines.append('''.selectedIndex=date''') lines.append( name ) # SOURCE LINE 29 lines.append('''.getMonth(); selDay''') lines.append( name ) lines.append('''.selectedIndex=date''') lines.append( name ) # SOURCE LINE 30 lines.append('''.getDate()-1; selYear''') lines.append( name ) lines.append('''.selectedIndex=date''') lines.append( name ) lines.append('''.getFullYear()-''') lines.append( year_start ) # SOURCE LINE 31 lines.append('''; YAHOO.example.calendar.cal''') lines.append( name ) # SOURCE LINE 32 lines.append('''.hide(); document.getElementById(\'''') lines.append( name ) lines.append('''\').value = date''') lines.append( name ) lines.append('''.getFullYear()+\'-\'+(date''') lines.append( name ) lines.append('''.getMonth()+1)+\'-\'+date''') lines.append( name ) # SOURCE LINE 33 lines.append('''.getDate(); //alert(document.getElementById(\'''') lines.append( name ) # SOURCE LINE 36 lines.append('''\').value) } function changeDate''') lines.append( name ) # SOURCE LINE 37 lines.append('''() { var month = this.selMonth''') lines.append( name ) # SOURCE LINE 38 lines.append('''.selectedIndex; var day = this.selDay''') lines.append( name ) # SOURCE LINE 39 lines.append('''.selectedIndex + 1; var year = this.selYear''') lines.append( name ) lines.append('''.selectedIndex + ''') lines.append( year_start ) # SOURCE LINE 40 lines.append('''; YAHOO.example.calendar.cal''') lines.append( name ) # SOURCE LINE 41 lines.append('''.select((month+1) + "/" + day + "/" + year); YAHOO.example.calendar.cal''') lines.append( name ) # SOURCE LINE 42 lines.append('''.setMonth(month); YAHOO.example.calendar.cal''') lines.append( name ) # SOURCE LINE 43 lines.append('''.setYear(year); YAHOO.example.calendar.cal''') lines.append( name ) # SOURCE LINE 44 lines.append('''.render(); document.getElementById(\'''') lines.append( name ) # SOURCE LINE 45 lines.append('''\').value = year+\'-\'+(month+1)+\'-\'+day //alert(document.getElementById(\'''') lines.append( name ) # SOURCE LINE 48 lines.append('''\').value) } YAHOO.util.Event.addListener(window, "load", init''') lines.append( name ) day = 1 month = 1 year = year_start if self._form.get_default(name): if isinstance(self._form.get_default(name), str): if len(self._form.get_default(name).split('-'))==3: day = self._form.get_default(name).split('-')[2] month = self._form.get_default(name).split('-')[1] year = self._form.get_default(name).split('-')[0] else: day = self._form.get_default(name).day month = self._form.get_default(name).month year = self._form.get_default(name).year # SOURCE LINE 51 lines.append(''');
''') lines.append( self.hidden(name=name, id=name, value="%s-%s-%s"%(year, month, day)) ) # SOURCE LINE 56 lines.append(''' ''') lines.append( self.dropdown( 'selDay'+name, [[x,x] for x in range(1,32)], onchange="changeDate"+name+"()", id='selDay'+name, value=day ) ) # SOURCE LINE 70 lines.append(''' ''') lines.append( self.dropdown('selMonth'+name,[ ['1', 'Jan'], ['2', 'Feb'], ['3', 'Mar'], ['4', 'Apr'], ['5', 'May'], ['6', 'Jun'], ['7', 'Jul'], ['8', 'Aug'], ['9', 'Sep'], ['10', 'Oct'], ['11', 'Nov'], ['12', 'Dec'], ], onchange="changeDate"+name+"()", id='selMonth'+name, value=month ) ) # SOURCE LINE 74 lines.append(''' ''') lines.append( self.dropdown( 'selYear'+name, [[x,x] for x in range(year_start, year_end+1)], onchange="changeDate"+name+"()", id='selYear'+name, value=year ) ) # SOURCE LINE 76 lines.append(''' choose
''') # END BLOCK body return ''.join([str(x) for x in lines]) def select(self, name, option_tags='', id=None, **options): # XXX Should distinguish between single and combo and take different values warnings.warn( "formbuild.builder.field.basic.select has been deprecated; please " "use formbuild.builder.field.basic.dropdown instead.", DeprecationWarning, 2) return select(name, option_tags, id=id, **options) def options(self, options, selected_values): o = '' for op in options: o += self.option(op, selected_values)+'\n' return o def text(self, name, value=None, id=None, *k, **options): if value == None: value = self._form.get_default(name) return text_field(name, value, id=id, **options) def hidden(self, name, value=None, id=None, **options): if value == None: value = self._form.get_default(name) return hidden_field(name, value, id=id, **options) def file(self, name, value=None, id=None, **options): if value == None: value = self._form.get_default(name) return file_field(name, value=value, id=id, **options) def password(self, name="password", value=None, id=None, **options): """Creates a password field Takes the same options as text_field """ if value == None: value = self._form.get_default(name) return password_field(name, value, id=id, **options) def text_area(self, name, value=None, id=None, **options): """Creates a text input area""" if value == None: value = self._form.get_default(name) return text_area(name, content=value, id=id, **options) def check_box(self, name, value=None, checked=False, id=None, **options): """Creates a check box.""" if value == None: value = self._form.get_default(name) if value == 'on': checked=True return check_box(name, value=value, checked=checked, id=id, **options) # XXX Should be radio group def radio(self, name, value, checked=False, id=None, **options): """Creates a radio button.""" return radio_button(name, value, checked, id=id, **options) def submit(self, name='commit', value="", id=None, **options): """Creates a submit button with the text value as the caption.""" if value == None: value = self._form.get_default(name) return submit(value=value, name=name, id=id, **options) PK–b<5ó"qÏä0ä0!formbuild/builder/field/basic.pyc;ò ü¶Ec@s@dklZdkTdkZdkZdefd„ƒYZdS((s FieldsBuilder(s*Ns HtmlFieldscBsÚtZdZd„Zed„Zeed„Zedd„Zded„Zd „Zeed „Z eed „Z eed „Z d eed„Z eed„Z eeed„Zeed„Zdded„ZRS(Ns(formbuild.builder.field.basic.HtmlFieldscOs|i||ŽSdS(N(sselfstextsksp(sselfsksp((s6build\bdist.win32\egg\formbuild\builder\field\basic.pysdate scCs1|tjo|ii|ƒ}nt|ƒSdS(N(svaluesNonesselfs_forms get_defaultsnamesstr(sselfsnamesvalue((s6build\bdist.win32\egg\formbuild\builder\field\basic.pysstatic s cKsR|tjo|ii|ƒ}n|i|d|ƒ}t ||d||SdS(Nsselected_valuessid( svaluesNonesselfs_forms get_defaultsnamesoptionssvaluessopsselectsid(sselfsnamesvaluessvaluesidsoptionssop((s6build\bdist.win32\egg\formbuild\builder\field\basic.pysdropdowns s Choose a datec Ks‰ |tjotiiƒi}ng}no! |idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|id ƒ|i|ƒ|id ƒ|i|ƒ|id ƒ|i|ƒ|id ƒ|i|ƒ|id ƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|idƒ|i|ƒ|id ƒ|i|ƒ|id!ƒ|i|ƒ|id"ƒ|i|ƒ|id#ƒ|i|ƒ|id"ƒ|i|ƒ|id$ƒ|i|ƒ|id"ƒ|i|ƒ|id%ƒ|i|ƒ|id&ƒ|i|ƒ|id'ƒ|i|ƒ|id(ƒ|i|ƒ|id)ƒ|i|ƒ|id*ƒ|i|ƒ|id+ƒ|i|ƒ|id,ƒ|i|ƒ|id-ƒ|i|ƒ|id.ƒ|i|ƒ|id/ƒ|i|ƒ|id0ƒ|i|ƒ|id&ƒ|i|ƒ|id1ƒ|i|ƒ|id2ƒ|i|ƒ|id3ƒ|i|ƒ|id4ƒ|i|ƒ|id5ƒ|i|ƒ|id6ƒ|i|ƒd} d} |}|i i|ƒoìt|i i|ƒtƒot|i i|ƒid7ƒƒd8joa|i i|ƒid7ƒd9} |i i|ƒid7ƒd} |i i|ƒid7ƒd:}qq |i i|ƒi } |i i|ƒi } |i i|ƒi}n|id;ƒ|i|id<|d=|d>d?|| | fƒƒ|id@ƒ|i|idA|gi}tddBƒD]} || | gƒq~dCdD|dEd=dA|d>| ƒƒ|idFƒ|i|idG|dHdIgdJdKgdLdMgdNdOgdPdQgdRdSgdTdUgdVdWgdXdYgdZd[gd\d]gd^d_gg dCdD|dEd=dG|d>| ƒƒ|idFƒ|i|id`|gi}t||dƒD]} || | gƒq±~dCdD|dEd=d`|d>|ƒƒ|idaƒ|i|ƒ|idbƒ|i|ƒ|idcƒ|i|ƒ|iddƒndeigi}|D]} |t| ƒƒqe ~ƒSdfS(gsLExperimental JavaScript date field based on developer.yahoo.com/yui date widget. Not yet complete. Although this works if you include the Yahoo components necessary for the date examples in Yahoo's documentation it isn't the cleanest way of doing it so it will probably be re-written in the future. isZ
snamesidsvalues%s-%s-%ss sselDayi sonchanges changeDates()s sselMonths1sJans2sFebs3sMars4sAprs5sMays6sJuns7sJuls8sAugs9sSeps10sOcts11sNovs12sDecsselYears7 choose
sN(syear_endsNonesdatetimesnowsyearslinessappendsnamestitles year_startsdaysmonthsselfs_forms get_defaults isinstancesstrslenssplitshiddensdropdowns_[1]srangesxsjoin( sselfsnames year_startsyear_endstitlesoptionssliness_[1]syearsxsmonthsday((s6build\bdist.win32\egg\formbuild\builder\field\basic.pysdates0                                                                                                                   (' 2 3% ‚ % 7%      scKs-tidtdƒt||d||SdS(Nstformbuild.builder.field.basic.select has been deprecated; please use formbuild.builder.field.basic.dropdown instead.isid(swarningsswarnsDeprecationWarningsselectsnames option_tagssidsoptions(sselfsnames option_tagssidsoptions((s6build\bdist.win32\egg\formbuild\builder\field\basic.pysselect-s  cCs9d}x(|D] }||i||ƒd7}q W|SdS(Nss (sosoptionssopsselfsoptionsselected_values(sselfsoptionssselected_valuessopso((s6build\bdist.win32\egg\formbuild\builder\field\basic.pysoptions5s cOs=|tjo|ii|ƒ}nt||d||SdS(Nsid( svaluesNonesselfs_forms get_defaultsnames text_fieldsidsoptions(sselfsnamesvaluesidsksoptions((s6build\bdist.win32\egg\formbuild\builder\field\basic.pystext;s cKs=|tjo|ii|ƒ}nt||d||SdS(Nsid( svaluesNonesselfs_forms get_defaultsnames hidden_fieldsidsoptions(sselfsnamesvaluesidsoptions((s6build\bdist.win32\egg\formbuild\builder\field\basic.pyshidden@s cKs@|tjo|ii|ƒ}nt|d|d||SdS(Nsvaluesid( svaluesNonesselfs_forms get_defaultsnames file_fieldsidsoptions(sselfsnamesvaluesidsoptions((s6build\bdist.win32\egg\formbuild\builder\field\basic.pysfileEs spasswordcKs=|tjo|ii|ƒ}nt||d||SdS(sICreates a password field Takes the same options as text_field sidN( svaluesNonesselfs_forms get_defaultsnamespassword_fieldsidsoptions(sselfsnamesvaluesidsoptions((s6build\bdist.win32\egg\formbuild\builder\field\basic.pyspasswordJs cKs@|tjo|ii|ƒ}nt|d|d||SdS(sCreates a text input areascontentsidN( svaluesNonesselfs_forms get_defaultsnames text_areasidsoptions(sselfsnamesvaluesidsoptions((s6build\bdist.win32\egg\formbuild\builder\field\basic.pys text_areaQs c Ks]|tjo|ii|ƒ}n|djo t}nt|d|d|d||SdS(sCreates a check box.sonsvaluescheckedsidN( svaluesNonesselfs_forms get_defaultsnamesTruescheckeds check_boxsidsoptions(sselfsnamesvaluescheckedsidsoptions((s6build\bdist.win32\egg\formbuild\builder\field\basic.pys check_boxWs    cKst|||d||SdS(sCreates a radio button.sidN(s radio_buttonsnamesvaluescheckedsidsoptions(sselfsnamesvaluescheckedsidsoptions((s6build\bdist.win32\egg\formbuild\builder\field\basic.pysradio`sscommitcKsC|tjo|ii|ƒ}ntd|d|d||SdS(sDCreates a submit button with the text value as the caption.svaluesnamesidN( svaluesNonesselfs_forms get_defaultsnamessubmitsidsoptions(sselfsnamesvaluesidsoptions((s6build\bdist.win32\egg\formbuild\builder\field\basic.pyssubmitds (s__name__s __module__stypesdatesNonesstaticsdropdownsselectsoptionsstextshiddensfilespasswords text_areasFalses check_boxsradiossubmit(((s6build\bdist.win32\egg\formbuild\builder\field\basic.pys HtmlFieldss   ÿ  (sformbuild.builder.fields FieldsBuilderswebhelpers.rails.form_tagsdatetimeswarningss HtmlFields(swarningss FieldsBuilders HtmlFieldssdatetime((s6build\bdist.win32\egg\formbuild\builder\field\basic.pys?s   PKKa<5\heaa#formbuild/builder/field/compound.pyfrom formbuild.builder.field import FieldsBuilder class HtmlFields(FieldsBuilder): type = 'formbuild.builder.field.compound.HtmlFields' # from pythonweb.org web.form def radio_group(self, name, options, value=None, align='horiz', cols=4): """Radio Group Field.""" if value == None: value = self._form.get_default(name) output='' if len(options)>0: if align <> 'table': for option in options: checked='' if not isinstance(option, list) and not isinstance(option, tuple): k = option v = option else: v, k = option if str(v) == str(value): checked=" checked" break_ = '' if align == 'vert': break_='
' output+=' %s%s\n'%(name, v, checked, k, break_) else: output += '\n \n' counter = -1 for option in options: counter += 1 if ((counter % cols) == 0) and (counter <> 0): output += ' \n \n' output += ' \n \n' counter += 1 while (counter % cols): counter += 1 output += ' \n \n' output += ' \n
' checked='' align='' if not isinstance(option, list) and not isinstance(option, tuple): k = option v = option else: k=option[1] v=option[0] if str(v)==str(value): checked=" checked" output += ' %s%s'%(name, v, checked, k,align) output += '        
' return output def _format_values(self, values): if values == None: values_ = [] for value in self._form.get_default(name): values_.append(str(value)) return values_ else: if not isinstance(values, list) and not isinstance(values, tuple): return [str(values)] else: values_ = [] for value in values: values_.append(str(value)) return values_ def check_box_group(self, name, options, values=None, align='horiz', cols=4): """Check Box Group Field.""" values = self._format_values(values) output = '' if len(options) > 0: if align <> 'table': for option in options: if not isinstance(option, list) and not isinstance(option, tuple): k = option v = option else: k=option[1] v=option[0] checked='' if str(v) in values: checked=" checked" break_ = '' if align == 'vert': break_='
' output+=' %s%s\n'%(name, v, checked, k, break_) else: output += '\n \n' counter = -1 for option in options: counter += 1 if ((counter % cols) == 0) and (counter <> 0): output += ' \n \n' output += ' \n \n' counter += 1 while (counter % cols): counter += 1 output += ' \n \n' output += ' \n
' checked='' align='' if not isinstance(option, list) and not isinstance(option, tuple): k = option v = option else: k=option[1] v=option[0] if str(v) in values: checked=" checked" output += '%s%s'%(name, v, checked, k, align) output += '        
' return output[:-1] PK–b<5 ätn$formbuild/builder/field/compound.pyc;ò ž­Ec@s'dklZdefd„ƒYZdS((s FieldsBuilders HtmlFieldscBs;tZdZeddd„Zd„Zeddd„ZRS(Ns+formbuild.builder.field.compound.HtmlFieldsshorizic CsC|tjo|ii|ƒ}nd} t|ƒdjoÿ|djo¶xë|D]§} d}t | t ƒ ot | tƒ o| } | } n | \} } t| ƒt|ƒjo d}nd}|djo d}n| d|| || |f7} qPWq;| d7} d }xê|D]â} |d 7}||djo |djo| d 7} n| d 7} d}d}t | t ƒ ot | tƒ o| } | } n| d } | d} t| ƒt|ƒjo d}n| d || || |f7} | d7} qW|d 7}x$||o|d 7}| d7} q W| d7} n| SdS(sRadio Group Field.sistables checkedsverts
s3 %s%s sI iÿÿÿÿis s s8 s
s2 %s%ss.          
N(svaluesNonesselfs_forms get_defaultsnamesoutputslensoptionssalignsoptionscheckeds isinstancesliststuplesksvsstrsbreak_scounterscols( sselfsnamesoptionssvaluesalignscolsscheckedsbreak_scountersvsoutputsksoption((s9build\bdist.win32\egg\formbuild\builder\field\compound.pys radio_groupsZ  "     %   "       cCs°|tjo>g}x-|iitƒD]}|it |ƒƒq&W|Snbt |t ƒ ot |t ƒ ot |ƒgSn/g}x!|D]}|it |ƒƒq‹W|SdS(N( svaluessNonesvalues_sselfs_forms get_defaultsnamesvaluesappendsstrs isinstancesliststuple(sselfsvaluessvaluesvalues_((s9build\bdist.win32\egg\formbuild\builder\field\compound.pys_format_values8s "c Cs/|i|ƒ}d} t|ƒdjoû|djo¸xç|D]©} t| t ƒ ot| t ƒ o| } | } n| d} | d} d}t| ƒ|jo d}nd}|djo d}n| d|| || |f7} q<Wq#| d 7} d }xä|D]Ü} |d7}||djo |djo| d 7} n| d 7} d}d}t| t ƒ ot| t ƒ o| } | } n| d} | d} t| ƒ|jo d}n| d || || |f7} | d7} qW|d7}x$||o|d7}| d7} qñW| d7} n| d SdS(sCheck Box Group Field.sistableis checkedsverts
s6 %s%s sI iÿÿÿÿs s s8 s
s4%s%ss.          
N(sselfs_format_valuessvaluessoutputslensoptionssalignsoptions isinstancesliststuplesksvscheckedsstrsbreak_snamescounterscols( sselfsnamesoptionssvaluessalignscolsscheckedsbreak_scountersvsoutputsksoption((s9build\bdist.win32\egg\formbuild\builder\field\compound.pyscheck_box_groupGsZ "      %   "       (s__name__s __module__stypesNones radio_groups_format_valuesscheck_box_group(((s9build\bdist.win32\egg\formbuild\builder\field\compound.pys HtmlFieldss0 N(sformbuild.builder.fields FieldsBuilders HtmlFields(s FieldsBuilders HtmlFields((s9build\bdist.win32\egg\formbuild\builder\field\compound.pys?s PKZ25¶Ëß=Š Š #formbuild/builder/field/__init__.py""" Forms expect the defaults to be either single values or lists of values. The values from ``cgi.FieldStorage()`` aren't quite suitable. # XXX Write a converter function """ from formbuild.builder import Builder class FieldsBuilder(Builder): """ The base class of all FormBuild extensions that add methods to a form attribute. """ def __init__(self): self.type = 'fields' def __call__(self, form): self._form = form def _encode(self, s): translations = {"&": "&", '"': """, "<": "<", ">": ">"} l = list(str(s)) for i in range(len(l)): c = l[i] l[i] = translations.get(c, c) return "".join(l) # Deprecated def _attributes(self, attributes): output = '' for key in attributes.keys(): output += ' %s="%s"' % (key, attributes[key]) return output def option(self, option, selected_values): if isinstance(option, tuple) or isinstance(option, list): (value, label) = option else: (value, label) = (option, option) selected = "" if not (isinstance(selected_values, tuple) or isinstance(selected_values, list)): selected_values = [selected_values] for v in selected_values: if str(v) == str(value): selected = ' selected="selected"' break; return '' % (value, selected, label) def options(self, options, selected_values): mode = 'value' if isinstance(options[0], tuple) or isinstance(options[0], list): mode = 'list' counter = 1 result = '' for option in options: if mode=='list': (value, label) = counter, option else: (value, label) = option counter += 1 selected = "" if not (isinstance(selected_values, tuple) or isinstance(selected_values, list)): selected_values = [selected_values] for v in selected_values: if str(v) == str(value): selected = ' selected="selected"' break; result += '\n' % (value, selected, label) return result PK–b<5¸dˆsÉ É $formbuild/builder/field/__init__.pyc;ò ü¶Ec@s-dZdklZdefd„ƒYZdS(sª Forms expect the defaults to be either single values or lists of values. The values from ``cgi.FieldStorage()`` aren't quite suitable. # XXX Write a converter function (sBuilders FieldsBuildercBsDtZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(sZ The base class of all FormBuild extensions that add methods to a form attribute. cCs d|_dS(Nsfields(sselfstype(sself((s9build\bdist.win32\egg\formbuild\builder\field\__init__.pys__init__ scCs ||_dS(N(sformsselfs_form(sselfsform((s9build\bdist.win32\egg\formbuild\builder\field\__init__.pys__call__scCsŠhdd<dd<dd<dd<}tt|ƒƒ}x:tt|ƒƒD]&}||}|i ||ƒ||s>s( s translationsslistsstrssslsrangeslensiscsgetsjoin(sselfssscsis translationssl((s9build\bdist.win32\egg\formbuild\builder\field\__init__.pys_encodes* cCs=d}x,|iƒD]}|d|||f7}qW|SdS(Nss %s="%s"(soutputs attributesskeysskey(sselfs attributesskeysoutput((s9build\bdist.win32\egg\formbuild\builder\field\__init__.pys _attributess  cCsÀt|tƒp t|tƒo|\}}n||f\}}d}t|tƒp t|tƒ o |g}nx2|D]*}t |ƒt |ƒjo d}Pq}q}Wd|||fSdS(Nss selected="selected"s ( s isinstancesoptionstupleslistsvalueslabelsselectedsselected_valuessvsstr(sselfsoptionsselected_valuessselectedsvalueslabelsv((s9build\bdist.win32\egg\formbuild\builder\field\__init__.pysoption!s !  c Csd}t|dtƒpt|dtƒo d}nd}d} xÇ|D]¿}|djo||f\}}n |\}}|d7}d}t|tƒp t|tƒ o |g}nx2|D]*} t | ƒt |ƒjo d}PqÅqÅW| d|||f7} qKW| SdS(Nsvalueislistiss selected="selected"s! (smodes isinstancesoptionsstupleslistscountersresultsoptionsvalueslabelsselectedsselected_valuessvsstr( sselfsoptionssselected_valuessselectedscountersoptionsvalueslabelsmodesvsresult((s9build\bdist.win32\egg\formbuild\builder\field\__init__.pysoptions0s*(    !  ( s__name__s __module__s__doc__s__init__s__call__s_encodes _attributessoptionsoptions(((s9build\bdist.win32\egg\formbuild\builder\field\__init__.pys FieldsBuilders     N(s__doc__sformbuild.buildersBuilders FieldsBuilder(sBuilders FieldsBuilder((s9build\bdist.win32\egg\formbuild\builder\field\__init__.pys?s PKZ25ª©h=õõ!formbuild/builder/layout/basic.pyfrom formbuild.builder.layout import LayoutBuilder class HtmlLayout(LayoutBuilder): type = 'formbuild.builder.layout.basic.HtmlFields' def simple_start(self): return '\n' def simple_end(self): return '
' def entry_start(self, name='', error=''): if name: name+= ':' return """ %s """%(name) def entry_end(self, name='', error='' ): return """ %s \n"""%(error) class CssLayout(LayoutBuilder): type = 'formbuild.builder.layout.basic.CssFields' def __init__(self, css_prepend=''): if css_prepend: css_prepend += '-' self.css_prepend = css_prepend # Don't need to call LayoutBuilder.__init__() def simple_start(self): return '' def simple_end(self): return '
'%self.css_prepend def entry_start(self, name='', error=''): ouptut = '' if not name: name = ' ' else: name += ':' return '
\n%s\n
\n'%(self.css_prepend,name) def entry_end(self, name='', error='' ): if not error: error = ' ' return """
%s
\n"""%(self.css_prepend, error) #~ if __name__ == '__main__': #~ from formbuild import Form #~ class MyForm(Form): #~ layouts = BasicHTML #~ f = MyForm() #~ print f.layout.simple (f.layout.entry(name="Name", error="No Error", content=f.field.text(name="name"))) PK–b<5AµÙ)£ £ "formbuild/builder/layout/basic.pyc;ò ü¶Ec@s=dklZdefd„ƒYZdefd„ƒYZdS((s LayoutBuilders HtmlLayoutcBs>tZdZd„Zd„Zddd„Zddd„ZRS(Ns)formbuild.builder.layout.basic.HtmlFieldscCsdSdS(Ns ((sself((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys simple_startscCsdSdS(Ns
((sself((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys simple_end sscCs!|o|d7}nd|SdS(Ns:s* %s (sname(sselfsnameserror((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys entry_start scCs d|SdS(Ns) %s (serror(sselfsnameserror((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys entry_ends(s__name__s __module__stypes simple_starts simple_ends entry_starts entry_end(((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys HtmlLayouts   s CssLayoutcBsJtZdZdd„Zd„Zd„Zddd„Zddd„ZRS(Ns(formbuild.builder.layout.basic.CssFieldsscCs"|o|d7}n||_dS(Ns-(s css_prependsself(sselfs css_prepend((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys__init__scCsdSdS(Ns((sself((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys simple_start$scCsd|iSdS(Ns&
(sselfs css_prepend(sself((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys simple_end'scCs7d}| o d}n |d7}d|i|fSdS(Nss s:s<
%s
(souptutsnamesselfs css_prepend(sselfsnameserrorsouptut((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys entry_start*s   cCs'| o d}nd|i|fSdS(Ns sA
%s
(serrorsselfs css_prepend(sselfsnameserror((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys entry_end2s (s__name__s __module__stypes__init__s simple_starts simple_ends entry_starts entry_end(((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys CssLayouts    N(sformbuild.builder.layouts LayoutBuilders HtmlLayouts CssLayout(s CssLayouts LayoutBuilders HtmlLayout((s7build\bdist.win32\egg\formbuild\builder\layout\basic.pys?s PKZ25£NBJJ!formbuild/builder/layout/pages.pyfrom formbuild.builder.layout import LayoutBuilder # XXX Layout items should know where they are in the tree """For example warning() should know whether to format itself for sub_questions or questions""" class HtmlLayout(LayoutBuilder): type = 'formbuild.builder.layout.pages.HtmlFields' def javascript_start(self): return """ """ def javascript_end(self): return '' # @@@ Page @@@ def page_start(self, title='', description=''): return ("

%s

"%title)+description def page_end(self, name='', description='', title=''): return '' # @@@ Section @@@ def section_start(self, title='', description='', ): return '
%(title)s%(description)s'%{ 'title':title, 'description':description, } def section_end(self, name='', description='', title=''): return '

' # @@@ Question @@@ def question_start(self, name='', description='', title=''): return """%s """%title def question_end(self, *k, **p): return """
""" # @@@ Question Spacer @@@ def question_spacer_start(self): return '
' def question_spacer_end(self): return '' # @@@ Sub Question Spacer @@@ def sub_question_spacer_start(self): return '
' def sub_question_spacer_end(self): return '' # @@@ Sub Question @@@ def sub_question_start(self, description='', title=''): return '%s'%(title) def sub_question_end(self, *k, **p): return '' def field(self, label, name, type, **attributes): """Build a field with a label in a table row. type This can be any "blah" for which there exists a "blahField". """ label = self.label(name, label) field = getattr(self, "%sField" % type)(name, **attributes) return '%s%s' % (label, field) def fieldset(self, fields): return '
%s
'%fields def label(self, content, label): return ' %s'%(label,label, content) def focusField(self, form, field): """Output the JavaScript to focus a field. Use this to set the default focus of a form. Call this *after* you have output the given field. form This is the name attribute of the ``
`` tag. field This is the name or ``id`` attribute of the field. """ return """\ """ % (htmlent(form), htmlent(field)) def question_warning_start(self): return '
' def question_warning_end(self): return '
' def question_note_start(self): return '
' def question_note_end(self): return '
' def sub_question_warning_start(self): return self.question_warning_start() def sub_question_warning_end(self): return self.question_warning_end() def sub_question_note_start(self): return self.question_note_start() def sub_question_note_end(self): return self.question_note_end() #~ if __name__ == '__main__': #~ r = Renderer() #~ print r.page('content', 'asd') #~ print r.page_start('asd')+'content'+r.page_end() PK–b<5çÔDD"formbuild/builder/layout/pages.pyc;ò ü¶Ec@s'dklZdefd„ƒYZdS((s LayoutBuilders HtmlLayoutcBs%tZdZd„Zd„Zddd„Zdddd„Zddd„Zdddd„Zdddd „Z d „Z d „Z d „Z d „Z d„Zddd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(Ns)formbuild.builder.layout.pages.HtmlFieldscCsdSdS(Nsþ ((sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysjavascript_start scCsdSdS(Ns((sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysjavascript_endsscCsd||SdS(Ns

%s

(stitles description(sselfstitles description((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pys page_startscCsdSdS(Ns((sselfsnames descriptionstitle((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pyspage_endscCsdhd|<d|<SdS(NsZ
%(title)s%(description)sstitles description(stitles description(sselfstitles description((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pys section_start"scCsdSdS(Ns

((sselfsnames descriptionstitle((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pys section_end(scCs d|SdS(Nse%s (stitle(sselfsnames descriptionstitle((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysquestion_start,scOsdSdS(Ns
((sselfsksp((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pys question_end1scCsdSdS(Ns$
((sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysquestion_spacer_start5scCsdSdS(Ns((sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysquestion_spacer_end8scCsdSdS(Ns8
((sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pyssub_question_spacer_start<scCsdSdS(Ns((sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pyssub_question_spacer_end?scCs d|SdS(Ns-%s(stitle(sselfs descriptionstitle((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pyssub_question_startCscOsdSdS(Ns ((sselfsksp((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pyssub_question_endFscKs@|i||ƒ}t|d|ƒ||}d||fSdS(s‘Build a field with a label in a table row. type This can be any "blah" for which there exists a "blahField". s%sFields,%s%sN(sselfslabelsnamesgetattrstypes attributessfield(sselfslabelsnamestypes attributessfield((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysfieldIscCs d|SdS(Ns
%s
(sfields(sselfsfields((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysfieldsetTscCsd|||fSdS(Ns %s(slabelscontent(sselfscontentslabel((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pyslabelWscCsdt|ƒt|ƒfSdS(sIOutput the JavaScript to focus a field. Use this to set the default focus of a form. Call this *after* you have output the given field. form This is the name attribute of the ```` tag. field This is the name or ``id`` attribute of the field. sW N(shtmlentsformsfield(sselfsformsfield((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pys focusFieldZs cCsdSdS(NsZ
((sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysquestion_warning_startmscCsdSdS(Ns
((sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysquestion_warning_endpscCsdSdS(NsZ
((sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysquestion_note_startsscCsdSdS(Ns
((sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pysquestion_note_endvscCs|iƒSdS(N(sselfsquestion_warning_start(sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pyssub_question_warning_startyscCs|iƒSdS(N(sselfsquestion_warning_end(sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pyssub_question_warning_end|scCs|iƒSdS(N(sselfsquestion_note_start(sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pyssub_question_note_startscCs|iƒSdS(N(sselfsquestion_note_end(sself((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pyssub_question_note_end‚s(s__name__s __module__stypesjavascript_startsjavascript_ends page_startspage_ends section_starts section_endsquestion_starts question_endsquestion_spacer_startsquestion_spacer_endssub_question_spacer_startssub_question_spacer_endssub_question_startssub_question_endsfieldsfieldsetslabels focusFieldsquestion_warning_startsquestion_warning_endsquestion_note_startsquestion_note_endssub_question_warning_startssub_question_warning_endssub_question_note_startssub_question_note_end(((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pys HtmlLayouts6                 N(sformbuild.builder.layouts LayoutBuilders HtmlLayout(s LayoutBuilders HtmlLayout((s7build\bdist.win32\egg\formbuild\builder\layout\pages.pys?s PKZ25|dv)œœ$formbuild/builder/layout/__init__.py from formbuild.builder import Builder class LayoutBuilder(Builder): """ The base class of FormBuild extensions which change the behavious of form attribute methods. """ def __call__(self, form): self.form = form def __getattr__(self, name, test=0): parts = dir(self.__class__) if name+'_end' in parts and name+'_start' in parts: def helper(content='', *k, **params): return getattr(self,name+'_start')(*k, **params) + content + getattr(self,name+'_end')(*k, **params) return helper else: raise AttributeError('No such method %s'%repr(name)) PK–b<5`6/CC%formbuild/builder/layout/__init__.pyc;ò ü¶Ec@s'dklZdefd„ƒYZdS((sBuilders LayoutBuildercBs#tZdZd„Zdd„ZRS(sf The base class of FormBuild extensions which change the behavious of form attribute methods. cCs ||_dS(N(sformsself(sselfsform((s:build\bdist.win32\egg\formbuild\builder\layout\__init__.pys__call__ sicsetˆiƒ}ˆd|joˆd|jod‡‡d†}|Sntdtˆƒƒ‚dS(Ns_ends_startscs<tˆˆdƒ||Ž|tˆˆdƒ||ŽSdS(Ns_starts_end(sgetattrsselfsnamesksparamsscontent(scontentsksparams(snamesself(s:build\bdist.win32\egg\formbuild\builder\layout\__init__.pyshelperssNo such method %s(sdirsselfs __class__spartssnameshelpersAttributeErrorsrepr(sselfsnamestestshelpersparts((sselfsnames:build\bdist.win32\egg\formbuild\builder\layout\__init__.pys __getattr__ s "(s__name__s __module__s__doc__s__call__s __getattr__(((s:build\bdist.win32\egg\formbuild\builder\layout\__init__.pys LayoutBuilders  N(sformbuild.buildersBuilders LayoutBuilder(sBuilders LayoutBuilder((s:build\bdist.win32\egg\formbuild\builder\layout\__init__.pys?s PKZ25†ïœññformbuild/creator/__init__.py class CreatorBase: pass class CaptureDataRecreator(CreatorBase): def __init__(self, form, init_params={}): self.form = form self.init_params = init_params def create(self, data): result = [] for call, params in data: parts = call.split('.') module = '.'.join(parts[:-2]) class_ = parts[-2] method = parts[-1] live = __import__(module, globals(), locals(), [class_]).__dict__[class_] if self.init_params.has_key('.'.join(parts[:-1])): p = self.init_params['.'.join(parts[:-1])] else: p = {} l = live(**p) l(self.form) #raise Exception(parts, module, class_, method)#, module_) #raise Exception(live) #live = from module import class_ r = getattr(l, method)(**params) result.append(r) return resultPK–b<5 o½q¦¦formbuild/creator/__init__.pyc;ò ü¶Ec@s-dfd„ƒYZdefd„ƒYZdS(s CreatorBasecBstZRS(N(s__name__s __module__(((s3build\bdist.win32\egg\formbuild\creator\__init__.pys CreatorBasessCaptureDataRecreatorcBstZhd„Zd„ZRS(NcCs||_||_dS(N(sformsselfs init_params(sselfsforms init_params((s3build\bdist.win32\egg\formbuild\creator\__init__.pys__init__s c Csÿg} xî|D]æ\}} |idƒ}di|d ƒ}|d}|d} t |t ƒt ƒ|gƒi |}|iidi|d ƒƒo|idi|d ƒ}nh}||}||iƒt|| ƒ| } | i| ƒq W| SdS(Ns.iþÿÿÿiÿÿÿÿ(sresultsdatascallsparamsssplitspartssjoinsmodulesclass_smethods __import__sglobalsslocalss__dict__slivesselfs init_paramsshas_keyspslsformsgetattrsrsappend( sselfsdataspslsmodulesclass_slivespartsscallsresultsparamssrsmethod((s3build\bdist.win32\egg\formbuild\creator\__init__.pyscreate s    %   (s__name__s __module__s__init__screate(((s3build\bdist.win32\egg\formbuild\creator\__init__.pysCaptureDataRecreators N(s CreatorBasesCaptureDataRecreator(sCaptureDataRecreators CreatorBase((s3build\bdist.win32\egg\formbuild\creator\__init__.pys?sPKZ25IÃùþþformbuild/form/__init__.pyfrom formbuild.modifier import Combine from formbuild.builder.field.basic import HtmlFields from formbuild.builder.layout.basic import HtmlLayout class FormBase: """ All ``Form`` classes have the following attributes: field Generate a field object layout Tools for rendering fields and text into pages, sections, questions and sub questions """ def __init__(self, defaults=[{}], errors=[{}] ): """ The following attributes are used: defaults This is a list of dictionaries. When looking for a default value the list is traveresed and the first value where the key matches the name of the field is used as the default. errors This is a list of dictionaries. It is searched in the same way as ``defaults`` and the first matching value is used as the error message associated with the field. """ #raise Exception('sdf') if isinstance(defaults, dict): defaults = [defaults] else: if not isinstance(defaults, list): raise Exception('Invalid defaults, expected dictionary or list of dictionaries, not %s'%repr(defaults)) for default_set in defaults: if not isinstance(default_set, dict): raise Exception('Invalid defaults, expected dictionary or list of dictionaries, not %s'%repr(defaults)) self.defaults = defaults if isinstance(errors, dict): errors = [errors] else: if not isinstance(errors, list): raise Exception('Invalid errors, expected dictionary or list of dictionaries, not %s'%repr(errors)) for error_set in errors: if not isinstance(error_set, dict): raise Exception('Invalid errors, expected dictionary or list of dictionaries, not %s'%repr(errors)) self.errors = errors builder_attributes = [] for k in dir(self): if k not in ['__doc__','defaults','errors', '__init__', '__module__', 'addField', 'as_hidden', 'end', 'getDefault', 'getError', 'getField', 'ifError', 'start']: builder_attributes.append(k) for attribute in builder_attributes: a = getattr(self, attribute) if isinstance(a, tuple) or isinstance(a, list): setattr(self, attribute, Combine(*a)) getattr(self, attribute)(self) def if_error(self, name, if_="", else_=""): for errors in self.errors: if errors.has_key(name): if if_ == '': return errors[name] else: return if_ break return else_ def get_error(self, name, default='', format=None): #raise Exception(self.errors) e = None for errors in self.errors: if errors.has_key(name): e = errors[name] break if e == None: e = default if format != None and e: e = format%e return e def start(self, **p): s = '' for k,v in p.items(): s+='%s="%s" '%(k,v) return ''%s def end(self): return '
' #~ def addField(self, field_type, **field_params): #~ f = {} #~ for k, v in field_params.items(): #~ f[k]=v #~ f['type'] = field_type #~ self.field_data.append(f) #~ def getField(self, name): #~ return self.field_data[name] def get_default(self, name, default=None): if type(self.defaults) <> type([]): raise Exception(self.defaults) for d in self.defaults: if d.has_key(name): return d[name] return default def as_hidden(self, params): f = '' for k,v in params.items(): f += self.field.hidden(name=k, value=v) return f class Form(FormBase): field = HtmlFields() layout = HtmlLayout() PK–b<5G‘m¿®®formbuild/form/__init__.pyc;ò ü¶Ec@sTdklZdklZdklZdfd„ƒYZdefd„ƒYZdS((sCombine(s HtmlFields(s HtmlLayoutsFormBasecBshtZdZhghgd„Zddd„Zded„Zd„Zd„Zed„Z d„Z RS( sâ All ``Form`` classes have the following attributes: field Generate a field object layout Tools for rendering fields and text into pages, sections, questions and sub questions c Csít|tƒo |g}n,t|tƒ otdt|ƒƒ‚nx9|D]1}t|tƒ otdt|ƒƒ‚qOqOW||_t|tƒo |g}n,t|tƒ otdt|ƒƒ‚nx9|D]1}t|tƒ otdt|ƒƒ‚qÜqÜW||_g}xYt |ƒD]K}|ddddddd d d d d ddg jo|i |ƒq-q-Wxj|D]b}t||ƒ}t|tƒp t|tƒot||t|Œƒnt||ƒ|ƒqƒWdS(sÒ The following attributes are used: defaults This is a list of dictionaries. When looking for a default value the list is traveresed and the first value where the key matches the name of the field is used as the default. errors This is a list of dictionaries. It is searched in the same way as ``defaults`` and the first matching value is used as the error message associated with the field. sEInvalid defaults, expected dictionary or list of dictionaries, not %ssCInvalid errors, expected dictionary or list of dictionaries, not %ss__doc__sdefaultsserrorss__init__s __module__saddFields as_hiddensends getDefaultsgetErrorsgetFieldsifErrorsstartN(s isinstancesdefaultssdictslists Exceptionsreprs default_setsselfserrorss error_setsbuilder_attributessdirsksappends attributesgetattrsastuplessetattrsCombine( sselfsdefaultsserrorssas default_setsbuilder_attributess attributesks error_set((s0build\bdist.win32\egg\formbuild\form\__init__.pys__init__s<      4 scCsNxC|iD]8}|i|ƒo"|djo ||Sn|SPq q W|SdS(Ns(sselfserrorsshas_keysnamesif_selse_(sselfsnamesif_selse_serrors((s0build\bdist.win32\egg\formbuild\form\__init__.pysif_error:s    cCszt}x0|iD]%}|i|ƒo||}PqqW|tjo |}n|tjo|o||}n|SdS(N(sNonesesselfserrorsshas_keysnamesdefaultsformat(sselfsnamesdefaultsformatserrorsse((s0build\bdist.win32\egg\formbuild\form\__init__.pys get_errorDs     cKsCd}x.|iƒD] \}}|d||f7}qWd|SdS(Nss%s="%s" s
(ssspsitemssksv(sselfspsssksv((s0build\bdist.win32\egg\formbuild\form\__init__.pysstartQs  cCsdSdS(Ns
((sself((s0build\bdist.win32\egg\formbuild\form\__init__.pysendWscCsgt|iƒtgƒjot|iƒ‚nx-|iD]"}|i|ƒo ||Sq9q9W|SdS(N(stypesselfsdefaultss Exceptionsdshas_keysnamesdefault(sselfsnamesdefaultsd((s0build\bdist.win32\egg\formbuild\form\__init__.pys get_defaultds cCsJd}x9|iƒD]+\}}||iid|d|ƒ7}qW|SdS(Nssnamesvalue(sfsparamssitemssksvsselfsfieldshidden(sselfsparamssvsksf((s0build\bdist.win32\egg\formbuild\form\__init__.pys as_hiddenms  #( s__name__s __module__s__doc__s__init__sif_errorsNones get_errorsstartsends get_defaults as_hidden(((s0build\bdist.win32\egg\formbuild\form\__init__.pysFormBases +   sFormcBstZeƒZeƒZRS(N(s__name__s __module__s HtmlFieldssfields HtmlLayoutslayout(((s0build\bdist.win32\egg\formbuild\form\__init__.pysFormss N(sformbuild.modifiersCombinesformbuild.builder.field.basics HtmlFieldssformbuild.builder.layout.basics HtmlLayoutsFormBasesForm(sFormBasesCombinesForms HtmlFieldss HtmlLayout((s0build\bdist.win32\egg\formbuild\form\__init__.pys?s   nPKZ25\ÔËformbuild/modifier/__init__.pyimport inspect def capture_params(method, after=None): def f(params): return params if after == None: after = f def getValue(*k, **p): args, ks, ps, defaults = inspect.getargspec(method.im_func) final = {} # Which have no defaults nodefaults = [] if defaults: nodefaults = args[1:-len(defaults)] # Out of these which are specified by params for key, value in p.items(): if key in nodefaults: nodefaults.pop(nodefaults.index(key)) # We are left with words with no defaults and no params, these should correspond to the keywords: if len(k) < len(nodefaults): raise TypeError('Required parameter %s not specified.'%(repr(nodefaults[len(k):len(k)+1][0]))) elif len(k) > len(nodefaults): overridedefaults = defaults[:len(k)] names = args[-len(defaults):][:len(k)-len(nodefaults)] counter = 0 for name in names: if name in p.keys(): raise TypeError('Keyword and named parameter specified for %s'%repr(name)) else: final[name] = k[len(k)-len(nodefaults):][counter] for i in range(len(nodefaults)): final[args[i+1]] = k[i] else: # Assuming all is well we now know the parameters, defaults and keywords for i in range(len(k)): final[args[i+1]] = k[i] # That's the keywords sorted, now for the params for key, value in p.items(): final[key] = value return after(final) return getValue class ModifierBase: pass class Build(ModifierBase): """Just returns the params entered""" def __init__(self, *objects): self._fields = Combine(*objects) def __call__(self, form): self._fields(form) def __getattr__(self, name): method = getattr(self._fields, name) return capture_params(method) class Capture(ModifierBase): def __init__(self, *objects): self._fields = None self._fields = Combine(*objects) self.captured = [] def __call__(self, form): self._fields(form) def __getattr__(self, name): method = getattr(self._fields, name) def func(params): self.captured.append([method.im_class.type+'.'+name, params]) return None #method(**params) return capture_params(getattr(self._fields, name), func) class CaptureAndReturn(Capture): """ Capture the parameters and return them """ def __getattr__(self, name): method = getattr(self._fields, name) def func(params): self.captured.append([method.im_class.type+'.'+name, params]) return method(**params) return capture_params(getattr(self._fields, name), func) class Combine(ModifierBase): def __init__(self, *objects): self._objects = objects self.names = '' for object in self.__dict__['_objects']: self.names += object.__class__.__name__ + ', ' if self.names: self.names = self.names[:-2] def __call__(self, form): self.form = form in_objects = [] for object in self.__dict__['_objects']: in_objects.append(object(form)) #self.__dict__['_objects'] = in_objects def __getattr__(self, name): for object in self.__dict__['_objects']: if hasattr(object, name): return getattr(object, name) raise AttributeError('Method %s could not be found in any of the combined classes %s'%(repr(name), self.names)) class Frozen(ModifierBase): def __init__(self, *objects): self._fields = Combine(*objects) def __call__(self, form): self._fields(form) def __getattr__(self, name): # We only want the value from the method, not the rest def func(params): value = None if params.has_key('value'): value = params['value'] else: value = self._fields.form.get_default(params['name']) if value == None: return '' else: return str(value) return capture_params(getattr(self._fields, name), func) PK–b<5j,!,!formbuild/modifier/__init__.pyc;ò ü¶Ec@sšdkZed„Zdfd„ƒYZdefd„ƒYZdefd„ƒYZdefd „ƒYZd efd „ƒYZd efd „ƒYZdS(Ncs7d„}ˆtjo |‰n‡‡d†}|SdS(NcCs|SdS(N(sparams(sparams((s4build\bdist.win32\egg\formbuild\modifier\__init__.pysfscs.tiˆiƒ\}} }}h}g}|o|dt |ƒ !}nxA|i ƒD]3\}} ||jo|i|i|ƒƒqVqVWt |ƒt |ƒjo5tdt|t |ƒt |ƒd!dƒƒ‚nt |ƒt |ƒjoÒ|t |ƒ }|t |ƒ t |ƒt |ƒ }d} x]|D]U} | |iƒjotdt| ƒƒ‚q6|t |ƒt |ƒ| || s cCs|i|ƒdS(N(sselfs_fieldssform(sselfsform((s4build\bdist.win32\egg\formbuild\modifier\__init__.pys__call__CscsAtˆiˆƒ‰‡‡‡d†}ttˆiˆƒ|ƒSdS(Ncs,ˆiiˆiidˆ|gƒtSdS(Ns.( sselfscapturedsappendsmethodsim_classstypesnamesparamssNone(sparams(sselfsmethodsname(s4build\bdist.win32\egg\formbuild\modifier\__init__.pysfuncHs$(sgetattrsselfs_fieldssnamesmethodsfuncscapture_params(sselfsnamesfuncsmethod((sselfsnamesmethods4build\bdist.win32\egg\formbuild\modifier\__init__.pys __getattr__Fs(s__name__s __module__s__init__s__call__s __getattr__(((s4build\bdist.win32\egg\formbuild\modifier\__init__.pysCapture=s  sCaptureAndReturncBstZdZd„ZRS(s0 Capture the parameters and return them csAtˆiˆƒ‰‡‡‡d†}ttˆiˆƒ|ƒSdS(Ncs2ˆiiˆiidˆ|gƒˆ|SdS(Ns.(sselfscapturedsappendsmethodsim_classstypesnamesparams(sparams(sselfsmethodsname(s4build\bdist.win32\egg\formbuild\modifier\__init__.pysfuncSs$(sgetattrsselfs_fieldssnamesmethodsfuncscapture_params(sselfsnamesfuncsmethod((sselfsnamesmethods4build\bdist.win32\egg\formbuild\modifier\__init__.pys __getattr__Qs(s__name__s __module__s__doc__s __getattr__(((s4build\bdist.win32\egg\formbuild\modifier\__init__.pysCaptureAndReturnMs sCombinecBs#tZd„Zd„Zd„ZRS(NcGse||_d|_x.|idD]}|i|iid7_q W|io|id |_ndS(Nss_objectss, iþÿÿÿ(sobjectssselfs_objectssnamess__dict__sobjects __class__s__name__(sselfsobjectssobject((s4build\bdist.win32\egg\formbuild\modifier\__init__.pys__init__Ys   cCs>||_g}x(|idD]}|i||ƒƒqWdS(Ns_objects(sformsselfs in_objectss__dict__sobjectsappend(sselfsformsobjects in_objects((s4build\bdist.win32\egg\formbuild\modifier\__init__.pys__call__as  cCs\x6|idD]'}t||ƒot||ƒSqqWtdt|ƒ|ifƒ‚dS(Ns_objectss>Method %s could not be found in any of the combined classes %s( sselfs__dict__sobjectshasattrsnamesgetattrsAttributeErrorsreprsnames(sselfsnamesobject((s4build\bdist.win32\egg\formbuild\modifier\__init__.pys __getattr__hs (s__name__s __module__s__init__s__call__s __getattr__(((s4build\bdist.win32\egg\formbuild\modifier\__init__.pysCombineXs  sFrozencBs#tZd„Zd„Zd„ZRS(NcGst|Œ|_dS(N(sCombinesobjectssselfs_fields(sselfsobjects((s4build\bdist.win32\egg\formbuild\modifier\__init__.pys__init__oscCs|i|ƒdS(N(sselfs_fieldssform(sselfsform((s4build\bdist.win32\egg\formbuild\modifier\__init__.pys__call__rscs)‡d†}ttˆi|ƒ|ƒSdS(Ncs`t}|idƒo|d}nˆiii|dƒ}|tjodSn t|ƒSdS(Nsvaluesnames( sNonesvaluesparamsshas_keysselfs_fieldssforms get_defaultsstr(sparamssvalue(sself(s4build\bdist.win32\egg\formbuild\modifier\__init__.pysfuncws (sfuncscapture_paramssgetattrsselfs_fieldssname(sselfsnamesfunc((sselfs4build\bdist.win32\egg\formbuild\modifier\__init__.pys __getattr__us (s__name__s __module__s__init__s__call__s __getattr__(((s4build\bdist.win32\egg\formbuild\modifier\__init__.pysFrozenns  ( sinspectsNonescapture_paramss ModifierBasesBuildsCapturesCaptureAndReturnsCombinesFrozen(s ModifierBasesCapturesFrozenscapture_paramssinspectsCombinesBuildsCaptureAndReturn((s4build\bdist.win32\egg\formbuild\modifier\__init__.pys?s  +  PK•b<5“×2¶EGG-INFO/dependency_links.txtPK•b<5“×2¶<EGG-INFO/not-zip-safePK•b<5ZŽË¦¦¶pEGG-INFO/PKG-INFOPK•b<5n`¦„¶EEGG-INFO/requires.txtPK•b<5›ß½¶HH¶‡EGG-INFO/SOURCES.txtPK•b<5bå* ¶EGG-INFO/top_level.txtPKšb<5%þŒŒ¶?formbuild/__init__.pyPK–b<5Ô-Âå å ¶þformbuild/__init__.pycPKZ25µkª¶%formbuild/builder/__init__.pyPK–b<5ýhjÀ]]¶n%formbuild/builder/__init__.pycPKZ25ÈÈÐ6Ð6 ¶'formbuild/builder/field/basic.pyPK–b<5ó"qÏä0ä0!¶^formbuild/builder/field/basic.pycPKKa<5\heaa#¶8formbuild/builder/field/compound.pyPK–b<5 ätn$¶Ú¢formbuild/builder/field/compound.pycPKZ25¶Ëß=Š Š #¶#´formbuild/builder/field/__init__.pyPK–b<5¸dˆsÉ É $¶î½formbuild/builder/field/__init__.pycPKZ25ª©h=õõ!¶ùËformbuild/builder/layout/basic.pyPK–b<5AµÙ)£ £ "¶-Óformbuild/builder/layout/basic.pycPKZ25£NBJJ!¶àformbuild/builder/layout/pages.pyPK–b<5çÔDD"¶™ñformbuild/builder/layout/pages.pycPKZ25|dv)œœ$¶formbuild/builder/layout/__init__.pyPK–b<5`6/CC%¶ûformbuild/builder/layout/__init__.pycPKZ25†ïœññ¶formbuild/creator/__init__.pyPK–b<5 o½q¦¦¶­formbuild/creator/__init__.pycPKZ25IÃùþþ¶%formbuild/form/__init__.pyPK–b<5G‘m¿®®¶Å5formbuild/form/__init__.pycPKZ25\Ô˶¬Iformbuild/modifier/__init__.pyPK–b<5j,!,!¶[formbuild/modifier/__init__.pycPK;j|