Django

Code

Changeset 5585

Show
Ignore:
Timestamp:
07/02/07 07:24:58 (1 year ago)
Author:
mtredinnick
Message:

unicode: Added support for non-ASCII labels for URL patterns.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/unicode/django/core/urlresolvers.py

    r5580 r5585  
    3939    during the import fail and the string is returned. 
    4040    """ 
    41     if not callable(lookup_view): 
    42         mod_name, func_name = get_mod_func(lookup_view) 
    43         try: 
    44             if func_name != '': 
    45                 lookup_view = getattr(__import__(mod_name, {}, {}, ['']), func_name) 
    46         except (ImportError, AttributeError): 
    47             if not can_fail: 
    48                 raise 
     41    try: 
     42        # Bail out early if lookup_view is not ASCII. This can't be a function. 
     43        lookup_view = lookup_view.encode('ascii') 
     44 
     45        if not callable(lookup_view): 
     46            mod_name, func_name = get_mod_func(lookup_view) 
     47            try: 
     48                if func_name != '': 
     49                    lookup_view = getattr(__import__(mod_name, {}, {}, ['']), func_name) 
     50            except (ImportError, AttributeError): 
     51                if not can_fail: 
     52                    raise 
     53    except UnicodeEncodeError: 
     54        pass 
    4955    return lookup_view 
    5056get_callable = memoize(get_callable, _callable_cache) 
     
    267273            raise NoReverseMatch 
    268274        if lookup_view in self.reverse_dict: 
    269             return ''.join([reverse_helper(part.regex, *args, **kwargs) for part in self.reverse_dict[lookup_view]]) 
     275            return u''.join([reverse_helper(part.regex, *args, **kwargs) for part in self.reverse_dict[lookup_view]]) 
    270276        raise NoReverseMatch 
    271277 
  • django/branches/unicode/tests/regressiontests/templates/tests.py

    r5580 r5585  
    736736            'url03' : ('{% url regressiontests.templates.views.index %}', {}, '/url_tag/'), 
    737737            'url04' : ('{% url named.client client.id %}', {'client': {'id': 1}}, '/url_tag/named-client/1/'), 
     738            'url05' : (u'{% url метка_оператора 1 %}', {}, '/url_tag/unicode/1/'), 
    738739 
    739740            # Failures 
  • django/branches/unicode/tests/regressiontests/templates/urls.py

    r5531 r5585  
     1# coding: utf-8 
    12from django.conf.urls.defaults import * 
    23from regressiontests.templates import views 
     
    910    (r'^client/(\d+)/(?P<action>[^/]+)/$', views.client_action), 
    1011    url(r'^named-client/(\d+)/$', views.client, name="named.client"), 
     12    url(r'^unicode/(\d+)/$', views.client, name=u"метка_оператора"), 
    1113)