Modify ↓
#5748 closed defect (fixed)
PeerReview search on date fail on non-US locales
Reported by: | Owned by: | Marc | |
---|---|---|---|
Priority: | normal | Component: | PeerReviewPlugin |
Severity: | normal | Keywords: | |
Cc: | Trac Release: | 0.11 |
Description (last modified by )
I'm running the current subversion version (r6459) of the 2.2-dev branch of the plugin, over a 0.11.5 trac. I see the following error when I perform a "search code reviews" and specify a date for "Reviews after date":
Most recent call last: * File "/home/arbit/opt/2/x86_64/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/web/main.py", line 444, in _dispatch_request Code fragment: 439. try: 440. if not env and env_error: 441. raise HTTPInternalError(env_error) 442. try: 443. dispatcher = RequestDispatcher(env) 444. dispatcher.dispatch(req) 445. except RequestDone: 446. pass 447. resp = req._response or [] 448. 449. except HTTPException, e: Local variables: Name Value after [u' except RequestDone:', u' pass', u' resp = ... before [u' try:', u' if not env and env_error:', u' raise ... dispatcher <trac.web.main.RequestDispatcher object at 0xc985c50> e ValueError(u'time data did not match format: data=08/01/09 fmt=%x',) env <trac.env.Environment object at 0xc660250> env_error None exc_info (<type 'exceptions.ValueError'>, ValueError(u'time data did not match ... filename '/home/arbit/opt/2/x86_64/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg ... frames [{'function': '_dispatch_request', 'lines_before': [u' try:', u' ... has_admin True line u' dispatcher.dispatch(req)' lineno 443 message u'ValueError: time data did not match format: data=08/01/09 fmt=%x' req <Request "POST u'/peerReviewSearch'"> resp [] tb <traceback object at 0xd16a0e0> tb_hide None traceback u'Traceback (most recent call last):\n File ... * File "/home/arbit/opt/2/x86_64/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/web/main.py", line 205, in dispatch Code fragment: 200. req.args.get('__FORM_TOKEN') != req.form_token: 201. raise HTTPBadRequest('Missing or invalid form token. ' 202. 'Do you have cookies enabled?') 203. 204. # Process the request and render the template 205. resp = chosen_handler.process_request(req) 206. if resp: 207. if len(resp) == 2: # Clearsilver 208. chrome.populate_hdf(req) 209. template, content_type = \ 210. self._post_process_request(req, *resp) Local variables: Name Value chosen_handler <codereview.peerReviewSearch.UserbaseModule object at 0xc98d090> chrome <trac.web.chrome.Chrome object at 0xc985a10> ctype 'application/x-www-form-urlencoded' err (<type 'exceptions.ValueError'>, ValueError(u'time data did not match ... handler <codereview.peerReviewSearch.UserbaseModule object at 0xc98d090> options {} req <Request "POST u'/peerReviewSearch'"> self <trac.web.main.RequestDispatcher object at 0xc985c50> * File "build/bdist.linux-i686/egg/codereview/peerReviewSearch.py", line 52, in process_request Local variables: Name Value data {'searchValues_author': u'Select...', 'searchValues_day': u'01', ... req <Request "POST u'/peerReviewSearch'"> self <codereview.peerReviewSearch.UserbaseModule object at 0xc98d090> * File "build/bdist.linux-i686/egg/codereview/peerReviewSearch.py", line 138, in performSearch Local variables: Name Value author u'Select...' crStruct <codereview.CodeReviewStruct.CodeReviewStruct object at 0xd0ff4d0> data {'searchValues_author': u'Select...', 'searchValues_day': u'01', ... day u'01' fromdate '-1' month u'08' name u'' req <Request "POST u'/peerReviewSearch'"> self <codereview.peerReviewSearch.UserbaseModule object at 0xc98d090> status u'Select...' year u'2009' * File "/home/arbit/opt/2/x86_64/lib/python2.5/_strptime.py", line 330, in strptime Code fragment: 325. finally: 326. _cache_lock.release() 327. found = format_regex.match(data_string) 328. if not found: 329. raise ValueError("time data did not match format: data=%s fmt=%s" % 330. (data_string, format)) 331. if len(data_string) != found.end(): 332. raise ValueError("unconverted data remains: %s" % 333. data_string[found.end():]) 334. year = 1900 335. month = day = 1 Local variables: Name Value data_string u'08/01/09' format '%x' format_regex <_sre.SRE_Pattern object at 0xcc98a20> found None locale_time <_strptime.LocaleTime object at 0xd00e350> File "/home/arbit/opt/2/x86_64/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/web/main.py", line 444, in _dispatch_request dispatcher.dispatch(req) File "/home/arbit/opt/2/x86_64/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/web/main.py", line 205, in dispatch resp = chosen_handler.process_request(req) File "build/bdist.linux-i686/egg/codereview/peerReviewSearch.py", line 52, in process_requestFile "build/bdist.linux-i686/egg/codereview/peerReviewSearch.py", line 138, in performSearchFile "/home/arbit/opt/2/x86_64/lib/python2.5/_strptime.py", line 330, in strptime (data_string, format))
It is clear that the culprit is the following line in the peerReviewSearch function:
t = time.strptime(month + '/' + day + '/' + year[2] + year[3], '%x')
This does not work in all locale, since "%x"
means the following, as described in the manual of the time module:
%x: Locale’s appropriate date representation
Since the date string constructed by the program is always in a particular format, I suggest changing it to:
t = time.strptime(month + '/' + day + '/' + year[2] + year[3], '%m/%d/%y')
Attachments (0)
Change History (4)
comment:1 Changed 14 years ago by
Owner: | changed from mikechml to Marc |
---|
comment:2 Changed 11 years ago by
comment:4 Changed 9 years ago by
Description: | modified (diff) |
---|
Note: See
TracTickets for help on using
tickets.
I ran into this issue as well.
Regarding changing the strptime date format from '%x' to '%m/%d/%y' ... This fixed it for me!
I recommend applying this patch.