def _get_redirect_if_old_url(self, request): """Returns a HttpResponseRedirect instance when the category configured for a subdomain is detected in the path (i.e. as if there was no subdomain) and redirects the request to correct subdomain URL. """ # get the site domain domain = get_domain_for_category(category=None, strip_www=False) # get the current request host host = request.get_host() self.log.debug("Host: %s, domain: %s", host, domain) # try to find a subdomain for a first category in the path if they match if host == domain: # search for a category subdomain matching the first path of the domain category_subdomain = CategorySubdomain.objects.get_for_path(request.path) # if category_subdomain is not None: # get the absolute uri of the request request_absolute_uri = request.build_absolute_uri() # parse the uri parsed_url_list = list(urlparse(request_absolute_uri)) # get domain name for the category subdomain new_domain = category_subdomain.get_subdomain() # cut off the first category part of the path new_path = request.path[len(category_subdomain.category.tree_path) + 1:] # replace domain and path in uri parsed_url_list[1:3] = new_domain, new_path # redirect to the new uri return HttpResponseRedirect(urlunparse(parsed_url_list))
def get_url_without_subdomain(parsed_url): # We will need mutable version of parsed_url. parsed_url_list = list(parsed_url) parsed_url_list[1] = get_domain_for_category(strip_www=False) update_parsed_url_list(parsed_url_list) # Construct and return new url. return urlunparse(parsed_url_list)
def get_domain(self, strip_www=True): domain = get_domain_for_category(self.category, strip_www) return domain