From: <el...@us...> - 2003-03-30 18:58:44
|
Update of /cvsroot/funformkit/FunFormKit In directory sc8-pr-cvs1:/tmp/cvs-serv27447 Modified Files: SimpleHTMLGen.py Field.py Log Message: Changed SimpleHTMLGen and Field.py to properly support static option. Also changed CheckboxField to return 1 and 0 instead of 'on' and 0. Behavior now matchs docs and expectations. Index: SimpleHTMLGen.py =================================================================== RCS file: /cvsroot/funformkit/FunFormKit/SimpleHTMLGen.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** SimpleHTMLGen.py 29 Oct 2002 05:21:49 -0000 1.3 --- SimpleHTMLGen.py 30 Mar 2003 18:58:41 -0000 1.4 *************** *** 96,102 **** if type(args) not in (type(()), type([])): args = (args,) ! htmlArgs = [' %s="%s"' % (attrEncode(attr), htmlEncode(value)) ! for attr, value in kw.items() ! if value is not Exclude] if not args and emptyTags.has_key(tag): if blockTags.has_key(tag): --- 96,109 ---- if type(args) not in (type(()), type([])): args = (args,) ! #htmlArgs = [' %s="%s"' % (attrEncode(attr), htmlEncode(value)) ! # for attr, value in kw.items() ! # if value is not Exclude] ! htmlArgs = [] ! for attr, value in kw.items(): ! if value is Exclude: continue ! if value is NoValue: ! htmlArgs.append(' %s' % attrEncode(attr)) ! else: ! htmlArgs.append(' %s="%s"' % (attrEncode(attr), htmlEncode(value))) if not args and emptyTags.has_key(tag): if blockTags.has_key(tag): *************** *** 139,142 **** --- 146,152 ---- class Exclude: + pass + + class NoValue: pass Index: Field.py =================================================================== RCS file: /cvsroot/funformkit/FunFormKit/Field.py,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** Field.py 30 Mar 2003 17:25:31 -0000 1.23 --- Field.py 30 Mar 2003 18:58:41 -0000 1.24 *************** *** 56,60 **** import time, md5, whrandom, os from types import * ! from SimpleHTMLGen import html, Exclude class NotImplementedError(Exception): pass --- 56,60 ---- import time, md5, whrandom, os from types import * ! from SimpleHTMLGen import html, Exclude, NoValue class NotImplementedError(Exception): pass *************** *** 1290,1293 **** --- 1290,1332 ---- out.write(html.br()) + def htHidden(self, default, options, nameMap=identity): + """The HTML for a hidden input (<input type="hidden">) + This should be overridden if you override valueFromFields()""" + id = 0 + out = "" + selections = options["selections"] + static = options.get("static") + if static: + flag = NoValue + for key, value in selections: + id = id + 1 + if static: + out += html.input.checkbox( + name=nameMap(self.name()), + disabled = flag, + id="%s_%2i" % (nameMap(self.name()), id), + value=self.encode(key), + checked=self.selected(key, default) and "checked" \ + or Exclude) + out += html.label( + " " + htmlEncode(value), + for_="%s_%2i" % (nameMap(self.name()), id)) + if self.selected(key, default): + out += html.input.hidden( + name=nameMap(self.name()), + id="%s_%2i" % (nameMap(self.name()), id), + value=self.encode(key)) + out += html.br() + return out + + def htWidget(self, default, options, nameMap=identity): + if options.get("static"): + return self.htHidden(default, options, nameMap=nameMap) + elif options.get("hide"): + return self.htHidden(default, options, nameMap=nameMap) + else: + return self.htInput(default, options, nameMap=nameMap) + + class CheckboxField(Field): *************** *** 1298,1307 **** def valueFromFields(self, fields, nameMap=identity): ! return fields.get(nameMap(self.name()), False) def htHidden(self, default, options, nameMap=identity): ! if default: value="checked" ! else: value="" ! return html.input.hidden(name=nameMap(self.name()), value=value) class DateField(Field): --- 1337,1362 ---- def valueFromFields(self, fields, nameMap=identity): ! return fields.get(nameMap(self.name()), False) == "on" + def htWidget(self, default, options, nameMap=identity): + if options.get("static"): + return self.htHidden(default, options, nameMap=nameMap) + \ + self.htHidden(default, {}, nameMap=nameMap) + elif options.get("hide"): + return self.htHidden(default, options, nameMap=nameMap) + else: + return self.htInput(default, options, nameMap=nameMap) + def htHidden(self, default, options, nameMap=identity): ! if default: ! value = "on" ! else: ! value = "" ! if options.get("static"): ! return html.input.checkbox(disabled=NoValue, ! name=nameMap(self.name()), ! checked = default and "checked" or Exclude) ! else: ! return html.input.hidden(name=nameMap(self.name()), value=value) class DateField(Field): |