1 from sleekxmpp
.xmlstream
import ET
, ElementBase
, register_stanza_plugin
4 class Privacy(ElementBase
):
6 namespace
= 'jabber:iq:privacy'
7 plugin_attrib
= 'privacy'
10 def add_list(self
, name
):
12 priv_list
['name'] = name
13 self
.append(priv_list
)
17 class Active(ElementBase
):
19 namespace
= 'jabber:iq:privacy'
21 interfaces
= set(['name'])
24 class Default(ElementBase
):
26 namespace
= 'jabber:iq:privacy'
28 interfaces
= set(['name'])
31 class List(ElementBase
):
33 namespace
= 'jabber:iq:privacy'
35 plugin_multi_attrib
= 'lists'
36 interfaces
= set(['name'])
38 def add_item(self
, value
, action
, order
, itype
=None, iq
=False,
39 message
=False, presence_in
=False, presence_out
=False):
41 item
.values
= {'type': itype
,
47 'presence_in': presence_in
,
48 'presence_out': presence_out
}
53 class Item(ElementBase
):
55 namespace
= 'jabber:iq:privacy'
57 plugin_multi_attrib
= 'items'
58 interfaces
= set(['type', 'value', 'action', 'order', 'iq',
59 'message', 'presence_in', 'presence_out'])
60 bool_interfaces
= set(['message', 'iq', 'presence_in', 'presence_out'])
62 type_values
= ('', 'jid', 'group', 'subscription')
63 action_values
= ('allow', 'deny')
65 def set_type(self
, value
):
66 if value
and value
not in self
.type_values
:
67 raise ValueError('Unknown type value: %s' % value
)
69 self
._set
_attr
('type', value
)
71 def set_action(self
, value
):
72 if value
not in self
.action_values
:
73 raise ValueError('Unknown action value: %s' % value
)
75 self
._set
_attr
('action', value
)
77 def set_presence_in(self
, value
):
78 keep
= True if value
else False
79 self
._set
_sub
_text
('presence-in', '', keep
=keep
)
81 def get_presence_in(self
):
82 pres
= self
.xml
.find('{%s}presence-in' % self
.namespace
)
83 return pres
is not None
85 def del_presence_in(self
):
86 self
._del
_sub
('{%s}presence-in' % self
.namespace
)
88 def set_presence_out(self
, value
):
89 keep
= True if value
else False
90 self
._set
_sub
_text
('presence-in', '', keep
=keep
)
92 def get_presence_out(self
):
93 pres
= self
.xml
.find('{%s}presence-in' % self
.namespace
)
94 return pres
is not None
96 def del_presence_out(self
):
97 self
._del
_sub
('{%s}presence-in' % self
.namespace
)
100 register_stanza_plugin(Privacy
, Active
)
101 register_stanza_plugin(Privacy
, Default
)
102 register_stanza_plugin(Privacy
, List
, iterable
=True)
103 register_stanza_plugin(List
, Item
, iterable
=True)