Esempio n. 1
0
    def __handleIQ(self, iqID, iqType, pyGlooxTag):
        if iqID != self.__iqID:
            return
        else:
            result, error = self.__cached.copy(), None
            self.__cached.clear()
            self.__iqID = ''
            if iqType == IQ_TYPE.RESULT:
                handler = spa_resolver.SpaResolverHandler()
                getter = self.usersStorage.getUser
                setter = self.usersStorage.addUser
                errorOutput = g_logOutput.error
                for dbID, name, error in handler.handleTag(pyGlooxTag):
                    if error:
                        errorOutput(CLIENT_LOG_AREA.PY_WRAPPER,
                                    'Item is invalid', dbID, name, error)
                        continue
                    user = getter(dbID)
                    if not user:
                        user = SharedUserEntity(dbID, name)
                        setter(user)
                    else:
                        user.update(name=name)
                    result[dbID] = name

            elif iqType == IQ_TYPE.ERROR:
                error = createServerIQError(pyGlooxTag)
            self.__doCallback(result=result, error=error)
            return
Esempio n. 2
0
    def __handleIQ(self, iqID, iqType, pyGlooxTag):
        if iqID != self.__iqID:
            return
        else:
            result, error = self.__cached.copy(), None
            self.__cached.clear()
            self.__iqID = ''
            if iqType == IQ_TYPE.RESULT:
                handler = spa_resolver.SpaResolverHandler()
                getter = self.usersStorage.getUser
                setter = self.usersStorage.addUser
                errorOutput = g_logOutput.error
                for dbID, name, error in handler.handleTag(pyGlooxTag):
                    if error:
                        errorOutput(CLIENT_LOG_AREA.PY_WRAPPER, 'Item is invalid', dbID, name, error)
                        continue
                    user = getter(dbID)
                    if not user:
                        user = SharedUserEntity(dbID, name)
                        setter(user)
                    else:
                        user.update(name=name)
                    result[dbID] = name

            elif iqType == IQ_TYPE.ERROR:
                error = createServerIQError(pyGlooxTag)
            self.__doCallback(result=result, error=error)
            return
Esempio n. 3
0
    def __pe_onClanMembersListChanged(self):
        clanMembers = getattr(BigWorld.player(), 'clanMembers', {})
        LOG_DEBUG('setClanMembersList', clanMembers)
        if not self.__initSteps & _INIT_STEPS.MEMBERS_LIST_RECEIVED:
            self.__initSteps |= _INIT_STEPS.MEMBERS_LIST_RECEIVED
        clanAbbrev = self.playerCtx.getClanAbbrev()
        members = []
        if self.__clanChannel is not None:
            getter = self.__clanChannel.getMember
        else:
            getter = lambda dbID: None
        playerID = getPlayerDatabaseID()
        for dbID, (name, roleFlags) in clanMembers.iteritems():
            if getter(dbID) is None:
                gos = GAME_ONLINE_STATUS.UNDEFINED
            else:
                gos = GAME_ONLINE_STATUS.ONLINE
            if playerID == dbID:
                user = CurrentUserEntity(dbID,
                                         name=name,
                                         clanInfo=ClanInfo(
                                             0, clanAbbrev, roleFlags))
            else:
                user = SharedUserEntity(dbID,
                                        name=name,
                                        clanInfo=ClanInfo(
                                            0, clanAbbrev, roleFlags),
                                        gos=gos,
                                        tags={USER_TAG.CLAN_MEMBER})
            members.append(user)

        self.usersStorage.setClanMembersList(members)
        if self.__initSteps & _INIT_STEPS.LIST_INITED != 0:
            g_messengerEvents.users.onClanMembersListChanged()
        return
Esempio n. 4
0
 def updateUser(item, tags):
     dbID = item.getAccountDBID()
     user = userGetter(dbID)
     if user:
         user.addTags(tags)
         if USER_TAG.INVALID_NAME in user.getTags():
             user.update(name=item.getNickName())
     else:
         userSetter(SharedUserEntity(dbID, name=item.getNickName(), tags=tags, clanInfo=ClanInfo(abbrev=item.getClanAbbrev())))
Esempio n. 5
0
 def _update(self, note):
     user = self._getUser(protoType=None)
     if user:
         user.update(note=note)
         self._doNotify(USER_ACTION_ID.NOTE_CHANGED, user, False)
     elif note:
         user = SharedUserEntity(self._jid.getDatabaseID(), note=note)
         self.usersStorage.setUser(user)
         self._doNotify(USER_ACTION_ID.NOTE_CHANGED, user, False)
Esempio n. 6
0
def SearchResultIterator(value):
    value = dict(value)
    if 'strArg1' in value:
        result = cPickle.loads(value['strArg1'])
    else:
        result = []
    for name, dbID, clanAbbrev in result:
        if not name:
            continue
        yield SharedUserEntity(long(dbID), name=name, clanInfo=ClanInfo(abbrev=clanAbbrev))
Esempio n. 7
0
    def __onFindUsers(self, chatAction):
        chatActionDict = dict(chatAction)
        result = chatActionDict.get('data', [])
        requestID = chatActionDict.get('requestID', [])
        users = []
        for userData in result:
            name, dbID, clanAbbrev = userData[:3]
            dbID = long(dbID)
            if not len(name):
                continue
            received = SharedUserEntity(dbID, name=name, clanAbbrev=clanAbbrev)
            user = self.usersStorage.getUser(dbID)
            if user:
                if user.isCurrentPlayer():
                    received = user
                else:
                    received.update(tags=user.getTags())
            users.append(received)

        g_messengerEvents.users.onFindUsersComplete(requestID, users)
Esempio n. 8
0
    def result(self, pyGlooxTag):
        handler = contact_note.NotesListHandler()
        notes, (count, _, last) = handler.handleTag(pyGlooxTag)
        getter = self.usersStorage.getUser
        setter = self.usersStorage.setUser
        for dbID, note in notes:
            contact = getter(dbID)
            if contact:
                contact.update(note=note)
            else:
                setter(SharedUserEntity(dbID, note=note))

        self._offset += len(notes)
        if self._offset < count:
            self._iqID = self.client().sendIQ(contact_note.NotesListQuery(CONTACT_LIMIT.NOTES_PER_PAGE, last))
        else:
            g_messengerEvents.users.onNotesListReceived()
            self._result = TASK_RESULT.REMOVE
Esempio n. 9
0
    def __setClubMembersList(self, members):
        self.usersStorage.removeTags(_TAGS)
        getter = self.usersStorage.getUser
        setter = self.usersStorage.setUser
        unresolved = set()
        for dbID in members.iterkeys():
            contact = getter(dbID)
            if contact:
                contact.addTags(_TAGS)
            else:
                unresolved.add(dbID)
                setter(SharedUserEntity(dbID, tags={USER_TAG.CLUB_MEMBER}))

        if unresolved:
            from messenger.proto import proto_getter
            xmpp = proto_getter(PROTO_TYPE.XMPP).get()
            xmpp.nicknames.resolve(unresolved, self.__onClubMembersReceived)
        else:
            self.__onClubMembersReceived()
Esempio n. 10
0
 def __getUser(self, dbId, username, clanAbbrev):
     user = self.usersStorage.getUser(dbId)
     if user is None:
         user = SharedUserEntity(dbId, name=username, clanInfo=UserClanInfo(abbrev=clanAbbrev), scope=UserEntityScope.LOBBY, tags={USER_TAG.SEARCH, USER_TAG.TEMP})
         self.usersStorage.addUser(user)
     return user
Esempio n. 11
0
 def getContact(self, userDbID):
     user = self.users.getUser(userDbID)
     if not user:
         user = SharedUserEntity(userDbID)
         self.users.addUser(user)
     return user
 def getContact(self, userID, scope=UserEntityScope.LOBBY):
     user = self.users.getUser(userID, scope=scope)
     if not user:
         user = SharedUserEntity(userID)
         self.users.addUser(user)
     return user