Create new method for extracting the nearby_family. DRY!
This commit is contained in:
parent
6e442a50c8
commit
11f9800bec
|
@ -445,18 +445,8 @@ class RosterWindow:
|
||||||
family -- the family, see Contacts.get_metacontacts_family()
|
family -- the family, see Contacts.get_metacontacts_family()
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if self.regroup:
|
nearby_family, big_brother_jid, big_brother_account = \
|
||||||
# group all together
|
self._get_nearby_family_and_big_brother(family, account)
|
||||||
nearby_family = family
|
|
||||||
else:
|
|
||||||
# we want one nearby_family per account
|
|
||||||
nearby_family = [data for data in family
|
|
||||||
if account == data['account']]
|
|
||||||
|
|
||||||
big_brother_data = gajim.contacts.get_metacontacts_big_brother(
|
|
||||||
nearby_family)
|
|
||||||
big_brother_jid = big_brother_data['jid']
|
|
||||||
big_brother_account = big_brother_data['account']
|
|
||||||
big_brother_contact = gajim.contacts.get_first_contact_from_jid(
|
big_brother_contact = gajim.contacts.get_first_contact_from_jid(
|
||||||
big_brother_account, big_brother_jid)
|
big_brother_account, big_brother_jid)
|
||||||
|
|
||||||
|
@ -469,15 +459,13 @@ class RosterWindow:
|
||||||
brothers = []
|
brothers = []
|
||||||
# Filter family members
|
# Filter family members
|
||||||
for data in nearby_family:
|
for data in nearby_family:
|
||||||
if data == big_brother_data:
|
|
||||||
continue # already added
|
|
||||||
|
|
||||||
_account = data['account']
|
_account = data['account']
|
||||||
_jid = data['jid']
|
_jid = data['jid']
|
||||||
_contact = gajim.contacts.get_first_contact_from_jid(_account, _jid)
|
_contact = gajim.contacts.get_first_contact_from_jid(_account, _jid)
|
||||||
|
|
||||||
if not _contact:
|
if not _contact or _contact == big_brother_contact:
|
||||||
# Corresponding account is not connected
|
# Corresponding account is not connected
|
||||||
|
# or brother already added
|
||||||
continue
|
continue
|
||||||
|
|
||||||
assert len(self._get_contact_iter(_jid, _account, _contact, self.model)
|
assert len(self._get_contact_iter(_jid, _account, _contact, self.model)
|
||||||
|
@ -494,13 +482,8 @@ class RosterWindow:
|
||||||
|
|
||||||
See Contacts.get_metacontacts_family() and RosterWindow._remove_entity()
|
See Contacts.get_metacontacts_family() and RosterWindow._remove_entity()
|
||||||
'''
|
'''
|
||||||
if self.regroup:
|
nearby_family = self._get_nearby_family_and_big_brother(
|
||||||
# remove all
|
family, account)[0]
|
||||||
nearby_family = family
|
|
||||||
else:
|
|
||||||
# remove nearby_family per account
|
|
||||||
nearby_family = [data for data in family
|
|
||||||
if account == data['account']]
|
|
||||||
|
|
||||||
# Family might has changed (actual big brother not on top).
|
# Family might has changed (actual big brother not on top).
|
||||||
# Remove childs first then big brother
|
# Remove childs first then big brother
|
||||||
|
@ -558,19 +541,8 @@ class RosterWindow:
|
||||||
'''Regroup metacontact family if necessary.'''
|
'''Regroup metacontact family if necessary.'''
|
||||||
|
|
||||||
brothers = []
|
brothers = []
|
||||||
if self.regroup:
|
nearby_family, big_brother_jid, big_brother_account = \
|
||||||
# group all together
|
self._get_nearby_family_and_big_brother(family, account)
|
||||||
nearby_family = family
|
|
||||||
else:
|
|
||||||
# we want one nearby_family per account
|
|
||||||
nearby_family = [data for data in family
|
|
||||||
if account == data['account']]
|
|
||||||
|
|
||||||
big_brother_data = gajim.contacts.get_metacontacts_big_brother(
|
|
||||||
nearby_family)
|
|
||||||
big_brother_jid = big_brother_data['jid']
|
|
||||||
big_brother_account = big_brother_data['account']
|
|
||||||
|
|
||||||
child_iters = self._get_contact_iter(big_brother_jid, big_brother_account,
|
child_iters = self._get_contact_iter(big_brother_jid, big_brother_account,
|
||||||
model = self.model)
|
model = self.model)
|
||||||
parent_iter = self.model.iter_parent(child_iters[0])
|
parent_iter = self.model.iter_parent(child_iters[0])
|
||||||
|
@ -587,6 +559,31 @@ class RosterWindow:
|
||||||
self.draw_avatar(c.jid, acc)
|
self.draw_avatar(c.jid, acc)
|
||||||
|
|
||||||
|
|
||||||
|
def _get_nearby_family_and_big_brother(self, family, account):
|
||||||
|
'''Return the nearby family and its Big Brother
|
||||||
|
|
||||||
|
Nearby family is the part of the family that is grouped with the metacontact.
|
||||||
|
A metacontact may be over different accounts. If regroup is s False the
|
||||||
|
given family is split account wise.
|
||||||
|
|
||||||
|
(nearby_family, big_brother_jid, big_brother_account)
|
||||||
|
'''
|
||||||
|
if self.regroup:
|
||||||
|
# group all together
|
||||||
|
nearby_family = family
|
||||||
|
else:
|
||||||
|
# we want one nearby_family per account
|
||||||
|
nearby_family = [data for data in family
|
||||||
|
if account == data['account']]
|
||||||
|
|
||||||
|
big_brother_data = gajim.contacts.get_metacontacts_big_brother(
|
||||||
|
nearby_family)
|
||||||
|
big_brother_jid = big_brother_data['jid']
|
||||||
|
big_brother_account = big_brother_data['account']
|
||||||
|
|
||||||
|
return (nearby_family, big_brother_jid, big_brother_account)
|
||||||
|
|
||||||
|
|
||||||
def _add_self_contact(self, account):
|
def _add_self_contact(self, account):
|
||||||
'''Add account's SelfContact to roster and draw it and the account.
|
'''Add account's SelfContact to roster and draw it and the account.
|
||||||
|
|
||||||
|
@ -1038,18 +1035,8 @@ class RosterWindow:
|
||||||
family = gajim.contacts.get_metacontacts_family(account, jid)
|
family = gajim.contacts.get_metacontacts_family(account, jid)
|
||||||
if family: # Are we a metacontact (have a family)
|
if family: # Are we a metacontact (have a family)
|
||||||
|
|
||||||
if self.regroup:
|
nearby_family, big_brother_jid, big_brother_account = \
|
||||||
# group all together
|
self._get_nearby_family_and_big_brother(family, account)
|
||||||
nearby_family = family
|
|
||||||
else:
|
|
||||||
# we want one nearby_family per account
|
|
||||||
nearby_family = [data for data in family
|
|
||||||
if account == data['account']]
|
|
||||||
|
|
||||||
big_brother_data = gajim.contacts.get_metacontacts_big_brother(
|
|
||||||
nearby_family)
|
|
||||||
big_brother_jid = big_brother_data['jid']
|
|
||||||
big_brother_account = big_brother_data['account']
|
|
||||||
|
|
||||||
if big_brother_jid != jid or big_brother_account != account:
|
if big_brother_jid != jid or big_brother_account != account:
|
||||||
# We are a simple brother
|
# We are a simple brother
|
||||||
|
|
Loading…
Reference in New Issue