On Feb 9, 2011, at 1:24 PM, howesc wrote:
> good, bad, or indifferent, because of varied testing and deployment setups,
> and using multiple ports, i have the function below in my app. note that i
> have database configuration for HTTPS scheme and port. It's my hack not not
> run internal test and development servers on port 443. :)
Thanks. I'd forgotten about port; I'll add that as well.
>
> def full_url(scheme="http",
> a=None,
> c=None,
> f=None,
> r=None,
> args=[],
> vars={},
> anchor='',
> path = None
> ):
> """
> Create a fully qualified URL. The URL will use the same host as the
> request was made from, but will use the specified scheme. Calls
> C{gluon.html.URL()} to construct the relative path to the host.
>
> if <scheme>_port is set in the settings table, append the port to the
> domain of the created URL
>
> @param scheme: scheme to use for the fully-qualified URL.
> (default to 'http')
> @param a: application (default to current if r is given)
> @param c: controller (default to current if r is given)
> @param f: function (default to current if r is given)
> @param r: request
> @param args: any arguments (optional)
> @param vars: any variables (optional)
> @param anchor: anchorname, without # (optional)
> @param path: the relative path to use. if used overrides a,c,f,args, and
> vars (optional)
> """
> port = ''
> if sitesettings.has_key(scheme+"_port") and sitesettings[scheme+"_port"]:
> port = ":" + sitesettings[scheme+"_port"]
> if scheme == 'https' and sitesettings.has_key("https_scheme"):
> scheme = sitesettings.https_scheme
> url = scheme +'://' + \
> r.env.http_host.split(':')[0] + port
> if path:
> url = url + path
> else:
> url = url+URL(a=a, c=c, f=f, r=r, args=args, vars=vars, anchor=anchor)
> return url
>