+ def get_absolute_url(self, request=None, with_domain=False, secure=False):
+ return self.construct_url(request=request, with_domain=with_domain, secure=secure)
+
+ def construct_url(self, subpath=None, request=None, with_domain=False, secure=False):
+ """
+ This method will construct a URL based on the Node's location.
+ If a request is passed in, that will be used as a backup in case
+ the Site lookup fails. The Site lookup takes precedence because
+ it's what's used to find the root node. This will raise:
+ - NoReverseMatch if philo-root is not reverseable
+ - Site.DoesNotExist if a domain is requested but not buildable.
+ - AncestorDoesNotExist if the root node of the site isn't an
+ ancestor of this instance.
+ """
+ # Try reversing philo-root first, since we can't do anything if that fails.
+ root_url = reverse('philo-root')
+