Exemple #1
0
    def update_keys(self):
        """Update all API Keys and Characters associated."""
        from newauth.models import Character

        updated_characters = set()
        for api_key in self.api_keys.all():
            api_key.update_api_key()
            api_key.get_characters()
            for character in api_key.characters:
                updated_characters.add(character.id)
            db.session.add(api_key)
        characters_to_delete = Character.query.filter(db.not_(Character.id.in_(list(updated_characters)))).all()
        for character in characters_to_delete:
            db.session.delete(character)
        if self.main_character_id in characters_to_delete:
            del self.main_character_id
        db.session.add(self)
        db.session.commit()
Exemple #2
0
 def update_keys(self):
     """Update all API Keys and Characters associated."""
     from newauth.models import Character
     updated_characters = set()
     for api_key in self.api_keys.all():
         api_key.update_api_key()
         api_key.get_characters()
         for character in api_key.characters:
             updated_characters.add(character.id)
         db.session.add(api_key)
     characters_to_delete = Character.query.filter(
         db.not_(Character.id.in_(list(updated_characters)))).all()
     for character in characters_to_delete:
         db.session.delete(character)
     if self.main_character_id in characters_to_delete:
         del self.main_character_id
     db.session.add(self)
     db.session.commit()
Exemple #3
0
    def update_contacts():
        contacts_updated = set()
        auth_contacts = AuthContact.query.all()
        alliance_list = EveAPIQuery(public=True).get('eve/AllianceList')
        # Adding itself
        for alliance_id in current_app.config['EVE']['alliances']:
            alliance = None
            for a in alliance_list.row:
                if a.allianceID == alliance_id:
                    alliance = a
            if not alliance:
                current_app.logger.warning(
                    'Could not find alliance #{}'.format(alliance_id))
                continue
            if alliance_id not in contacts_updated:
                contacts_updated.add(alliance_id)
                db.session.add(
                    AuthContact.get_or_create(
                        id=alliance.allianceID,
                        name=alliance.name,
                        short_name=alliance.shortName,
                        type=AuthContactType.alliance.value,
                        members=alliance.memberCount,
                        internal=True,
                        enabled=True,
                        updated_on=datetime.datetime.utcnow()))
            for corporation in alliance.memberCorporations.row:
                sheet = EveAPIQuery(public=True).get(
                    'corp/CorporationSheet',
                    corporationID=corporation.corporationID)
                if sheet.corporationID not in contacts_updated:
                    contacts_updated.add(sheet.corporationID)
                    db.session.add(
                        AuthContact.get_or_create(
                            id=sheet.corporationID,
                            name=sheet.corporationName,
                            short_name=sheet.ticker,
                            type=AuthContactType.corporation.value,
                            members=sheet.memberCount,
                            internal=True,
                            enabled=True,
                            updated_on=datetime.datetime.utcnow()))

        for corporation_id in current_app.config['EVE']['corporations']:
            sheet = EveAPIQuery(public=True).get('corp/CorporationSheet',
                                                 corporationID=corporation_id)
            if sheet.corporationID not in contacts_updated:
                contacts_updated.add(sheet.corporationID)
                db.session.add(
                    AuthContact.get_or_create(
                        id=sheet.corporationID,
                        name=sheet.corporationName,
                        short_name=sheet.ticker,
                        type=AuthContactType.corporation.value,
                        members=sheet.memberCount,
                        enabled=True,
                        updated_on=datetime.datetime.utcnow()))

        for key in current_app.config['EVE']['keys']:
            contact_list = EveAPIQuery(key_id=key[0],
                                       vcode=key[1]).get('corp/ContactList')
            for contact in contact_list.corporateContactList.row + contact_list.allianceContactList.row:
                if contact.contactTypeID in CHARACTER_TYPES:
                    pass  # We don't really care about character contacts
                elif contact.contactTypeID in CORPORATION_TYPES:
                    sheet = EveAPIQuery(public=True).get(
                        'corp/CorporationSheet',
                        corporationID=contact.contactID)
                    if sheet.corporationID not in contacts_updated:
                        contacts_updated.add(sheet.corporationID)
                        db.session.add(
                            AuthContact.get_or_create(
                                id=sheet.corporationID,
                                name=sheet.corporationName,
                                short_name=sheet.ticker,
                                type=AuthContactType.corporation.value,
                                members=sheet.memberCount,
                                enabled=False,
                                updated_on=datetime.datetime.utcnow()))
                elif contact.contactTypeID in ALLIANCE_TYPES:
                    alliance = None
                    for a in alliance_list.row:
                        if a.allianceID == alliance_id:
                            alliance = a
                    if not alliance:
                        current_app.logger.warning(
                            'Could not find alliance #{}'.format(
                                contact.contactID))
                        continue
                    if alliance.allianceID not in contacts_updated:
                        contacts_updated.add(alliance.allianceID)
                        db.session.add(
                            AuthContact.get_or_create(
                                id=alliance.allianceID,
                                name=alliance.name,
                                short_name=alliance.shortName,
                                type=AuthContactType.alliance.value,
                                members=alliance.memberCount,
                                enabled=False,
                                updated_on=datetime.datetime.utcnow()))
                else:
                    current_app.logger.warning(
                        'Could not determinate contact type for contact: {}'.
                        format(contact))
        contacts_to_delete = AuthContact.query.filter(
            db.not_(AuthContact.id.in_(list(contacts_updated)))).all()
        current_app.logger.info(
            "Updating {} contacts and deleting {} contacts".format(
                len(contacts_updated), len(contacts_to_delete)))
        db.session.commit()
Exemple #4
0
    def update_contacts():
        contacts_updated = set()
        auth_contacts = AuthContact.query.all()
        alliance_list = EveAPIQuery(public=True).get('eve/AllianceList')
        # Adding itself
        for alliance_id in current_app.config['EVE']['alliances']:
            alliance = None
            for a in alliance_list.row:
                if a.allianceID == alliance_id:
                    alliance = a
            if not alliance:
                current_app.logger.warning('Could not find alliance #{}'.format(alliance_id))
                continue
            if alliance_id not in contacts_updated:
                contacts_updated.add(alliance_id)
                db.session.add(AuthContact.get_or_create(
                    id=alliance.allianceID,
                    name=alliance.name,
                    short_name=alliance.shortName,
                    type=AuthContactType.alliance.value,
                    members=alliance.memberCount,
                    internal=True,
                    enabled=True,
                    updated_on=datetime.datetime.utcnow()
                ))
            for corporation in alliance.memberCorporations.row:
                sheet = EveAPIQuery(public=True).get('corp/CorporationSheet', corporationID=corporation.corporationID)
                if sheet.corporationID not in contacts_updated:
                    contacts_updated.add(sheet.corporationID)
                    db.session.add(AuthContact.get_or_create(
                        id=sheet.corporationID,
                        name=sheet.corporationName,
                        short_name=sheet.ticker,
                        type=AuthContactType.corporation.value,
                        members=sheet.memberCount,
                        internal=True,
                        enabled=True,
                        updated_on=datetime.datetime.utcnow()
                    ))

        for corporation_id in current_app.config['EVE']['corporations']:
            sheet = EveAPIQuery(public=True).get('corp/CorporationSheet', corporationID=corporation_id)
            if sheet.corporationID not in contacts_updated:
                contacts_updated.add(sheet.corporationID)
                db.session.add(AuthContact.get_or_create(
                    id=sheet.corporationID,
                    name=sheet.corporationName,
                    short_name=sheet.ticker,
                    type=AuthContactType.corporation.value,
                    members=sheet.memberCount,
                    enabled=True,
                    updated_on=datetime.datetime.utcnow()
                ))

        for key in current_app.config['EVE']['keys']:
            contact_list = EveAPIQuery(key_id=key[0], vcode=key[1]).get('corp/ContactList')
            for contact in contact_list.corporateContactList.row + contact_list.allianceContactList.row:
                if contact.contactTypeID in CHARACTER_TYPES:
                    pass  # We don't really care about character contacts
                elif contact.contactTypeID in CORPORATION_TYPES:
                    sheet = EveAPIQuery(public=True).get('corp/CorporationSheet', corporationID=contact.contactID)
                    if sheet.corporationID not in contacts_updated:
                        contacts_updated.add(sheet.corporationID)
                        db.session.add(AuthContact.get_or_create(
                            id=sheet.corporationID,
                            name=sheet.corporationName,
                            short_name=sheet.ticker,
                            type=AuthContactType.corporation.value,
                            members=sheet.memberCount,
                            enabled=False,
                            updated_on=datetime.datetime.utcnow()
                        ))
                elif contact.contactTypeID in ALLIANCE_TYPES:
                    alliance = None
                    for a in alliance_list.row:
                        if a.allianceID == alliance_id:
                            alliance = a
                    if not alliance:
                        current_app.logger.warning('Could not find alliance #{}'.format(contact.contactID))
                        continue
                    if alliance.allianceID not in contacts_updated:
                        contacts_updated.add(alliance.allianceID)
                        db.session.add(AuthContact.get_or_create(
                            id=alliance.allianceID,
                            name=alliance.name,
                            short_name=alliance.shortName,
                            type=AuthContactType.alliance.value,
                            members=alliance.memberCount,
                            enabled=False,
                            updated_on=datetime.datetime.utcnow()
                        ))
                else:
                    current_app.logger.warning('Could not determinate contact type for contact: {}'.format(contact))
        contacts_to_delete = AuthContact.query.filter(db.not_(AuthContact.id.in_(list(contacts_updated)))).all()
        current_app.logger.info("Updating {} contacts and deleting {} contacts".format(len(contacts_updated), len(contacts_to_delete)))
        db.session.commit()