Exemple #1
0
 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
Exemple #2
0
 def __init__(self, clubDbID, clubDescr):
     self._clubDescr = ClubDescr(clubDbID, clubDescr)
     self.__clubDbID = clubDbID
     self.__restrictions = RestrictionsCollection(self._clubDescr.restrictions)
Exemple #3
0
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()))
Exemple #4
0
 def __init__(self, clubDbID, clubDescr):
     self._clubDescr = ClubDescr(clubDbID, clubDescr)
     self.__clubDbID = clubDbID
     self.__restrictions = RestrictionsCollection(
         self._clubDescr.restrictions)
Exemple #5
0
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()))