Beispiel #1
0
    values = d['result']
    pchar, created = EVEPlayerCharacter.objects.get_or_create(id=character_id)

    # Set the character's name, avoid oddities in the XML feed
    if not values['characterName'] == {}:
        pchar.name = values['characterName']
    else:
        pchar.name = ""
    pchar.security_status = values['securityStatus']

    # Set corporation and join date
    corp, created = EVEPlayerCorporation.objects.get_or_create(pk=values['corporationID'])
    from eve_api.tasks.corporation import import_corp_details
    if created or not corp.name or corp.api_last_updated < (datetime.utcnow() - timedelta(hours=12)):
        import_corp_details.delay(values['corporationID'])

    pchar.corporation = corp
    pchar.corporation_date = values['corporationDate']

    # Derrive Race value from the choices
    for v in API_RACES_CHOICES:
        val, race = v
        if race == values['race']:
            pchar.race = val
            break

    # Import employment history if its made available
    if 'employmentHistory' in values:
        reclist = pchar.employmenthistory.values_list('pk', flat=True)
        for emp in values['employmentHistory']:
Beispiel #2
0
    try:
        doc = CachedDocument.objects.api_query('/eve/AllianceList.xml.aspx')
    except DocumentRetrievalError, exc:
        import_alliance_details.retry(exc=exc)
        return

    parsedoc = basic_xml_parse_doc(doc)

    if 'eveapi' in parsedoc and not 'error' in parsedoc['eveapi']:
        for alliance in parsedoc['eveapi']['result']['alliances']:
            allobj, created = EVEPlayerAlliance.objects.get_or_create(pk=alliance['allianceID'])
            allobj.name = alliance['name']
            allobj.ticker = alliance['shortName']
            allobj.date_founded = datetime.strptime(alliance['startDate'], "%Y-%m-%d %H:%M:%S")
            allobj.executor, created = EVEPlayerCorporation.objects.get_or_create(id=alliance['executorCorpID'])
            allobj.member_count = alliance['memberCount']
            allobj.api_last_updated = datetime.utcnow()
            allobj.save()

            members = [int(corp['corporationID']) for corp in alliance['memberCorporations']]
            EVEPlayerCorporation.objects.filter(id__in=members).update(alliance=allobj)
            EVEPlayerCorporation.objects.filter(alliance=allobj).exclude(id__in=members).update(alliance=None)

            # Import any corps missing from DB
            importlist = set(members) - set(EVEPlayerCorporation.objects.filter(id__in=members).values_list('id', flat=True))
            for id in importlist:
                import_corp_details.delay(id)
    else:
        # We got a error, retry
        import_alliance_details.retry()