Mercurial > libervia-backend
annotate sat/plugins/plugin_misc_groupblog.py @ 3153:2c7b42f53e9a
core (xmpp): avoid starting several clients at the same time:
a check is done to avoid running startConnection several times at once, which would lead
to the creation of several SatXMPPEntity instances at the same time, resulting in many
issues.
If startConnection is called while a previous one is not finished yet, a CancelError is
now raised.
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 03 Feb 2020 13:46:24 +0100 |
parents | 559a625a236b |
children | be6d91572633 |
rev | line source |
---|---|
3028 | 1 #!/usr/bin/env python3 |
3137 | 2 |
307 | 3 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
4 # SAT plugin for microbloging with roster access |
3136 | 5 # Copyright (C) 2009-2020 Jérôme Poisson (goffi@goffi.org) |
307 | 6 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
10 # (at your option) any later version. |
307 | 11 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
15 # GNU Affero General Public License for more details. |
307 | 16 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
307 | 19 |
771 | 20 from sat.core.i18n import _ |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
892
diff
changeset
|
21 from sat.core.constants import Const as C |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
944
diff
changeset
|
22 from sat.core.log import getLogger |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
23 |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
944
diff
changeset
|
24 log = getLogger(__name__) |
476
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
25 from twisted.internet import defer |
708
6aa71c853bf5
plugin group blog: management of extra data/rich text for blog comments
Goffi <goffi@goffi.org>
parents:
707
diff
changeset
|
26 from sat.core import exceptions |
476
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
27 from wokkel import disco, data_form, iwokkel |
3028 | 28 from zope.interface import implementer |
615
6f4c31192c7c
plugins XEP-0060, XEP-0277, groupblog: comments implementation (first draft, not finished yet):
Goffi <goffi@goffi.org>
parents:
609
diff
changeset
|
29 |
476
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
30 try: |
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
31 from twisted.words.protocols.xmlstream import XMPPHandler |
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
32 except ImportError: |
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
33 from wokkel.subprotocols import XMPPHandler |
307 | 34 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
35 NS_PUBSUB = "http://jabber.org/protocol/pubsub" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
36 NS_GROUPBLOG = "http://salut-a-toi.org/protocol/groupblog" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
37 # NS_PUBSUB_EXP = 'http://goffi.org/protocol/pubsub' #for non official features |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
38 NS_PUBSUB_EXP = ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
39 NS_PUBSUB |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
40 ) # XXX: we can't use custom namespace as Wokkel's PubSubService use official NS |
1485
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
41 NS_PUBSUB_GROUPBLOG = NS_PUBSUB_EXP + "#groupblog" |
462
d9456d94cd12
plugin groupblog: next-gen group blog first draft
Goffi <goffi@goffi.org>
parents:
459
diff
changeset
|
42 NS_PUBSUB_ITEM_CONFIG = NS_PUBSUB_EXP + "#item-config" |
307 | 43 |
1268
bb30bf3ae932
plugins XEP-0060, XEP-0277, groupblog: make use of RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
1243
diff
changeset
|
44 |
307 | 45 PLUGIN_INFO = { |
2145
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
46 C.PI_NAME: "Group blogging through collections", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
47 C.PI_IMPORT_NAME: "GROUPBLOG", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
48 C.PI_TYPE: "MISC", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
49 C.PI_PROTOCOLS: [], |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
50 C.PI_DEPENDENCIES: ["XEP-0277"], |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
51 C.PI_MAIN: "GroupBlog", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
52 C.PI_HANDLER: "yes", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
53 C.PI_DESCRIPTION: _("""Implementation of microblogging fine permissions"""), |
307 | 54 } |
55 | |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
56 |
588
beaf6bec2fcd
Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
57 class GroupBlog(object): |
462
d9456d94cd12
plugin groupblog: next-gen group blog first draft
Goffi <goffi@goffi.org>
parents:
459
diff
changeset
|
58 """This class use a SàT PubSub Service to manage access on microblog""" |
307 | 59 |
60 def __init__(self, host): | |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
944
diff
changeset
|
61 log.info(_("Group blog plugin initialization")) |
307 | 62 self.host = host |
1662
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
63 self._p = self.host.plugins["XEP-0060"] |
1671
1895846fc9cb
plugin XEP-0277, group blog: added item2data trigger + group permission are parsed when receiving a new item
Goffi <goffi@goffi.org>
parents:
1664
diff
changeset
|
64 host.trigger.add("XEP-0277_item2data", self._item2dataTrigger) |
1662
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
65 host.trigger.add("XEP-0277_data2entry", self._data2entryTrigger) |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
66 host.trigger.add("XEP-0277_comments", self._commentsTrigger) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
67 |
1420
7c0acb966fd6
plugins groupblog, xep-0060: first pass of simplification
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
68 ## plugin management methods ## |
7c0acb966fd6
plugins groupblog, xep-0060: first pass of simplification
Goffi <goffi@goffi.org>
parents:
1419
diff
changeset
|
69 |
2144
1d3f73e065e1
core, jp: component handling + client handling refactoring:
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
70 def getHandler(self, client): |
476
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
71 return GroupBlog_handler() |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
72 |
465
78e67a59d51d
plugin groupblog: added getLastGroupBlogs method
Goffi <goffi@goffi.org>
parents:
462
diff
changeset
|
73 @defer.inlineCallbacks |
2144
1d3f73e065e1
core, jp: component handling + client handling refactoring:
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
74 def profileConnected(self, client): |
1492
6ec2741b7268
plugin groupblog: item access availability on serveur is checked on profile connection, and getFeatures is filled accordingly (with "available" key)
Goffi <goffi@goffi.org>
parents:
1485
diff
changeset
|
75 try: |
2148
a543eda2c923
core (memory/disco): getInfos now handle node + use client instead of profile in many methods
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
76 yield self.host.checkFeatures(client, (NS_PUBSUB_GROUPBLOG,)) |
1492
6ec2741b7268
plugin groupblog: item access availability on serveur is checked on profile connection, and getFeatures is filled accordingly (with "available" key)
Goffi <goffi@goffi.org>
parents:
1485
diff
changeset
|
77 except exceptions.FeatureNotFound: |
6ec2741b7268
plugin groupblog: item access availability on serveur is checked on profile connection, and getFeatures is filled accordingly (with "available" key)
Goffi <goffi@goffi.org>
parents:
1485
diff
changeset
|
78 client.server_groupblog_available = False |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
79 log.warning( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
80 _( |
3028 | 81 "Server is not able to manage item-access pubsub, we can't use group blog" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
82 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
83 ) |
1485
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
84 else: |
1492
6ec2741b7268
plugin groupblog: item access availability on serveur is checked on profile connection, and getFeatures is filled accordingly (with "available" key)
Goffi <goffi@goffi.org>
parents:
1485
diff
changeset
|
85 client.server_groupblog_available = True |
3028 | 86 log.info(_("Server can manage group blogs")) |
1485
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
87 |
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
88 def getFeatures(self, profile): |
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
89 try: |
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
90 client = self.host.getClient(profile) |
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
91 except exceptions.ProfileNotSetError: |
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
92 return {} |
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
93 try: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
94 return {"available": C.boolConst(client.server_groupblog_available)} |
1485
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
95 except AttributeError: |
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
96 if self.host.isConnected(profile): |
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
97 log.debug("Profile is not connected, service is not checked yet") |
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
98 else: |
1673
95522b37bf5a
plugin group blog: minor log change
Goffi <goffi@goffi.org>
parents:
1672
diff
changeset
|
99 log.error("client.server_groupblog_available should be available !") |
1485
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
100 return {} |
9fcc16ef163a
plugin groupblog: groupblog compatible pubsub service is checked in profileConected + getFeatures implementation
Goffi <goffi@goffi.org>
parents:
1459
diff
changeset
|
101 |
1671
1895846fc9cb
plugin XEP-0277, group blog: added item2data trigger + group permission are parsed when receiving a new item
Goffi <goffi@goffi.org>
parents:
1664
diff
changeset
|
102 def _item2dataTrigger(self, item_elt, entry_elt, microblog_data): |
1895846fc9cb
plugin XEP-0277, group blog: added item2data trigger + group permission are parsed when receiving a new item
Goffi <goffi@goffi.org>
parents:
1664
diff
changeset
|
103 """Parse item to find group permission elements""" |
1895846fc9cb
plugin XEP-0277, group blog: added item2data trigger + group permission are parsed when receiving a new item
Goffi <goffi@goffi.org>
parents:
1664
diff
changeset
|
104 config_form = data_form.findForm(item_elt, NS_PUBSUB_ITEM_CONFIG) |
1895846fc9cb
plugin XEP-0277, group blog: added item2data trigger + group permission are parsed when receiving a new item
Goffi <goffi@goffi.org>
parents:
1664
diff
changeset
|
105 if config_form is None: |
1895846fc9cb
plugin XEP-0277, group blog: added item2data trigger + group permission are parsed when receiving a new item
Goffi <goffi@goffi.org>
parents:
1664
diff
changeset
|
106 return |
1895846fc9cb
plugin XEP-0277, group blog: added item2data trigger + group permission are parsed when receiving a new item
Goffi <goffi@goffi.org>
parents:
1664
diff
changeset
|
107 access_model = config_form.get(self._p.OPT_ACCESS_MODEL, self._p.ACCESS_OPEN) |
2201
40dd9eb2692c
plugin groupblog, XEP-0060: added ACCESS_PUBLISHER_ROSTER and switched to it in groupblog
Goffi <goffi@goffi.org>
parents:
2148
diff
changeset
|
108 if access_model == self._p.ACCESS_PUBLISHER_ROSTER: |
2807
0b7ce5daee9b
plugin XEP-0277: blog items data are now entirely serialised before going to bridge:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
109 opt = self._p.OPT_ROSTER_GROUPS_ALLOWED |
0b7ce5daee9b
plugin XEP-0277: blog items data are now entirely serialised before going to bridge:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
110 microblog_data['groups'] = config_form.fields[opt].values |
1671
1895846fc9cb
plugin XEP-0277, group blog: added item2data trigger + group permission are parsed when receiving a new item
Goffi <goffi@goffi.org>
parents:
1664
diff
changeset
|
111 |
1662
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
112 def _data2entryTrigger(self, client, mb_data, entry_elt, item_elt): |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
113 """Build fine access permission if needed |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
114 |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
115 This trigger check if "group*" key are present, |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
116 and create a fine item config to restrict view to these groups |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
117 """ |
2807
0b7ce5daee9b
plugin XEP-0277: blog items data are now entirely serialised before going to bridge:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
118 groups = mb_data.get('groups', []) |
1662
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
119 if not groups: |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
120 return |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
121 if not client.server_groupblog_available: |
3028 | 122 raise exceptions.CancelError("GroupBlog is not available") |
123 log.debug("This entry use group blog") | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
124 form = data_form.Form("submit", formNamespace=NS_PUBSUB_ITEM_CONFIG) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
125 access = data_form.Field( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
126 None, self._p.OPT_ACCESS_MODEL, value=self._p.ACCESS_PUBLISHER_ROSTER |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
127 ) |
1662
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
128 allowed = data_form.Field(None, self._p.OPT_ROSTER_GROUPS_ALLOWED, values=groups) |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
129 form.addField(access) |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
130 form.addField(allowed) |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
131 item_elt.addChild(form.toElement()) |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
132 |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
133 def _commentsTrigger(self, client, mb_data, options): |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
134 """This method is called when a comments node is about to be created |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
135 |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
136 It changes the access mode to roster if needed, and give the authorized groups |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
137 """ |
9aa2a703e460
plugin group blog: group permissions are used if "group*" keys are found in mbdata (in data2entry and comments trigger)
Goffi <goffi@goffi.org>
parents:
1552
diff
changeset
|
138 if "group" in mb_data: |
2201
40dd9eb2692c
plugin groupblog, XEP-0060: added ACCESS_PUBLISHER_ROSTER and switched to it in groupblog
Goffi <goffi@goffi.org>
parents:
2148
diff
changeset
|
139 options[self._p.OPT_ACCESS_MODEL] = self._p.ACCESS_PUBLISHER_ROSTER |
2807
0b7ce5daee9b
plugin XEP-0277: blog items data are now entirely serialised before going to bridge:
Goffi <goffi@goffi.org>
parents:
2771
diff
changeset
|
140 options[self._p.OPT_ROSTER_GROUPS_ALLOWED] = mb_data['groups'] |
1268
bb30bf3ae932
plugins XEP-0060, XEP-0277, groupblog: make use of RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents:
1243
diff
changeset
|
141 |
3028 | 142 @implementer(iwokkel.IDisco) |
476
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
143 class GroupBlog_handler(XMPPHandler): |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
144 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
145 def getDiscoInfo(self, requestor, target, nodeIdentifier=""): |
476
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
146 return [disco.DiscoFeature(NS_GROUPBLOG)] |
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
147 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
148 def getDiscoItems(self, requestor, target, nodeIdentifier=""): |
476
b9fd32b46306
plugin groupblog: added disco info + misc fixes
Goffi <goffi@goffi.org>
parents:
471
diff
changeset
|
149 return [] |