Changeset 8777
- Timestamp:
- 08/31/08 17:47:25 (3 months ago)
- Files:
-
- django/trunk/django/core/urlresolvers.py (modified) (1 diff)
- django/trunk/django/utils/regex_helper.py (modified) (10 diffs)
- django/trunk/tests/regressiontests/templates/tests.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/core/urlresolvers.py
r8760 r8777 229 229 if len(args) != len(params): 230 230 continue 231 candidate = result % dict(zip(params, args)) 231 unicode_args = [force_unicode(val) for val in args] 232 candidate = result % dict(zip(params, unicode_args)) 232 233 else: 233 234 if set(kwargs.keys()) != set(params): 234 235 continue 235 candidate = result % kwargs 236 if re.search('^%s' % pattern, candidate, re.UNICODE): 236 unicode_kwargs = dict([(k, force_unicode(v)) for (k, v) in kwargs.items()]) 237 candidate = result % unicode_kwargs 238 if re.search(u'^%s' % pattern, candidate, re.UNICODE): 237 239 return candidate 238 240 raise NoReverseMatch("Reverse for '%s' with arguments '%s' and keyword " django/trunk/django/utils/regex_helper.py
r8763 r8777 14 14 "b": None, 15 15 "B": None, 16 "d": '0',17 "D": "x",18 "s": " ",19 "S": "x",20 "w": "x",21 "W": "!",16 "d": u"0", 17 "D": u"x", 18 "s": u" ", 19 "S": u"x", 20 "w": u"x", 21 "W": u"!", 22 22 "Z": None, 23 23 } … … 78 78 ch, escaped = pattern_iter.next() 79 79 except StopIteration: 80 return zip([ ''], [[]])80 return zip([u''], [[]]) 81 81 82 82 try: … … 86 86 elif ch == '.': 87 87 # Replace "any character" with an arbitrary representative. 88 result.append( "x")88 result.append(u"x") 89 89 elif ch == '|': 90 90 # FIXME: One day we'll should do this, but not in 1.0. … … 118 118 name = "_%d" % num_args 119 119 num_args += 1 120 result.append(Group((( "%%(%s)s" % name), name)))120 result.append(Group(((u"%%(%s)s" % name), name))) 121 121 walk_to_end(ch, pattern_iter) 122 122 else: … … 145 145 ch, escaped = pattern_iter.next() 146 146 param = ''.join(name) 147 result.append(Group((( "%%(%s)s" % param), param)))147 result.append(Group(((u"%%(%s)s" % param), param))) 148 148 walk_to_end(ch, pattern_iter) 149 149 elif ch in "*?+{": … … 181 181 except NotImplementedError: 182 182 # A case of using the disjunctive form. No results for you! 183 return zip([ ''], [[]])183 return zip([u''], [[]]) 184 184 185 185 return zip(*flatten_result(result)) … … 280 280 """ 281 281 if source is None: 282 return [ ''], [[]]282 return [u''], [[]] 283 283 if isinstance(source, Group): 284 284 if source[1] is None: … … 287 287 params = [source[1]] 288 288 return [source[0]], [params] 289 result = [ '']289 result = [u''] 290 290 result_args = [[]] 291 291 pos = last = 0 … … 293 293 if isinstance(elt, basestring): 294 294 continue 295 piece = ''.join(source[last:pos])295 piece = u''.join(source[last:pos]) 296 296 if isinstance(elt, Group): 297 297 piece += elt[0] … … 321 321 result_args = new_args 322 322 if pos >= last: 323 piece = ''.join(source[last:])323 piece = u''.join(source[last:]) 324 324 for i in range(len(result)): 325 325 result[i] += piece django/trunk/tests/regressiontests/templates/tests.py
r8769 r8777 195 195 except Exception, e: 196 196 if e.__class__ != result: 197 raise 197 198 failures.append("Template test (TEMPLATE_STRING_IF_INVALID='%s'): %s -- FAILED. Got %s, exception: %s" % (invalid_str, name, e.__class__, e)) 198 199 continue … … 900 901 'url06': (u'{% url метка_оператора_2 tag=v %}', {'v': u'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'), 901 902 'url07': (u'{% url regressiontests.templates.views.client2 tag=v %}', {'v': u'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'), 903 'url08': (u'{% url метка_оператора v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'), 904 'url09': (u'{% url метка_оператора_2 tag=v %}', {'v': 'Ω'}, '/url_tag/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4/%CE%A9/'), 902 905 903 906 # Failures
