@@ -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