Skip to content

Commit 32834a9

Browse files
author
Richard Jones
committed
oops, forgot the templating :)
1 parent 975ea93 commit 32834a9

File tree

2 files changed

+86
-52
lines changed

2 files changed

+86
-52
lines changed

roundup/cgi/client.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: client.py,v 1.79 2003-02-12 06:41:58 richard Exp $
1+
# $Id: client.py,v 1.80 2003-02-12 07:02:22 richard Exp $
22

33
__doc__ = """
44
WWW request handler (also used in the stand-alone server).
@@ -89,19 +89,30 @@ class Client:
8989
9090
'''
9191

92+
#
9293
# special form variables
94+
#
9395
FV_TEMPLATE = re.compile(r'[@+:]template')
9496
FV_OK_MESSAGE = re.compile(r'[@+:]ok_message')
9597
FV_ERROR_MESSAGE = re.compile(r'[@+:]error_message')
98+
99+
# specials for parsePropsFromForm
96100
FV_REQUIRED = re.compile(r'[@+:]required')
101+
FV_ADD = re.compile(r'([@+:])add\1')
102+
FV_REMOVE = re.compile(r'([@+:])remove\1')
103+
FV_CONFIRM = re.compile(r'.+[@+:]confirm')
104+
105+
# post-edi
97106
FV_LINK = re.compile(r'[@+:]link')
98107
FV_MULTILINK = re.compile(r'[@+:]multilink')
108+
109+
# deprecated
99110
FV_NOTE = re.compile(r'[@+:]note')
100111
FV_FILE = re.compile(r'[@+:]file')
101-
FV_ADD = re.compile(r'([@+:])add\1')
102-
FV_REMOVE = re.compile(r'([@+:])remove\1')
103-
FV_CONFIRM = re.compile(r'.+[@+:]confirm')
104-
FV_SPLITTER = re.compile(r'[@+:]')
112+
113+
# Note: index page stuff doesn't appear here:
114+
# columns, sort, sortdir, filter, group, groupdir, search_text,
115+
# pagesize, startwith
105116

106117
def __init__(self, instance, request, env, form=None):
107118
hyperdb.traceMark()
@@ -653,7 +664,7 @@ def registerAction(self):
653664
cl = self.db.user
654665
try:
655666
props['roles'] = self.instance.config.NEW_WEB_USER_ROLES
656-
self.userid = cl.create(**props)
667+
self.userid = cl.create(**props['user'])
657668
self.db.commit()
658669
except (ValueError, KeyError), message:
659670
self.error_message.append(message)
@@ -724,10 +735,13 @@ def editItemAction(self):
724735
self.__dict__))
725736
return
726737

738+
# identify the entry in the props parsed from the form
739+
this = self.classname + self.nodeid
740+
727741
# perform the edit
728742
try:
729743
# make changes to the node
730-
props = self._changenode(props)
744+
props = self._changenode(props[this])
731745
# handle linked nodes
732746
self._post_editnode(self.nodeid)
733747
except (ValueError, KeyError, IndexError), message:
@@ -803,7 +817,7 @@ def newItemAction(self):
803817

804818
try:
805819
# do the create
806-
nid = self._createnode(props)
820+
nid = self._createnode(props[self.classname])
807821
except (ValueError, KeyError, IndexError), message:
808822
# these errors might just be indicative of user dumbness
809823
self.error_message.append(_('Error: ') + str(message))

roundup/cgi/templating.py

Lines changed: 64 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1341,43 +1341,56 @@ def __init__(self, client):
13411341
self.classname = client.classname
13421342
self.template = client.template
13431343

1344+
# the special char to use for special vars
1345+
self.special_char = '@'
1346+
13441347
self._post_init()
13451348

13461349
def _post_init(self):
13471350
''' Set attributes based on self.form
13481351
'''
13491352
# extract the index display information from the form
13501353
self.columns = []
1351-
if self.form.has_key(':columns'):
1352-
self.columns = handleListCGIValue(self.form[':columns'])
1354+
for name in ':columns +columns @columns'.split():
1355+
if self.form.has_key(name):
1356+
self.special_char = name[0]
1357+
self.columns = handleListCGIValue(self.form[name])
1358+
break
13531359
self.show = ShowDict(self.columns)
13541360

13551361
# sorting
13561362
self.sort = (None, None)
1357-
if self.form.has_key(':sort'):
1358-
sort = self.form[':sort'].value
1359-
if sort.startswith('-'):
1360-
self.sort = ('-', sort[1:])
1361-
else:
1362-
self.sort = ('+', sort)
1363-
if self.form.has_key(':sortdir'):
1364-
self.sort = ('-', self.sort[1])
1363+
for name in ':sort +sort @sort'.split():
1364+
if self.form.has_key(name):
1365+
self.special_char = name[0]
1366+
sort = self.form[name].value
1367+
if sort.startswith('-'):
1368+
self.sort = ('-', sort[1:])
1369+
else:
1370+
self.sort = ('+', sort)
1371+
if self.form.has_key(self.special_char+'sortdir'):
1372+
self.sort = ('-', self.sort[1])
13651373

13661374
# grouping
13671375
self.group = (None, None)
1368-
if self.form.has_key(':group'):
1369-
group = self.form[':group'].value
1370-
if group.startswith('-'):
1371-
self.group = ('-', group[1:])
1372-
else:
1373-
self.group = ('+', group)
1374-
if self.form.has_key(':groupdir'):
1375-
self.group = ('-', self.group[1])
1376+
for name in ':group +group @group'.split():
1377+
if self.form.has_key(name):
1378+
self.special_char = name[0]
1379+
group = self.form[name].value
1380+
if group.startswith('-'):
1381+
self.group = ('-', group[1:])
1382+
else:
1383+
self.group = ('+', group)
1384+
if self.form.has_key(self.special_char+'groupdir'):
1385+
self.group = ('-', self.group[1])
13761386

13771387
# filtering
13781388
self.filter = []
1379-
if self.form.has_key(':filter'):
1380-
self.filter = handleListCGIValue(self.form[':filter'])
1389+
for name in ':filter +filter @filter'.split():
1390+
if self.form.has_key(name):
1391+
self.special_char = name[0]
1392+
self.filter = handleListCGIValue(self.form[name])
1393+
13811394
self.filterspec = {}
13821395
db = self.client.db
13831396
if self.classname is not None:
@@ -1395,19 +1408,24 @@ def _post_init(self):
13951408

13961409
# full-text search argument
13971410
self.search_text = None
1398-
if self.form.has_key(':search_text'):
1399-
self.search_text = self.form[':search_text'].value
1411+
for name in ':search_text +search_text @search_text'.split():
1412+
if self.form.has_key(name):
1413+
self.special_char = name[0]
1414+
self.search_text = self.form[name].value
14001415

14011416
# pagination - size and start index
14021417
# figure batch args
1403-
if self.form.has_key(':pagesize'):
1404-
self.pagesize = int(self.form[':pagesize'].value)
1405-
else:
1406-
self.pagesize = 50
1407-
if self.form.has_key(':startwith'):
1408-
self.startwith = int(self.form[':startwith'].value)
1409-
else:
1410-
self.startwith = 0
1418+
self.pagesize = 50
1419+
for name in ':pagesize +pagesize @pagesize'.split():
1420+
if self.form.has_key(name):
1421+
self.special_char = name[0]
1422+
self.pagesize = int(self.form[name].value)
1423+
1424+
self.startwith = 0
1425+
for name in ':startwith +startwith @startwith'.split():
1426+
if self.form.has_key(name):
1427+
self.special_char = name[0]
1428+
self.startwith = int(self.form[name].value)
14111429

14121430
def updateFromURL(self, url):
14131431
''' Parse the URL for query args, and update my attributes using the
@@ -1480,66 +1498,68 @@ def indexargs_form(self, columns=1, sort=1, group=1, filter=1,
14801498
filterspec=1):
14811499
''' return the current index args as form elements '''
14821500
l = []
1501+
sc = self.special_char
14831502
s = '<input type="hidden" name="%s" value="%s">'
14841503
if columns and self.columns:
1485-
l.append(s%(':columns', ','.join(self.columns)))
1504+
l.append(s%(sc+'columns', ','.join(self.columns)))
14861505
if sort and self.sort[1] is not None:
14871506
if self.sort[0] == '-':
14881507
val = '-'+self.sort[1]
14891508
else:
14901509
val = self.sort[1]
1491-
l.append(s%(':sort', val))
1510+
l.append(s%(sc+'sort', val))
14921511
if group and self.group[1] is not None:
14931512
if self.group[0] == '-':
14941513
val = '-'+self.group[1]
14951514
else:
14961515
val = self.group[1]
1497-
l.append(s%(':group', val))
1516+
l.append(s%(sc+'group', val))
14981517
if filter and self.filter:
1499-
l.append(s%(':filter', ','.join(self.filter)))
1518+
l.append(s%(sc+'filter', ','.join(self.filter)))
15001519
if filterspec:
15011520
for k,v in self.filterspec.items():
15021521
if type(v) == type([]):
15031522
l.append(s%(k, ','.join(v)))
15041523
else:
15051524
l.append(s%(k, v))
15061525
if self.search_text:
1507-
l.append(s%(':search_text', self.search_text))
1508-
l.append(s%(':pagesize', self.pagesize))
1509-
l.append(s%(':startwith', self.startwith))
1526+
l.append(s%(sc+'search_text', self.search_text))
1527+
l.append(s%(sc+'pagesize', self.pagesize))
1528+
l.append(s%(sc+'startwith', self.startwith))
15101529
return '\n'.join(l)
15111530

15121531
def indexargs_url(self, url, args):
15131532
''' embed the current index args in a URL '''
1533+
sc = self.special_char
15141534
l = ['%s=%s'%(k,v) for k,v in args.items()]
15151535
if self.columns and not args.has_key(':columns'):
1516-
l.append(':columns=%s'%(','.join(self.columns)))
1536+
l.append(sc+'columns=%s'%(','.join(self.columns)))
15171537
if self.sort[1] is not None and not args.has_key(':sort'):
15181538
if self.sort[0] == '-':
15191539
val = '-'+self.sort[1]
15201540
else:
15211541
val = self.sort[1]
1522-
l.append(':sort=%s'%val)
1542+
l.append(sc+'sort=%s'%val)
15231543
if self.group[1] is not None and not args.has_key(':group'):
15241544
if self.group[0] == '-':
15251545
val = '-'+self.group[1]
15261546
else:
15271547
val = self.group[1]
1528-
l.append(':group=%s'%val)
1548+
l.append(sc+'group=%s'%val)
15291549
if self.filter and not args.has_key(':filter'):
1530-
l.append(':filter=%s'%(','.join(self.filter)))
1550+
l.append(sc+'filter=%s'%(','.join(self.filter)))
15311551
for k,v in self.filterspec.items():
15321552
if not args.has_key(k):
15331553
if type(v) == type([]):
15341554
l.append('%s=%s'%(k, ','.join(v)))
15351555
else:
15361556
l.append('%s=%s'%(k, v))
15371557
if self.search_text and not args.has_key(':search_text'):
1538-
l.append(':search_text=%s'%self.search_text)
1558+
l.append(sc+'search_text=%s'%self.search_text)
15391559
if not args.has_key(':pagesize'):
1540-
l.append(':pagesize=%s'%self.pagesize)
1560+
l.append(sc+'pagesize=%s'%self.pagesize)
15411561
if not args.has_key(':startwith'):
1542-
l.append(':startwith=%s'%self.startwith)
1562+
l.append(sc+'startwith=%s'%self.startwith)
15431563
return '%s?%s'%(url, '&'.join(l))
15441564
indexargs_href = indexargs_url
15451565

0 commit comments

Comments
 (0)