def get_contacts(self, contact_filter=None, sort=''): """Return the group contacts, filtered and sorted""" contact_list = self.contacts.copy() if not contact_filter\ else [contact for contact in self.contacts.copy() if contact_filter[0](contact, contact_filter[1])] contact_list = sorted(contact_list, key=SORTING_METHODS['name']) for sorting in sort.split(':'): if sorting == 'reverse': contact_list = list(reversed(contact_list)) else: method = SORTING_METHODS.get(sorting, lambda x: 0) contact_list = sorted(contact_list, key=method) return contact_list
def get_contacts_sorted_filtered(self, sort=''): """ Return a list of all the contacts sorted with a criteria """ contact_list = [] for contact in self.get_contacts(): if contact.bare_jid != self.jid: if self.contact_filter: if self.contact_filter[0](contact, self.contact_filter[1]): contact_list.append(contact) else: contact_list.append(contact) contact_list = sorted(contact_list, key=SORTING_METHODS['name']) for sorting in sort.split(':'): if sorting == 'reverse': contact_list = list(reversed(contact_list)) else: method = SORTING_METHODS.get(sorting, lambda x: 0) contact_list = sorted(contact_list, key=method) return contact_list