blob: ef01ee3e97b1d734f5df3f7ba8440f9883c8b7a3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
from slixmpp.stanza import Message
from slixmpp.xmlstream import (
ElementBase,
register_stanza_plugin,
)
from slixmpp.plugins.xep_0297 import Forwarded
class Privilege(ElementBase):
namespace = "urn:xmpp:privilege:1"
name = "privilege"
plugin_attrib = "privilege"
def permission(self, access):
for perm in self["perms"]:
if perm["access"] == access:
return perm["type"]
def roster(self):
return self.permission("roster")
def message(self):
return self.permission("message")
def presence(self):
return self.permission("presence")
def add_perm(self, access, type):
# This should only be needed for servers, so maybe out of scope for slixmpp
perm = Perm()
perm["type"] = type
perm["access"] = access
self.append(perm)
class Perm(ElementBase):
namespace = "urn:xmpp:privilege:1"
name = "perm"
plugin_attrib = "perm"
plugin_multi_attrib = "perms"
interfaces = {"type", "access"}
def register():
register_stanza_plugin(Message, Privilege)
register_stanza_plugin(Privilege, Forwarded)
register_stanza_plugin(Privilege, Perm, iterable=True)
|