|
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):
|