def get_url(self, obj): """ Get full URL of blog post as host + ``get_short_url``, inspired by method ``get_absolute_url_with_host``. Removes dependency on reverse URLs of Mezzanine views when deploying Mezzanine only as an API backend. """ return current_request().build_absolute_uri( self.get_short_url(obj))
def get_redirect_url(self): """ Build the redirect URL required by Facebook (including the domain and scheme) """ request = current_request() return request.build_absolute_uri( reverse("admin:fbfeed_redirect_endpoint"))
def get_absolute_url_with_host(self): """ Returns host + ``get_absolute_url`` - used by the various ``short_url`` mechanics below. Technically we should use ``self.site.domain``, here, however if we were to invoke the ``short_url`` mechanics on a list of data (eg blog post list view), we'd trigger a db query per item. Using ``current_request`` should provide the same result, since site related data should only be loaded based on the current host anyway. """ return current_request().build_absolute_uri(self.get_absolute_url())
def get_absolute_url_with_host(self): """ Returns host + ``get_absolute_url`` - used by the various ``short_url`` mechanics below. Technically we should use ``self.site.domain``, here, however if we were to invoke the ``short_url`` mechanics on a list of data (eg blog post list view), we'd trigger a db query per item. Using ``current_request`` should provide the same result, since site related data should only be loaded based on the current host anyway. """ return current_request().build_absolute_uri(self.get_absolute_url())
def profile_list(self): request = current_request() if self.profile_type == ProfilesPage.SPEAKERS: profiles_lst = Profile.objects.filter(in_speakers_page=True) else: profiles_lst = Profile.objects.filter(in_participants_page=True) profiles_lst = profiles_lst.annotate(talks_count=Count('author')) page_num = request.GET.get("page", 1) profiles = paginate(profiles_lst, page_num, self.per_page, 10) return profiles
def google_calendar_url(dt): start_str = dt.start.strftime("%Y%m%dT%H%M%SZ") end = dt.end or (dt.start + timedelta(hours=1)) end_str = end.strftime("%Y%m%dT%H%M%SZ") tokens = { "action": "TEMPLATE", "text": dt.event.title, "dates": "{}/{}".format(start_str, end_str), "details": current_request().build_absolute_uri(dt.event.get_absolute_url()), "location": dt.event.location.replace("\n", " "), } if dt.repeat: tokens["recur"] = dt.repeat if dt.repeat_until: tokens["recur"] += ";UNTIL=" + dt.repeat_until.strftime("%Y%m%d") pairs = ("{}={}".format(k, urlencode(v)) for k, v in tokens.items()) return "https://www.google.com/calendar/event?" + "&".join(pairs)
def get_url(self, obj): """ Get full URL of blog post as host + ``get_short_url``, inspired by method ``get_absolute_url_with_host``. Removes dependency on reverse URLs of Mezzanine views when deploying Mezzanine only as an API backend. """ return current_request().build_absolute_uri(self.get_short_url(obj))