Skip to content

Commit 9c9f8d4

Browse files
author
Richard Jones
committed
Better form name mangling, doesn't confuse other things like generic editing.
1 parent 30a0878 commit 9c9f8d4

File tree

3 files changed

+24
-20
lines changed

3 files changed

+24
-20
lines changed

TODO.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ pending mailgw Identification of users should have a configurable degree of
2828
pending mailgw Use in-reply-to for determining message lineage when subject
2929
line lets us down
3030
pending mailgw Allow different brackets delimiting [issueNNN] in Subject
31+
pending mailgw Have mailgw detect reply email with rego OTKs and complete
32+
the rego.
3133
pending email email sig could use a "remove me from this list"
3234
<URL>/<designator>?:remove:nosy=me
3335
pending project switch to a Roundup instance for Roundup bug/feature tracking

roundup/cgi/client.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: client.py,v 1.97 2003-02-25 10:19:32 richard Exp $
1+
# $Id: client.py,v 1.98 2003-02-26 04:08:04 richard Exp $
22

33
__doc__ = """
44
WWW request handler (also used in the stand-alone server).
@@ -452,7 +452,7 @@ def renderContext(self):
452452
# these are the actions that are available
453453
actions = (
454454
('edit', 'editItemAction'),
455-
('editCSV', 'editCSVAction'),
455+
('editcsv', 'editCSVAction'),
456456
('new', 'newItemAction'),
457457
('register', 'registerAction'),
458458
('confrego', 'confRegoAction'),
@@ -469,6 +469,7 @@ def handle_action(self):
469469
identifies the method on this object to call. The four basic
470470
actions are defined in the "actions" sequence on this class:
471471
"edit" -> self.editItemAction
472+
"editcsv" -> self.editCSVAction
472473
"new" -> self.newItemAction
473474
"register" -> self.registerAction
474475
"confrego" -> self.confRegoAction

roundup/cgi/templating.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -784,12 +784,13 @@ def __init__(self, client, classname, nodeid, prop, name, value,
784784
self._prop = prop
785785
self._value = value
786786
self._anonymous = anonymous
787+
self._name = name
787788
if not anonymous:
788-
self._name = '%s%s@%s'%(classname, nodeid, name)
789+
self._formname = '%s%s@%s'%(classname, nodeid, name)
789790
else:
790-
self._name = name
791+
self._formname = name
791792
def __repr__(self):
792-
return '<HTMLProperty(0x%x) %s %r %r>'%(id(self), self._name,
793+
return '<HTMLProperty(0x%x) %s %r %r>'%(id(self), self._formname,
793794
self._prop, self._value)
794795
def __str__(self):
795796
return self.plain()
@@ -857,7 +858,7 @@ def field(self, size = 30):
857858
else:
858859
value = cgi.escape(str(self._value))
859860
value = '&quot;'.join(value.split('"'))
860-
return '<input name="%s" value="%s" size="%s">'%(self._name, value, size)
861+
return '<input name="%s" value="%s" size="%s">'%(self._formname, value, size)
861862

862863
def multiline(self, escape=0, rows=5, cols=40):
863864
''' Render a multiline form edit field for the property
@@ -868,7 +869,7 @@ def multiline(self, escape=0, rows=5, cols=40):
868869
value = cgi.escape(str(self._value))
869870
value = '&quot;'.join(value.split('"'))
870871
return '<textarea name="%s" rows="%s" cols="%s">%s</textarea>'%(
871-
self._name, rows, cols, value)
872+
self._formname, rows, cols, value)
872873

873874
def email(self, escape=1):
874875
''' Render the value of the property as an obscured email address
@@ -897,15 +898,15 @@ def plain(self):
897898
def field(self, size = 30):
898899
''' Render a form edit field for the property.
899900
'''
900-
return '<input type="password" name="%s" size="%s">'%(self._name, size)
901+
return '<input type="password" name="%s" size="%s">'%(self._formname, size)
901902

902903
def confirm(self, size = 30):
903904
''' Render a second form edit field for the property, used for
904905
confirmation that the user typed the password correctly. Generates
905906
a field with name ":confirm:name".
906907
'''
907908
return '<input type="password" name=":confirm:%s" size="%s">'%(
908-
self._name, size)
909+
self._formname, size)
909910

910911
class NumberHTMLProperty(HTMLProperty):
911912
def plain(self):
@@ -921,7 +922,7 @@ def field(self, size = 30):
921922
else:
922923
value = cgi.escape(str(self._value))
923924
value = '&quot;'.join(value.split('"'))
924-
return '<input name="%s" value="%s" size="%s">'%(self._name, value, size)
925+
return '<input name="%s" value="%s" size="%s">'%(self._formname, value, size)
925926

926927
class BooleanHTMLProperty(HTMLProperty):
927928
def plain(self):
@@ -935,13 +936,13 @@ def field(self):
935936
''' Render a form edit field for the property
936937
'''
937938
checked = self._value and "checked" or ""
938-
s = '<input type="radio" name="%s" value="yes" %s>Yes'%(self._name,
939+
s = '<input type="radio" name="%s" value="yes" %s>Yes'%(self._formname,
939940
checked)
940941
if checked:
941942
checked = ""
942943
else:
943944
checked = "checked"
944-
s += '<input type="radio" name="%s" value="no" %s>No'%(self._name,
945+
s += '<input type="radio" name="%s" value="no" %s>No'%(self._formname,
945946
checked)
946947
return s
947948

@@ -960,7 +961,7 @@ def now(self):
960961
DateHTMLProperty.
961962
'''
962963
return DateHTMLProperty(self._client, self._nodeid, self._prop,
963-
self._name, date.Date('.'))
964+
self._formname, date.Date('.'))
964965

965966
def field(self, size = 30):
966967
''' Render a form edit field for the property
@@ -970,7 +971,7 @@ def field(self, size = 30):
970971
else:
971972
value = cgi.escape(str(self._value.local(self._db.getUserTimezone())))
972973
value = '&quot;'.join(value.split('"'))
973-
return '<input name="%s" value="%s" size="%s">'%(self._name, value, size)
974+
return '<input name="%s" value="%s" size="%s">'%(self._formname, value, size)
974975

975976
def reldate(self, pretty=1):
976977
''' Render the interval between the date and now.
@@ -1004,7 +1005,7 @@ def local(self, offset):
10041005
''' Return the date/time as a local (timezone offset) date/time.
10051006
'''
10061007
return DateHTMLProperty(self._client, self._nodeid, self._prop,
1007-
self._name, self._value.local(offset))
1008+
self._formname, self._value.local(offset))
10081009

10091010
class IntervalHTMLProperty(HTMLProperty):
10101011
def plain(self):
@@ -1027,7 +1028,7 @@ def field(self, size = 30):
10271028
else:
10281029
value = cgi.escape(str(self._value))
10291030
value = '&quot;'.join(value.split('"'))
1030-
return '<input name="%s" value="%s" size="%s">'%(self._name, value, size)
1031+
return '<input name="%s" value="%s" size="%s">'%(self._formname, value, size)
10311032

10321033
class LinkHTMLProperty(HTMLProperty):
10331034
''' Link HTMLProperty
@@ -1080,7 +1081,7 @@ def field(self, showid=0, size=None):
10801081
sort_on = linkcl.labelprop()
10811082
options = linkcl.filter(None, {}, ('+', sort_on), (None, None))
10821083
# TODO: make this a field display, not a menu one!
1083-
l = ['<select name="%s">'%self._name]
1084+
l = ['<select name="%s">'%self._formname]
10841085
k = linkcl.labelprop(1)
10851086
if self._value is None:
10861087
s = 'selected '
@@ -1127,7 +1128,7 @@ def menu(self, size=None, height=None, showid=0, additional=[],
11271128
sortfunc = make_sort_function(self._db, self._prop.classname)
11281129

11291130
linkcl = self._db.getclass(self._prop.classname)
1130-
l = ['<select name="%s">'%self._name]
1131+
l = ['<select name="%s">'%self._formname]
11311132
k = linkcl.labelprop(1)
11321133
s = ''
11331134
if value is None:
@@ -1244,7 +1245,7 @@ def field(self, size=30, showid=0):
12441245
k = linkcl.labelprop(1)
12451246
value = [linkcl.get(v, k) for v in value]
12461247
value = cgi.escape(','.join(value))
1247-
return '<input name="%s" size="%s" value="%s">'%(self._name, size, value)
1248+
return '<input name="%s" size="%s" value="%s">'%(self._formname, size, value)
12481249

12491250
def menu(self, size=None, height=None, showid=0, additional=[],
12501251
**conditions):
@@ -1262,7 +1263,7 @@ def menu(self, size=None, height=None, showid=0, additional=[],
12621263
sort_on = ('+', linkcl.labelprop())
12631264
options = linkcl.filter(None, conditions, sort_on, (None,None))
12641265
height = height or min(len(options), 7)
1265-
l = ['<select multiple name="%s" size="%s">'%(self._name, height)]
1266+
l = ['<select multiple name="%s" size="%s">'%(self._formname, height)]
12661267
k = linkcl.labelprop(1)
12671268

12681269
# make sure we list the current values if they're retired

0 commit comments

Comments
 (0)