diff libervia/pages/photos/page_meta.py @ 1172:7b8e123ba043

pages (photos): retrieve photo albums from list of interests, and fill "interests" template data.
author Goffi <goffi@goffi.org>
date Fri, 03 May 2019 13:08:41 +0200
parents 28e3eb3bb217
children ddc1e704bc41
line wrap: on
line diff
--- a/libervia/pages/photos/page_meta.py	Fri Apr 26 08:42:27 2019 +0200
+++ b/libervia/pages/photos/page_meta.py	Fri May 03 13:08:41 2019 +0200
@@ -3,6 +3,10 @@
 
 from libervia.server.constants import Const as C
 from twisted.internet import defer
+from sat.core.i18n import _
+from sat.core.log import getLogger
+
+log = getLogger(__name__)
 
 name = u"photos"
 access = C.PAGES_ACCESS_PROFILE
@@ -10,6 +14,37 @@
 
 
 @defer.inlineCallbacks
+def parse_url(self, request):
+    profile = self.getProfile(request)
+    template_data = request.template_data
+    namespace = self.host.ns_map["fis"]
+    if profile is not None:
+        try:
+            interests = yield self.host.bridgeCall(
+                "interestsList", "", "", namespace, profile)
+        except Exception:
+            log.warning(_(u"Can't get interests list for {profile}").format(
+                profile=profile))
+        else:
+            # we only want photo albums
+            filtered_interests = []
+            for interest in interests:
+                if interest.get(u'subtype') != u'photos':
+                    continue
+                path = interest.get(u'path', u'')
+                path_args = [p for p in path.split(u'/') if p]
+                interest["url"] = self.getSubPageURL(
+                    request,
+                    u"photos_album",
+                    interest[u'service'],
+                    *path_args
+                )
+                filtered_interests.append(interest)
+
+            template_data[u'interests'] = filtered_interests
+
+
+@defer.inlineCallbacks
 def on_data_post(self, request):
     jid_ = self.getPostedData(request, u"jid")
     url = self.getPageByName(u"photos_album").getURL(jid_)