def add_sr(path, sr_path = True, nocname=False, force_hostname = False): """ Given a path (which may be a full-fledged url or a relative path), parses the path and updates it to include the subdigg path according to the rules set by its arguments: * force_hostname: if True, force the url's hotname to be updated even if it is already set in the path, and subject to the c.cname/nocname combination. If false, the path will still have its domain updated if no hostname is specified in the url. * nocname: when updating the hostname, overrides the value of c.cname to set the hotname to g.domain. The default behavior is to set the hostname consistent with c.cname. * sr_path: if a cname is not used for the domain, updates the path to include c.site.path. For caching purposes: note that this function uses: c.cname, c.render_style, c.site.name """ # don't do anything if it is just an anchor if path.startswith('#') or path.startswith('javascript:'): return path u = UrlParser(path) if sr_path and (nocname or not c.cname): u.path_add_subdigg(c.site) if not u.hostname or force_hostname: u.hostname = get_domain(cname = (c.cname and not nocname), subdigg = False) if c.render_style == 'mobile': u.set_extension('mobile') return u.unparse()