Bump to 1.3.1
[slixmpp.git] / sleekxmpp / plugins / xep_0016 / stanza.py
blob3f9977fc3ec953ecd9f75aa792559e5d6c544824
1 from sleekxmpp.xmlstream import ET, ElementBase, register_stanza_plugin
4 class Privacy(ElementBase):
5 name = 'query'
6 namespace = 'jabber:iq:privacy'
7 plugin_attrib = 'privacy'
8 interfaces = set()
10 def add_list(self, name):
11 priv_list = List()
12 priv_list['name'] = name
13 self.append(priv_list)
14 return priv_list
17 class Active(ElementBase):
18 name = 'active'
19 namespace = 'jabber:iq:privacy'
20 plugin_attrib = name
21 interfaces = set(['name'])
24 class Default(ElementBase):
25 name = 'default'
26 namespace = 'jabber:iq:privacy'
27 plugin_attrib = name
28 interfaces = set(['name'])
31 class List(ElementBase):
32 name = 'list'
33 namespace = 'jabber:iq:privacy'
34 plugin_attrib = name
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):
40 item = Item()
41 item.values = {'type': itype,
42 'value': value,
43 'action': action,
44 'order': order,
45 'message': message,
46 'iq': iq,
47 'presence_in': presence_in,
48 'presence_out': presence_out}
49 self.append(item)
50 return item
53 class Item(ElementBase):
54 name = 'item'
55 namespace = 'jabber:iq:privacy'
56 plugin_attrib = name
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)
68 else:
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)
74 else:
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)