#12682 closed defect (fixed)
TypeError: expected string or buffer
Reported by: | Ryan J Ollos | Owned by: | Ryan J Ollos |
---|---|---|---|
Priority: | normal | Milestone: | 1.0.14 |
Component: | search system | Version: | |
Severity: | normal | Keywords: | |
Cc: | Branch: | ||
Release Notes: |
Fixed |
||
API Changes: | |||
Internal Changes: |
Description
2017-02-07 16:14:11,290 Trac[main] ERROR: Internal Server Error: <RequestWithSession "GET '/search?q=aHR0cHM6Ly90cmFjLWhhY2tzLm9yZy9uZXd0aWNrZXQ%3D&____pgfa=aHR0cHM6Ly90cmFjLWhhY2tzLm9yZy9zZWFyY2g%253D&q='">, referrer 'https://trac-hacks.org/newticket' Traceback (most recent call last): File "/srv/trac-hacks.org/pve/local/lib/python2.7/site-packages/trac/web/main.py", line 562, in _dispatch_request dispatcher.dispatch(req) File "/srv/trac-hacks.org/pve/local/lib/python2.7/site-packages/trac/web/main.py", line 249, in dispatch resp = chosen_handler.process_request(req) File "/srv/trac-hacks.org/pve/local/lib/python2.7/site-packages/trac/search/web_ui.py", line 100, in process_request data['quickjump'] = self._check_quickjump(req, query) File "/srv/trac-hacks.org/pve/local/lib/python2.7/site-packages/trac/search/web_ui.py", line 169, in _check_quickjump link = find_element(extract_link(self.env, context, kwd), 'href') File "/srv/trac-hacks.org/pve/local/lib/python2.7/site-packages/trac/wiki/formatter.py", line 1598, in extract_link return LinkFormatter(env, context).match(wikidom) File "/srv/trac-hacks.org/pve/local/lib/python2.7/site-packages/trac/wiki/formatter.py", line 1514, in match match = re.match(self.wikiparser.rules, wikitext) File "/srv/trac-hacks.org/pve/lib/python2.7/re.py", line 141, in match return _compile(pattern, flags).match(string) TypeError: expected string or buffer
This can be reproduced with /search?q=a&q=.
Attachments (0)
Change History (8)
comment:1 by , 8 years ago
Release Notes: | modified (diff) |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
comment:2 by , 8 years ago
How many times do we actually want all occurrences of a repeated parameter? col
in /query, a few others maybe, but for the most case, we expect scalar values. Can't we make getfirst
the default (i.e. alias get
to getfirst
), and use getall
explicitly when we expect an array?
comment:3 by , 8 years ago
I had a similar thought a few hours after committing the change. The only downside I see is that it's an API change that plugins would need to immediately adapt to.
comment:4 by , 8 years ago
I was also considering adding a method to retrieve a binary integer, to handle the common pattern of '0'
and '1'
in the args: req.args.getint('asc', 1, min=0, max=1)
→ req.args.getbint('asc', 1)
.
comment:5 by , 8 years ago
Another traceback found today that would be fixed by making get
alias getfirst
:
2017-02-09 17:09:23,634 Trac[main] ERROR: Internal Server Error: <RequestWithSession "GET '/query?milestone=1.4.3&group=status&page=4&desc=1&order=component&row=description&coi=1494&npp=2&p=0&pp=0&mid=9&ep=2&du=https%3a//bugs.jquery.com/query?milestone=1.4.3&group=status&page=4&...=E71449111ACF9D8A165B8722E2317E7E'">, referrer 'https://bugs.jquery.com/query?milestone=1.4.3&group=status&page=4&desc=1&order=component&row=description&coi=1494&npp=2&p=0&pp=0&mid=9&ep=2&du=https%3a//cnc-printers.ru%2Fuser%2FNidaHeist1%2F' Traceback (most recent call last): File "/var/www/bugs.jquery.com/private/pve/local/lib/python2.7/site-packages/trac/web/main.py", line 562, in _dispatch_request dispatcher.dispatch(req) File "/var/www/bugs.jquery.com/private/pve/local/lib/python2.7/site-packages/trac/web/main.py", line 249, in dispatch resp = chosen_handler.process_request(req) File "/var/www/bugs.jquery.com/private/pve/local/lib/python2.7/site-packages/trac/ticket/query.py", line 983, in process_request max) File "/var/www/bugs.jquery.com/private/pve/local/lib/python2.7/site-packages/trac/ticket/query.py", line 91, in __init__ self.page = int(page) TypeError: int() argument must be a string or a number, not 'list'
comment:6 by , 8 years ago
Yes, in the long run I think that would pay off. Anyway, the current API of Request.get()
is not very Pythonic, returning either a scalar or a vector, depending on what was given. As we have no real control over what's given, it can really be one or the other anytime.
Regarding getbint
, yes, but maybe getbinary
instead?
Committed to 1.0-stable in r15512, merged to 1.2-stable in r15513, merged to trunk in r15514.