Mercurial > libervia-backend
diff src/plugins/plugin_misc_static_blog.py @ 1102:4c48e2549592
plugin misc_static_blog: add a menu for displaying a user static blog
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 15 Jul 2014 18:28:40 +0200 |
parents | adbde4a3a52f |
children | 731fbed0b9cf |
line wrap: on
line diff
--- a/src/plugins/plugin_misc_static_blog.py Tue Jul 15 18:26:36 2014 +0200 +++ b/src/plugins/plugin_misc_static_blog.py Tue Jul 15 18:28:40 2014 +0200 @@ -17,9 +17,16 @@ # 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/>. +from sat.core.log import getLogger +log = getLogger(__name__) from sat.core.i18n import _, D_ from sat.core.constants import Const as C +from sat.core import exceptions +from sat.tools import xml_tools + +from twisted.internet import defer +from twisted.words.protocols.jabber import jid PLUGIN_INFO = { @@ -28,6 +35,7 @@ "type": "MISC", "protocols": [], "dependencies": [], + "recommendations": ['MISC-ACCOUNT'], # TODO: remove when all blogs can be retrieved "main": "StaticBlog", "handler": "no", "description": _("""Plugin for static blogs""") @@ -61,4 +69,30 @@ } def __init__(self, host): + try: # TODO: remove this attribute when all blogs can be retrieved + self.domain = host.plugins['MISC-ACCOUNT'].getNewAccountDomain() + except KeyError: + self.domain = None host.memory.updateParams(self.params) + host.importMenu((D_("User"), D_("Public blog")), self._displayPublicBlog, security_limit=1, help_string=D_("Display public blog page"), type_=C.MENU_JID_CONTEXT) + + def _displayPublicBlog(self, menu_data, profile): + """Check if the blog can be displayed and answer the frontend. + + @param menu_data: %(menu_data)s + @param profile: %(doc_profile)s + @return: dict + """ + try: + user_jid = jid.JID(menu_data['jid']) + except KeyError: + log.error(_("jid key is not present !")) + return defer.fail(exceptions.DataError) + + # TODO: remove this check when all blogs can be retrieved + if self.domain and user_jid.host != self.domain: + info_ui = xml_tools.XMLUI("popup", title=D_("Not available")) + info_ui.addText(D_("Retrieving a blog from an external domain is not implemented yet.")) + return {'xmlui': info_ui.toXml()} + + return {"public_blog": user_jid.userhost()}