def __call__(self, request): request.locale = settings.LANGUAGE_CODE activate(settings.LANGUAGE_CODE) for view_url in settings.EXEMPT_L10N_URLS: if re.search(view_url, request.path): return self.get_response(request) prefixer = urlresolvers.Prefixer(request) urlresolvers.set_url_prefix(prefixer) full_path = prefixer.fix(prefixer.shortened_path) if full_path != request.path: query_string = request.META.get("QUERY_STRING", "") full_path = urllib.parse.quote(full_path.encode("utf-8")) if query_string: full_path = "%s?%s" % (full_path, query_string) response = HttpResponsePermanentRedirect(full_path) # Vary on Accept-Language if we changed the locale old_locale = prefixer.locale new_locale, _ = urlresolvers.split_path(full_path) if old_locale != new_locale: response["Vary"] = "Accept-Language" return response request.path_info = "/" + prefixer.shortened_path request.locale = prefixer.locale or settings.LANGUAGE_CODE activate(prefixer.locale or settings.LANGUAGE_CODE) return self.get_response(request)
def process_request(self, request): prefixer = urlresolvers.Prefixer(request) urlresolvers.set_url_prefix(prefixer) full_path = prefixer.fix(prefixer.shortened_path) if self._is_lang_change(request): # Blank out the locale so that we can set a new one. Remove lang # from the query params so we don't have an infinite loop. prefixer.locale = '' new_path = prefixer.fix(prefixer.shortened_path) query = dict((smart_str(k), request.GET[k]) for k in request.GET) query.pop('lang') return HttpResponsePermanentRedirect(urlparams(new_path, **query)) if full_path != request.path: query_string = request.META.get('QUERY_STRING', '') full_path = urllib.quote(full_path.encode('utf-8')) if query_string: full_path = '%s?%s' % (full_path, query_string) response = HttpResponsePermanentRedirect(full_path) # Vary on Accept-Language if we changed the locale old_locale = prefixer.locale new_locale, _ = urlresolvers.split_path(full_path) if old_locale != new_locale: response['Vary'] = 'Accept-Language' return response request.path_info = '/' + prefixer.shortened_path request.locale = prefixer.locale tower.activate(prefixer.locale)
def process_request(self, request): prefixer = urlresolvers.Prefixer(request) urlresolvers.set_url_prefix(prefixer) full_path = prefixer.fix(prefixer.shortened_path) if self._is_lang_change(request): # Blank out the locale so that we can set a new one. Remove lang # from the query params so we don't have an infinite loop. prefixer.locale = "" new_path = prefixer.fix(prefixer.shortened_path) query = dict((smart_str(k), request.GET[k]) for k in request.GET) query.pop("lang") return HttpResponsePermanentRedirect(urlparams(new_path, **query)) if full_path != request.path: query_string = request.META.get("QUERY_STRING", "") full_path = urllib.quote(full_path.encode("utf-8")) if query_string: full_path = "%s?%s" % (full_path, query_string) response = HttpResponsePermanentRedirect(full_path) # Vary on Accept-Language if we changed the locale old_locale = prefixer.locale new_locale, _ = urlresolvers.split_path(full_path) if old_locale != new_locale: response["Vary"] = "Accept-Language" return response request.path_info = "/" + prefixer.shortened_path request.locale = prefixer.locale tower.activate(prefixer.locale)
def __call__(self, request): # Don't apply middleware to requests matching exempt URLs # Use default LANGUAGE_CODE locale for view_url in settings.EXEMPT_L10N_URLS: if re.search(view_url, request.path): response = self.get_response(request) request.locale = settings.LANGUAGE_CODE activate(settings.LANGUAGE_CODE) return response prefixer = urlresolvers.Prefixer(request) urlresolvers.set_url_prefix(prefixer) full_path = prefixer.fix(prefixer.shortened_path) if self._is_lang_change(request): # Blank out the locale so that we can set a new one. Remove lang # from the query params so we don't have an infinite loop. prefixer.locale = '' new_path = prefixer.fix(prefixer.shortened_path) query = dict((smart_str(k), request.GET[k]) for k in request.GET) query.pop('lang') return HttpResponsePermanentRedirect(urlparams(new_path, **query)) if full_path != request.path: query_string = request.META.get('QUERY_STRING', '') full_path = urllib.quote(full_path.encode('utf-8')) if query_string: full_path = '%s?%s' % (full_path, query_string) response = HttpResponsePermanentRedirect(full_path) # Vary on Accept-Language if we changed the locale old_locale = prefixer.locale new_locale, _ = urlresolvers.split_path(full_path) if old_locale != new_locale: response['Vary'] = 'Accept-Language' return response request.path_info = '/' + prefixer.shortened_path request.locale = prefixer.locale or settings.LANGUAGE_CODE activate(prefixer.locale or settings.LANGUAGE_CODE) return self.get_response(request)
def __call__(self, request): # Don't apply middleware to requests matching exempt URLs # Use default LANGUAGE_CODE locale for view_url in settings.EXEMPT_L10N_URLS: if re.search(view_url, request.path): request.locale = settings.LANGUAGE_CODE activate(settings.LANGUAGE_CODE) return self.get_response(request) prefixer = urlresolvers.Prefixer(request) urlresolvers.set_url_prefix(prefixer) full_path = prefixer.fix(prefixer.shortened_path) if self._is_lang_change(request): # Blank out the locale so that we can set a new one. Remove lang # from the query params so we don't have an infinite loop. prefixer.locale = '' new_path = prefixer.fix(prefixer.shortened_path) query = dict((smart_str(k), request.GET[k]) for k in request.GET) query.pop('lang') return HttpResponsePermanentRedirect(urlparams(new_path, **query)) if full_path != request.path: query_string = request.META.get('QUERY_STRING', '') full_path = urllib.quote(full_path.encode('utf-8')) if query_string: full_path = '%s?%s' % (full_path, query_string) response = HttpResponsePermanentRedirect(full_path) # Vary on Accept-Language if we changed the locale old_locale = prefixer.locale new_locale, _ = urlresolvers.split_path(full_path) if old_locale != new_locale: response['Vary'] = 'Accept-Language' return response request.path_info = '/' + prefixer.shortened_path request.locale = prefixer.locale or settings.LANGUAGE_CODE activate(prefixer.locale or settings.LANGUAGE_CODE) return self.get_response(request)