Parcourir la source

Extend Contrib.get_absolute_url to accept a base URL

Usefull for cases where there is no request available to build a full URL (eg:
something called from cron).
Jocelyn Delalande il y a 7 ans
Parent
commit
7522bc7669
2 fichiers modifiés avec 12 ajouts et 7 suppressions
  1. 9 4
      wifiwithme/apps/contribmap/models.py
  2. 3 3
      wifiwithme/apps/contribmap/views.py

+ 9 - 4
wifiwithme/apps/contribmap/models.py

@@ -197,17 +197,22 @@ class Contrib(models.Model):
         else:
             return None
 
-    def get_absolute_url(self, request=None):
+    def get_absolute_url(self, request=None, base_url=None):
         """ Get absolute url
 
-        :type param: request
-        :param: if mentioned, will be used to provide a full URL (starting with
-        "http://" or "https://")
+        You can mention either `request` or `base_url` to get a full URL
+        (starting with "http://" or "https://")
+
+        :type request: request
+        :param request: if mentioned, will be used to provide a full URL
+        :param base_url: if mentioned, will be used to provide a full URL
         """
         url = '{}#{}'.format(
             reverse('display_map'), self.pk)
         if request:
             return request.build_absolute_uri(url)
+        elif base_url:
+            return '{}{}'.format(base_url, url)
         else:
             return url
 

+ 3 - 3
wifiwithme/apps/contribmap/views.py

@@ -32,13 +32,13 @@ def add_contrib(request):
             mgmt_token = ContribTokenManager().mk_token(contrib)
 
             context = {
-                'site_url': (settings.SITE_URL + reverse('display_map')
-                             + '#{}'.format(contrib.id)),
+                'site_url': contrib.get_absolute_url(
+                    base_url=settings.SITE_URL),
                 'contrib': contrib,
                 'management_link': contrib.make_management_url(
                     mgmt_token, request),
                 'permalink': contrib.get_absolute_url(request),
-                'isp':settings.ISP,
+                'isp': settings.ISP,
             }
 
             # Send notification email to site administrator