Getting start on this here em code
[theonering] / src / channel / group.py
1 import logging
2
3 import telepathy
4
5 import contact_list
6
7
8 class TheOneRingGroupChannel(contact_list.TheOneRingListChannel):
9
10         def __init__(self, connection, h):
11                 self.__pending_add = []
12                 self.__pending_remove = []
13                 contact_list.TheOneRingListChannel.__init__(self, connection, h)
14                 self.GroupFlagsChanged(
15                         telepathy.CHANNEL_GROUP_FLAG_CAN_ADD | telepathy.CHANNEL_GROUP_FLAG_CAN_REMOVE,
16                         0,
17                 )
18
19         def AddMembers(self, contacts, message):
20                 addressBook = self._conn.gvoice_client
21                 if self._handle.group is None:
22                         for contactHandleId in contacts:
23                                 contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId)
24                                 logging.info("Adding contact %r to pending group %r" % (contactHandle, self._handle))
25                                 if contactHandleId in self.__pending_remove:
26                                         self.__pending_remove.remove(contactHandleId)
27                                 else:
28                                         self.__pending_add.append(contactHandleId)
29                         return
30                 else:
31                         for contactHandleId in contacts:
32                                 contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId)
33                                 logging.info("Adding contact %r to group %r" % (contactHandle, self._handle))
34                                 contact = contactHandle.contact
35                                 group = self._handle.group
36                                 if contact is not None:
37                                         addressBook.add_contact_to_group(group, contact)
38                                 else:
39                                         contactHandle.pending_groups.add(group)
40
41         def RemoveMembers(self, contacts, message):
42                 addressBook = self._conn.gvoice_client
43                 if self._handle.group is None:
44                         for contactHandleId in contacts:
45                                 contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId)
46                                 logging.info("Adding contact %r to pending group %r" % (contactHandle, self._handle))
47                                 if contactHandleId in self.__pending_add:
48                                         self.__pending_add.remove(contactHandleId)
49                                 else:
50                                         self.__pending_remove.append(contactHandleId)
51                         return
52                 else:
53                         for contactHandleId in contacts:
54                                 contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId)
55                                 logging.info("Removing contact %r from pending group %r" % (contactHandle, self._handle))
56                                 contact = contactHandle.contact
57                                 group = self._handle.group
58                                 if contact is not None:
59                                         addressBook.delete_contact_from_group(group, contact)
60                                 else:
61                                         contactHandle.pending_groups.discard(group)
62
63         def Close(self):
64                 logging.debug("Deleting group %s" % self._handle.name)
65                 addressBook = self._conn.gvoice_client
66                 group = self._handle.group
67                 addressBook.delete_group(group)