Mercurial > libervia-web
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