def getNonRestrictedURL(self, request): """Returns the non-restricted version of the request URL. The intended use is for determining the equivalent URL on the production Launchpad instance if a user accidentally ends up on a restrict_to_team Launchpad instance. If a non-restricted URL can not be determined, None is returned. """ base_host = config.vhost.mainsite.hostname production_host = config.launchpad.non_restricted_hostname # If we don't have a production hostname, or it is the same as # this instance, then we can't provide a nonRestricted URL. if production_host is None or base_host == production_host: return None # Are we under the main site's domain? uri = URI(request.getURL()) if not uri.host.endswith(base_host): return None # Update the hostname, and complete the URL from the request: new_host = uri.host[:-len(base_host)] + production_host uri = uri.replace(host=new_host, path=request['PATH_INFO']) query_string = request.get('QUERY_STRING') if query_string: uri = uri.replace(query=query_string) return str(uri)
def archive_url(self): """Return a custom archive url for basic authentication.""" normal_url = URI(self.archive.archive_url) if self.name: name = '+' + self.name else: name = self.person.name auth_url = normal_url.replace(userinfo="%s:%s" % (name, self.token)) return str(auth_url)
def _get_binary_sources_list_line(archive, distroarchseries, pocket, components): """Return the correponding binary sources_list line.""" # Encode the private PPA repository password in the # sources_list line. Note that the buildlog will be # sanitized to not expose it. if archive.private: uri = URI(archive.archive_url) uri = uri.replace(userinfo="buildd:%s" % archive.buildd_secret) url = str(uri) else: url = archive.archive_url suite = distroarchseries.distroseries.name + pocketsuffix[pocket] return 'deb %s %s %s' % (url, suite, ' '.join(components))
def _get_binary_sources_list_line(archive, distroarchseries, pocket, components): """Return the correponding binary sources_list line.""" # Encode the private PPA repository password in the # sources_list line. Note that the buildlog will be # sanitized to not expose it. if archive.private: uri = URI(archive.archive_url) uri = uri.replace( userinfo="buildd:%s" % archive.buildd_secret) url = str(uri) else: url = archive.archive_url suite = distroarchseries.distroseries.name + pocketsuffix[pocket] return 'deb %s %s %s' % (url, suite, ' '.join(components))
def archive_url(self): """Return a custom archive url for basic authentication.""" normal_url = URI(self.archive.archive_url) auth_url = normal_url.replace( userinfo="%s:%s" %(self.person.name, self.token)) return str(auth_url)
def uri_path_replace(url, old, new): """Replace a substring of a URL's path.""" parsed = URI(url) return str(parsed.replace(path=parsed.path.replace(old, new)))