Mercurial > libervia-backend
comparison sat_frontends/quick_frontend/quick_chat.py @ 2850:272dc905ff20
quick frontend (chat): new updateOccupants methods which add/remove occupants to be in sync with new list
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 10 Mar 2019 18:03:02 +0100 |
parents | c2858e63cd82 |
children | 7764383a968c |
comparison
equal
deleted
inserted
replaced
2849:c2858e63cd82 | 2850:272dc905ff20 |
---|---|
431 """set the whole list of occupants""" | 431 """set the whole list of occupants""" |
432 assert len(self.occupants) == 0 | 432 assert len(self.occupants) == 0 |
433 for nick, data in occupants.iteritems(): | 433 for nick, data in occupants.iteritems(): |
434 self.occupants[nick] = Occupant(self, data, self.profile) | 434 self.occupants[nick] = Occupant(self, data, self.profile) |
435 | 435 |
436 def updateOccupants(self, occupants): | |
437 """Update occupants list | |
438 | |
439 In opposition to setOccupants, this only add missing occupants and remove | |
440 occupants who have left | |
441 """ | |
442 # FIXME: occupants with modified status are not handled | |
443 local_occupants = set(self.occupants) | |
444 updated_occupants = set(occupants) | |
445 left_occupants = local_occupants - updated_occupants | |
446 joined_occupants = updated_occupants - local_occupants | |
447 log.debug(u"updating occupants for {room}:\n" | |
448 u"left: {left_occupants}\n" | |
449 u"joined: {joined_occupants}" | |
450 .format(room=self.target, | |
451 left_occupants=u", ".join(left_occupants), | |
452 joined_occupants=u", ".join(joined_occupants))) | |
453 for nick in left_occupants: | |
454 self.removeUser(occupants[nick]) | |
455 for nick in joined_occupants: | |
456 self.addUser(occupants[nick]) | |
457 | |
436 def addUser(self, occupant_data): | 458 def addUser(self, occupant_data): |
437 """Add user if it is not in the group list""" | 459 """Add user if it is not in the group list""" |
438 occupant = Occupant(self, occupant_data, self.profile) | 460 occupant = Occupant(self, occupant_data, self.profile) |
439 self.occupants[occupant.nick] = occupant | 461 self.occupants[occupant.nick] = occupant |
440 return occupant | 462 return occupant |