diff libervia/web/server/pages_tools.py @ 1518:eb00d593801d

refactoring: rename `libervia` to `libervia.web` + update imports following backend changes
author Goffi <goffi@goffi.org>
date Fri, 02 Jun 2023 16:49:28 +0200
parents libervia/server/pages_tools.py@106bae41f5c8
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libervia/web/server/pages_tools.py	Fri Jun 02 16:49:28 2023 +0200
@@ -0,0 +1,60 @@
+#!/usr/bin/env python3
+
+# Libervia Web frontend
+# Copyright (C) 2011-2021 Jérôme Poisson <goffi@goffi.org>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+"""Helper methods for common operations on pages"""
+
+from twisted.internet import defer
+from libervia.backend.core.i18n import _
+from libervia.backend.core.log import getLogger
+from libervia.backend.tools.common import data_format
+from libervia.web.server.constants import Const as C
+
+
+log = getLogger(__name__)
+
+
+def deserialise(comments_data_s):
+    return data_format.deserialise(comments_data_s)
+
+
+def retrieve_comments(self, service, node, profile, pass_exceptions=True):
+    """Retrieve comments from server and convert them to data objects
+
+    @param service(unicode): service holding the comments
+    @param node(unicode): node to retrieve
+    @param profile(unicode): profile of the user willing to find comments
+    @param pass_exceptions(bool): if True bridge exceptions will be ignored but logged
+        else exception will be raised
+    """
+    try:
+        d = self.host.bridge_call(
+            "mb_get", service, node, C.NO_LIMIT, [], data_format.serialise({}), profile
+        )
+    except Exception as e:
+        if not pass_exceptions:
+            raise e
+        else:
+            log.warning(
+                _("Can't get comments at {node} (service: {service}): {msg}").format(
+                    service=service, node=node, msg=e
+                )
+            )
+            return defer.succeed([])
+
+    d.addCallback(deserialise)
+    return d