def onClubUpdated(self, clubDBID, clubData, unitData): updater = self.__subscriptions.get(clubDBID, None) club = ClubDescr(clubDBID, clubData) unit = cPickle.loads(unitData) clubsCache = self.__cache.setdefault('clubs', {}) unitsCache = self.__cache.setdefault('units', {}) clubsCache[clubDBID] = club if unitsCache.get(clubDBID, None) != unit: unitsCache[clubDBID] = unit self.onClientClubsUnitInfoChanged(clubDBID, unit) if updater is True or updater is None: return else: updater(clubDBID, clubData) return
def __init__(self, clubDbID, clubDescr): self._clubDescr = ClubDescr(clubDbID, clubDescr) self.__clubDbID = clubDbID self.__restrictions = RestrictionsCollection(self._clubDescr.restrictions)
class Club(object): def __init__(self, clubDbID, clubDescr): self._clubDescr = ClubDescr(clubDbID, clubDescr) self.__clubDbID = clubDbID self.__restrictions = RestrictionsCollection(self._clubDescr.restrictions) @storage_getter('users') def users(self): return None def getClubDbID(self): return self.__clubDbID def getDescriptor(self): return self._clubDescr def getUserName(self): return i18n.encodeUtf8(self._clubDescr.name) def getUserDescription(self): return i18n.encodeUtf8(self._clubDescr.description or '') def getUserShortDescription(self): return i18n.encodeUtf8(self._clubDescr.shortDescription or '') def getOwnerDbID(self): return self._clubDescr.owner def getOwner(self): return self.getMember(self._clubDescr.owner) def getState(self): return _ClubState(self._clubDescr.state) def getLadderInfo(self): return _LadderInfo(*self._clubDescr.ladder) def getEmblem16x16(self): return self._clubDescr.emblems.get(EMBLEM_TYPE.SIZE_16x16) def getEmblem24x24(self): return self._clubDescr.emblems.get(EMBLEM_TYPE.SIZE_24x24) def getEmblem32x32(self): return self._clubDescr.emblems.get(EMBLEM_TYPE.SIZE_32x32) def getEmblem64x64(self): return self._clubDescr.emblems.get(EMBLEM_TYPE.SIZE_64x64) def getEmblem256x256(self): return self._clubDescr.emblems.get(EMBLEM_TYPE.SIZE_256x256) def getApplicantsRequirements(self): return _ApplicantsRequirements(self._clubDescr.minWinRate, self._clubDescr.minBattleCount, self.getUserShortDescription()) def hasMember(self, dbID): return dbID in self._clubDescr.members def isStaffed(self): return len(self._clubDescr.members) >= CLUB_LIMITS.MAX_MEMBERS def wasInRatedBattleThisSeason(self): return self.getSeasonDossier().getTotalStats().getBattlesCount() > 0 def getMember(self, memberDbID = None): memberDbID = memberDbID or getPlayerDatabaseID() if self.hasMember(memberDbID): return self.__makeMemberItem(memberDbID, self._clubDescr.members[memberDbID]) else: return None def getMembers(self): result = {} for memberDbID, roleMask in self._clubDescr.members.iteritems(): result[memberDbID] = self.__makeMemberItem(memberDbID, roleMask) return result def getInvitation(self, invID): invites = self.getInvites() if invID in invites: return invites[invID] return self.getApplicants().get(invID) def getInvites(self, onlyActive = False): result = {} for inviteeDbID, data in self._clubDescr.invites.iteritems(): timestamp, inviterDbID, status, updatingTime = data invite = ClubInvite(self.__clubDbID, inviteeDbID, inviterDbID, timestamp, status, updatingTime) if not onlyActive or invite.isActive(): result[invite.getID()] = invite return result def getApplicants(self, onlyActive = False): result = {} for applicantDbID, data in self._clubDescr.applicants.iteritems(): timestamp, comment, status, updatingTime = data app = ClubApplication(self.__clubDbID, applicantDbID, comment, timestamp, status, updatingTime) if not onlyActive or app.isActive(): result[app.getID()] = app return result def getSeasonDossier(self): return ClubDossier(self._clubDescr.getDossierDescr()[0], self.__clubDbID) def getTotalDossier(self): return ClubDossier(self._clubDescr.getDossierDescr()[1], self.__clubDbID) def isChanged(self, newClub): return self._clubDescr.rev != newClub.getDescriptor().rev def getPermissions(self, memberDbID = None): if memberDbID is None: memberDbID = getPlayerDatabaseID() if self.hasMember(memberDbID): return MemberPermissions(self._clubDescr.members[memberDbID]) else: return DefaultMemberPermissions() def getUnitInfo(self): from gui.clubs.club_helpers import getClubUnit unit = getClubUnit(self.__clubDbID) if unit is not None: return _UnitInfo(*unit) else: return def hasActiveUnit(self): return self.getUnitInfo() is not None def getRestrictions(self): return self.__restrictions def getCreationTime(self): return self._clubDescr.createdAt def canParticipateBattles(self): return len(self._clubDescr.members) >= MIN_MEMBERS_COUNT def __makeMemberItem(self, memberDbID, roleMask): return _Member(memberDbID, roleMask, clubDbID=self.__clubDbID, extra=_MemberExtra(*self._clubDescr.getMemberExtras(memberDbID))) def __repr__(self): return 'Club(dbID = %d, state = %s, members = %d)' % (self.__clubDbID, self.getState(), len(self.getMembers()))
def __init__(self, clubDbID, clubDescr): self._clubDescr = ClubDescr(clubDbID, clubDescr) self.__clubDbID = clubDbID self.__restrictions = RestrictionsCollection( self._clubDescr.restrictions)
class Club(object): def __init__(self, clubDbID, clubDescr): self._clubDescr = ClubDescr(clubDbID, clubDescr) self.__clubDbID = clubDbID self.__restrictions = RestrictionsCollection( self._clubDescr.restrictions) @storage_getter('users') def users(self): return None def getClubDbID(self): return self.__clubDbID def getDescriptor(self): return self._clubDescr def getUserName(self): return i18n.encodeUtf8(self._clubDescr.name) def getUserDescription(self): return i18n.encodeUtf8(self._clubDescr.description or '') def getUserShortDescription(self): return i18n.encodeUtf8(self._clubDescr.shortDescription or '') def getOwnerDbID(self): return self._clubDescr.owner def getOwner(self): return self.getMember(self._clubDescr.owner) def getState(self): return _ClubState(self._clubDescr.state) def getLadderInfo(self): return _LadderInfo(*self._clubDescr.ladder) def getEmblem16x16(self): return self._clubDescr.emblems.get(EMBLEM_TYPE.SIZE_16x16) def getEmblem24x24(self): return self._clubDescr.emblems.get(EMBLEM_TYPE.SIZE_24x24) def getEmblem32x32(self): return self._clubDescr.emblems.get(EMBLEM_TYPE.SIZE_32x32) def getEmblem64x64(self): return self._clubDescr.emblems.get(EMBLEM_TYPE.SIZE_64x64) def getEmblem256x256(self): return self._clubDescr.emblems.get(EMBLEM_TYPE.SIZE_256x256) def getApplicantsRequirements(self): return _ApplicantsRequirements(self._clubDescr.minWinRate, self._clubDescr.minBattleCount, self.getUserShortDescription()) def hasMember(self, dbID): return dbID in self._clubDescr.members def isStaffed(self): return len(self._clubDescr.members) >= CLUB_LIMITS.MAX_MEMBERS def wasInRatedBattleThisSeason(self): return self.getSeasonDossier().getTotalStats().getBattlesCount() > 0 def getMember(self, memberDbID=None): memberDbID = memberDbID or getPlayerDatabaseID() if self.hasMember(memberDbID): return self.__makeMemberItem(memberDbID, self._clubDescr.members[memberDbID]) else: return None def getMembers(self): result = {} for memberDbID, roleMask in self._clubDescr.members.iteritems(): result[memberDbID] = self.__makeMemberItem(memberDbID, roleMask) return result def getInvitation(self, invID): invites = self.getInvites() if invID in invites: return invites[invID] return self.getApplicants().get(invID) def getInvites(self, onlyActive=False): result = {} for inviteeDbID, data in self._clubDescr.invites.iteritems(): timestamp, inviterDbID, status, updatingTime = data invite = ClubInvite(self.__clubDbID, inviteeDbID, inviterDbID, timestamp, status, updatingTime) if not onlyActive or invite.isActive(): result[invite.getID()] = invite return result def getApplicants(self, onlyActive=False): result = {} for applicantDbID, data in self._clubDescr.applicants.iteritems(): timestamp, comment, status, updatingTime = data app = ClubApplication(self.__clubDbID, applicantDbID, comment, timestamp, status, updatingTime) if not onlyActive or app.isActive(): result[app.getID()] = app return result def getSeasonDossier(self): return ClubDossier(self._clubDescr.getDossierDescr()[0], self.__clubDbID) def getTotalDossier(self): return ClubDossier(self._clubDescr.getDossierDescr()[1], self.__clubDbID) def isChanged(self, newClub): return self._clubDescr.rev != newClub.getDescriptor().rev def getPermissions(self, memberDbID=None): if memberDbID is None: memberDbID = getPlayerDatabaseID() if self.hasMember(memberDbID): return MemberPermissions(self._clubDescr.members[memberDbID]) else: return DefaultMemberPermissions() def getUnitInfo(self): from gui.clubs.club_helpers import getClubUnit unit = getClubUnit(self.__clubDbID) if unit is not None: return _UnitInfo(*unit) else: return def hasActiveUnit(self): return self.getUnitInfo() is not None def getRestrictions(self): return self.__restrictions def getCreationTime(self): return self._clubDescr.createdAt def canParticipateBattles(self): return len(self._clubDescr.members) >= MIN_MEMBERS_COUNT def __makeMemberItem(self, memberDbID, roleMask): return _Member( memberDbID, roleMask, clubDbID=self.__clubDbID, extra=_MemberExtra(*self._clubDescr.getMemberExtras(memberDbID))) def __repr__(self): return 'Club(dbID = %d, state = %s, members = %d)' % ( self.__clubDbID, self.getState(), len(self.getMembers()))