# HG changeset patch # User souliane # Date 1405441720 -7200 # Node ID 4c48e2549592b12fdbacf3f47edf38bd4445e7eb # Parent ad4ec8d9235eae4199a00454b04767e55e84f63a plugin misc_static_blog: add a menu for displaying a user static blog diff -r ad4ec8d9235e -r 4c48e2549592 src/plugins/plugin_misc_static_blog.py --- 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 . +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()}