Mercurial > libervia-backend
view src/plugins/plugin_misc_static_blog.py @ 2286:330f8d4e2ad4
plugin XEP-0277: change affiliations for comments + fixes:
- mbGet now use client instead of profile_key
- fixed max_items handling
- for whitelist access model, if a comments node is created, "member" affiliations are transformed to "publisher"
This is because most of time we want that somebody is able to read a private blog but not write on it, and be able to write a comment.
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 29 Jun 2017 20:45:54 +0200 |
parents | 33c8c4973743 |
children | 0d6c53e6c591 |
line wrap: on
line source
#!/usr/bin/env python2 # -*- coding: utf-8 -*- # SAT plugin for static blogs # Copyright (C) 2014 Adrien Cossa (souliane@mailoo.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/>. 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 = { C.PI_NAME: "Static Blog Plugin", C.PI_IMPORT_NAME: "STATIC-BLOG", C.PI_TYPE: "MISC", C.PI_PROTOCOLS: [], C.PI_DEPENDENCIES: [], C.PI_RECOMMENDATIONS: ['MISC-ACCOUNT'], # TODO: remove when all blogs can be retrieved C.PI_MAIN: "StaticBlog", C.PI_HANDLER: "no", C.PI_DESCRIPTION: _("""Plugin for static blogs""") } class StaticBlog(object): params = """ <params> <individual> <category name="%(category_name)s" label="%(category_label)s"> <param name="%(title_name)s" label="%(title_label)s" value="" type="string" security="0"/> <param name="%(banner_name)s" label="%(banner_label)s" value="" type="string" security="0"/> <param name="%(keywords_name)s" label="%(keywords_label)s" value="" type="string" security="0"/> <param name="%(description_name)s" label="%(description_label)s" value="" type="string" security="0"/> </category> </individual> </params> """ % { 'category_name': C.STATIC_BLOG_KEY, 'category_label': D_(C.STATIC_BLOG_KEY), 'title_name': C.STATIC_BLOG_PARAM_TITLE, 'title_label': D_('Page title'), 'banner_name': C.STATIC_BLOG_PARAM_BANNER, 'banner_label': D_('Banner URL'), 'keywords_name': C.STATIC_BLOG_PARAM_KEYWORDS, 'keywords_label': D_('Keywords'), 'description_name': C.STATIC_BLOG_PARAM_DESCRIPTION, 'description_label': D_('Description'), } 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 """ # FIXME: "public_blog" key has been removed # TODO: replace this with a more generic widget call with URIs 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()}