Пример #1
0
def reverse(*args, **kwargs):
    reverse_kwargs = kwargs.get('kwargs', {})
    locale = utils.supported_language(reverse_kwargs.pop('locale',
            translation.get_language()))
    url = django_reverse(*args, **kwargs)
    _, path = utils.strip_script_prefix(url)
    return utils.locale_url(path, locale)
Пример #2
0
def reverse(*args, **kwargs):
    reverse_kwargs = kwargs.get('kwargs') or {}
    locale = utils.supported_language(
        reverse_kwargs.pop('locale', translation.get_language()))
    url = django_reverse(*args, **kwargs)
    _, path = utils.strip_script_prefix(url)
    return utils.locale_url(path, locale)
Пример #3
0
 def reverse(*args, **kwargs):
     no_locale = kwargs.pop('no_locale', False)
     locale = translation.get_language()
     path = django_reverse(*args, **kwargs)
     if not locale or no_locale:
         return path
     return utils.locale_url(path, utils.supported_language(locale))
Пример #4
0
 def test_locale_url(self):
     # We'd like to be able to test using settings.FORCE_SCRIPT_NAME, but
     # the urlresolvers module caches the prefix.
     script_name = urlresolvers.get_script_prefix()
     self.assertEqual(script_name + 'en/about/localeurl/',
                      utils.locale_url('/about/localeurl/'))
     self.assertEqual(script_name + 'en/about/localeurl/',
                      utils.locale_url('/about/localeurl/', 'de'))
     self.assertEqual(script_name + 'en/about/localeurl/',
                      utils.locale_url('/about/localeurl/', 'en'))
     self.assertEqual(script_name + 'en/about/localeurl/',
                      utils.locale_url('/about/localeurl/', 'en-us'))
     self.assertEqual(script_name + 'nl-nl/about/localeurl/',
                      utils.locale_url('/about/localeurl/', 'nl-nl'))
     self.assertEqual(script_name + 'test/independent/bla/bla',
                      utils.locale_path('/test/independent/bla/bla', 'en'))
Пример #5
0
 def reverse(viewname, urlconf=None, args=[], kwargs={}, prefix=None, current_app=None):
     kwargs = kwargs or {}
     locale = kwargs.pop('locale', translation.get_language())
     path = django_reverse(viewname, urlconf, args, kwargs, prefix, current_app)
     if locale == '':
         return path
     return utils.locale_url(path, utils.supported_language(locale))
 def test_locale_url(self):
     # We'd like to be able to test using settings.FORCE_SCRIPT_NAME, but
     # the urlresolvers module caches the prefix.
     script_name = urlresolvers.get_script_prefix()
     self.assertEqual(script_name + 'en/about/localeurl/',
             utils.locale_url('/about/localeurl/'))
     self.assertEqual(script_name + 'en/about/localeurl/',
             utils.locale_url('/about/localeurl/', 'de'))
     self.assertEqual(script_name + 'en/about/localeurl/',
             utils.locale_url('/about/localeurl/', 'en'))
     self.assertEqual(script_name + 'en/about/localeurl/',
             utils.locale_url('/about/localeurl/', 'en-us'))
     self.assertEqual(script_name + 'nl-nl/about/localeurl/',
             utils.locale_url('/about/localeurl/', 'nl-nl'))
     self.assertEqual(script_name + 'test/independent/bla/bla',
             utils.locale_path('/test/independent/bla/bla', 'en'))
Пример #7
0
def chlocale(url, locale):
    """
    Changes the URL's locale prefix if the path is not locale-independent.
    Otherwise removes locale prefix.
    """
    _, path = utils.strip_script_prefix(url)
    _, path = utils.strip_path(path)
    return utils.locale_url(path, locale)
Пример #8
0
def locale_redirect(*args, **kwargs):
    """ Redirect shortcut with forced locale.
    """
    locale = kwargs.pop('locale')
    url = reverse(*args, **kwargs)
    ignored, path = strip_path(url)
    url = locale_url(path, locale=locale)
    return redirect(url)
Пример #9
0
def chlocale(url, locale):
    """
    Changes the URL's locale prefix if the path is not locale-independent.
    Otherwise removes locale prefix.
    """
    _, path = utils.strip_script_prefix(url)
    _, path = utils.strip_path(path)
    return utils.locale_url(path, locale)
Пример #10
0
def chlocale(url, locale):
    """
    Changes the URL's locale prefix if the path is not locale-independent.
    Otherwise removes locale prefix.
    
    The URL is expected to have the same script prefix as the current page.
    """
    script_name, path = utils.strip_script_prefix(url)
    _, path = utils.strip_path(path)
    return utils.locale_url(path, locale, script_name)
Пример #11
0
 def reverse(viewname,
             urlconf=None,
             args=[],
             kwargs={},
             prefix=None,
             current_app=None):
     kwargs = kwargs or {}
     locale = kwargs.pop('locale', translation.get_language())
     path = django_reverse(viewname, urlconf, args, kwargs, prefix,
                           current_app)
     if locale == '':
         return path
     return utils.locale_url(path, utils.supported_language(locale))
Пример #12
0
def reverse(*args, **kwargs):
    reverse_kwargs = kwargs.get('kwargs') or {}
    prefix = kwargs.get('prefix') or None
    urlconf = kwargs.get('urlconf') or None

    if urlconf is None:
        urlconf = get_urlconf()

    locale = utils.supported_language(reverse_kwargs.pop(
            'locale', translation.get_language()))
    url = django_reverse(*args, **kwargs)
    stipped_prefix, path = utils.strip_script_prefix(url, prefix = prefix)
    return utils.locale_url(path, locale, prefix = prefix, urlconf=urlconf)
Пример #13
0
    def handle_url_module(js_patterns, module_name, prefix="", namespace="",
                          locale_prefix=''):
        """
        Load the module and output all of the patterns
        Recurse on the included modules
        """
        if isinstance(module_name, basestring):
            __import__(module_name)
            root_urls = sys.modules[module_name]
            patterns = root_urls.urlpatterns
        elif isinstance(module_name, types.ModuleType):
            root_urls = module_name
            patterns = root_urls.urlpatterns
        else:
            root_urls = module_name
            patterns = root_urls

        for pattern in patterns:
            if issubclass(pattern.__class__, RegexURLPattern):
                if pattern.name:
                    pattern_name = u':'.join((namespace, pattern.name)) if \
                                                    namespace else pattern.name
                    full_url = prefix + pattern.regex.pattern
                    for chr in ["^", "$"]:
                        full_url = full_url.replace(chr, "")
                    # Handle kwargs, args
                    kwarg_matches = RE_KWARG.findall(full_url)
                    if kwarg_matches:
                        for el in kwarg_matches:
                            # Prepare the output for JS resolver
                            full_url = full_url.replace(el[0], "<%s>" % el[1])
                    # After processing all kwargs try args
                    args_matches = RE_ARG.findall(full_url)
                    if args_matches:
                        for el in args_matches:
                            # Replace by a empty parameter name
                            full_url = full_url.replace(el, "<>")
                    # Add locale to path if django-localeurl is installed
                    full_url = locale_url("/" + full_url, locale=locale_prefix)
                    js_patterns[pattern_name] = full_url
            elif issubclass(pattern.__class__, RegexURLResolver):
                if ALLOWED_NAMESPACES is None:
                    pass
                elif pattern.namespace not in ALLOWED_NAMESPACES:
                    continue

                if pattern.urlconf_name:
                    handle_url_module(js_patterns, pattern.urlconf_name,
                                      prefix=pattern.regex.pattern,
                                      namespace=pattern.namespace,
                                      locale_prefix=locale_prefix)
Пример #14
0
 def test_locale_url(self):
     # We'd like to be able to test using settings.FORCE_SCRIPT_NAME, but
     # the urlresolvers module caches the prefix.
     for script_name in ["", "/mountpoint", "/mountpoint/"]:
         urlresolvers.set_script_prefix(script_name)
         script_name = script_name.rstrip("/")
         self.assertEqual(script_name + '/en/about/localeurl/',
                 utils.locale_url('/about/localeurl/'))
         self.assertEqual(script_name + '/en/about/localeurl/',
                 utils.locale_url('/about/localeurl/', 'de'))
         self.assertEqual(script_name + '/en/about/localeurl/',
                 utils.locale_url('/about/localeurl/', 'en'))
         self.assertEqual(script_name + '/en/about/localeurl/',
                 utils.locale_url('/about/localeurl/', 'en-us'))
         self.assertEqual(script_name + '/nl-nl/about/localeurl/',
                 utils.locale_url('/about/localeurl/', 'nl-nl'))
         self.assertEqual(script_name + '/test/independent/bla/bla',
                 utils.locale_url('/test/independent/bla/bla', 'en'))
         self.assertEqual('/dummy/test/independent/bla/bla',
                 utils.locale_url('/test/independent/bla/bla', 'en', '/dummy'))
         self.assertEqual('/test/independent/bla/bla',
                 utils.locale_url('/test/independent/bla/bla', 'en', ''))
Пример #15
0
 def test_locale_url(self):
     previous_script_prefix = urlresolvers.get_script_prefix()
     urlresolvers.set_script_prefix("/blah/")
     self.assertEqual('/blah/en/about/localeurl/',
                      utils.locale_url('/about/localeurl/'))
     self.assertEqual('/blah/en/about/localeurl/',
                      utils.locale_url('/about/localeurl/', 'de'))
     self.assertEqual('/blah/en/about/localeurl/',
                      utils.locale_url('/about/localeurl/', 'en'))
     self.assertEqual('/blah/en/about/localeurl/',
                      utils.locale_url('/about/localeurl/', 'en-us'))
     self.assertEqual('/blah/nl-nl/about/localeurl/',
                      utils.locale_url('/about/localeurl/', 'nl-nl'))
     self.assertEqual('/blah/test/independent/bla/bla',
                      utils.locale_url('/test/independent/bla/bla', 'en'))
     urlresolvers.set_script_prefix(previous_script_prefix)
Пример #16
0
 def test_locale_url(self):
     previous_script_prefix = urlresolvers.get_script_prefix()
     urlresolvers.set_script_prefix("/blah/")
     self.assertEqual('/blah/en/about/localeurl/',
             utils.locale_url('/about/localeurl/'))
     self.assertEqual('/blah/en/about/localeurl/',
             utils.locale_url('/about/localeurl/', 'de'))
     self.assertEqual('/blah/en/about/localeurl/',
             utils.locale_url('/about/localeurl/', 'en'))
     self.assertEqual('/blah/en/about/localeurl/',
             utils.locale_url('/about/localeurl/', 'en-us'))
     self.assertEqual('/blah/nl-nl/about/localeurl/',
             utils.locale_url('/about/localeurl/', 'nl-nl'))
     self.assertEqual('/blah/test/independent/bla/bla',
             utils.locale_url('/test/independent/bla/bla', 'en'))
     urlresolvers.set_script_prefix(previous_script_prefix)
Пример #17
0
def profile_edit(request, username, edit_profile_form=I4PEditProfileForm,
                 template_name='userena/profile_form.html', success_url=None,
                 extra_context=None):
    """
    Custom version of userena's profile edit, with the three following forms:
     - Profile edition ;
     - Password update ;
     - Email update.
    """
    current_user = request.user

    requested_user = get_object_or_404(User,
                                       username__iexact=username)

    profile = requested_user.get_profile()

    if not current_user.has_perm('change_profile', profile):
        return HttpResponseForbidden()

    user_initial = {'first_name': requested_user.first_name,
                    'last_name': requested_user.last_name}

    if not extra_context:
        extra_context = {}

    # From userena. 
    form = edit_profile_form(instance=profile, initial=user_initial)

    # Also pass the password and email forms
    extra_context.update({'password_form': PasswordChangeForm(user=current_user),
                          'email_form': ChangeEmailForm(user=current_user),
                          'profile_form': form}
                         )


    if request.method == 'POST':
        form = edit_profile_form(request.POST, request.FILES, instance=profile,
                                 initial=user_initial)

        if form.is_valid():
            profile = form.save()

            if userena_settings.USERENA_USE_MESSAGES:
                messages.success(request, _('Your profile has been updated.'),
                                 fail_silently=True)

            if success_url: redirect_to = success_url
            else: redirect_to = reverse('userena_profile_detail', kwargs={'username': username})

            # Ensure the redirect URL locale prefix matches the profile locale
            _locale, path = strip_path(redirect_to)
            redirect_to = locale_url(path, locale=profile.language)
            request.session['django_language'] = profile.language

            return redirect(redirect_to)

    if not extra_context: extra_context = dict()
    extra_context['form'] = form
    extra_context['profile'] = profile
    return direct_to_template(request,
                              template_name,
                              extra_context=extra_context)
Пример #18
0
 def reverse(viewname, urlconf=None, args=[], kwargs={}, prefix=None):
     locale = utils.supported_language(kwargs.pop('locale',
             translation.get_language()))
     path = django_reverse(viewname, urlconf, args, kwargs, prefix)
     return utils.locale_url(path, locale)
Пример #19
0
 def location(self, obj):
     return locale_url(obj.get_absolute_url(), self.language)
Пример #20
0
 def is_active(self, request, path_to_check):
     try:
         from localeurl.utils import locale_url
         return request.path.startswith(locale_url(path_to_check))
     except ImportError:
         return request.path.startswith(path_to_check)
Пример #21
0
 def is_active(self, request, path_to_check):
     try:
         from localeurl.utils import locale_url
         return request.path.startswith(locale_url(path_to_check))
     except ImportError:
         return request.path.startswith(path_to_check)
Пример #22
0
def reverse(*args, **kwargs):
    reverse_kwargs = kwargs.get("kwargs", {}) or {}
    locale = utils.supported_language(reverse_kwargs.pop("locale", translation.get_language()))
    url = django_reverse(*args, **kwargs)
    script_name, path_info = utils.strip_script_prefix(url)
    return utils.locale_url(path_info, locale, script_name)
Пример #23
0
def redirect_to_login(next, login_url, *args, **kwargs):
    if not login_url:
        login_url = settings.LOGIN_URL
    login_url = utils.locale_url(login_url, translation.get_language())
    return django_redirect_to_login(next, login_url, *args, **kwargs)
Пример #24
0
def redirect_to_login(next, login_url, *args, **kwargs):
    if not login_url:
        login_url = settings.LOGIN_URL
    login_url = utils.locale_url(login_url, translation.get_language())
    return django_redirect_to_login(next, login_url, *args, **kwargs)
Пример #25
0
 def reverse(*args, **kwargs):
     reverse_kwargs = kwargs.get('kwargs', {})
     locale = utils.supported_language(reverse_kwargs.pop('locale',
             translation.get_language()))
     path = django_reverse(*args, **kwargs)
     return utils.locale_url(path, locale)
Пример #26
0
 def user_object_localeurl(self, user, obj):
     l = self.get_user_language_code(user)
     url = locale_url(strip_path(obj.get_absolute_url())[1], l)
     return url