Improve image tags to also work with eveonline objects, use new tags in group managenet, optimer, timerboard

This commit is contained in:
Erik Kalkoken
2020-02-05 04:31:13 +00:00
committed by colcrunch
parent 337c4d9ce5
commit fcb66a11a3
18 changed files with 1227 additions and 151 deletions

View File

@@ -0,0 +1,17 @@
# this package generates profile URL for eve entities
# on 3rd party websites like evewho and zKillboard
#
# It contains of modules for views and templatetags for templates
# list of all eve entity categories as defined in ESI
ESI_CATEGORY_AGENT = "agent"
ESI_CATEGORY_ALLIANCE = "alliance"
ESI_CATEGORY_CHARACTER = "character"
ESI_CATEGORY_CONSTELLATION = "constellation"
ESI_CATEGORY_CORPORATION = "corporation"
ESI_CATEGORY_FACTION = "faction"
ESI_CATEGORY_INVENTORYTYPE = "inventory_type"
ESI_CATEGORY_REGION = "region"
ESI_CATEGORY_SOLARSYSTEM = "solar_system"
ESI_CATEGORY_STATION = "station"
ESI_CATEGORY_WORMHOLE = "wormhole"

View File

@@ -0,0 +1,52 @@
# this module generates profile URLs for dotlan
from urllib.parse import urljoin, quote
from . import *
BASE_URL = 'http://evemaps.dotlan.net'
def _build_url(category: str, name: str) -> str:
"""return url to profile page for an eve entity"""
if category == ESI_CATEGORY_ALLIANCE:
partial = 'alliance'
elif category == ESI_CATEGORY_CORPORATION:
partial = 'corp'
elif category == ESI_CATEGORY_REGION:
partial = 'map'
elif category == ESI_CATEGORY_SOLARSYSTEM:
partial = 'system'
else:
raise NotImplementedError(
"Not implemented yet for category:" + category
)
url = urljoin(
BASE_URL,
'{}/{}'.format(partial, quote(str(name).replace(" ", "_")))
)
return url
def alliance_url(name: str) -> str:
"""url for page about given alliance on dotlan"""
return _build_url(ESI_CATEGORY_ALLIANCE, name)
def corporation_url(name: str) -> str:
"""url for page about given corporation on dotlan"""
return _build_url(ESI_CATEGORY_CORPORATION, name)
def region_url(name: str) -> str:
"""url for page about given region on dotlan"""
return _build_url(ESI_CATEGORY_REGION, name)
def solar_system_url(name: str) -> str:
"""url for page about given solar system on dotlan"""
return _build_url(ESI_CATEGORY_SOLARSYSTEM, name)

View File

@@ -0,0 +1,44 @@
# this module generates profile URLs for evewho
from urllib.parse import urljoin, quote
from . import *
BASE_URL = 'https://evewho.com'
def _build_url(category: str, eve_id: int) -> str:
"""return url to profile page for an eve entity"""
if category == ESI_CATEGORY_ALLIANCE:
partial = 'alliance'
elif category == ESI_CATEGORY_CORPORATION:
partial = 'corporation'
elif category == ESI_CATEGORY_CHARACTER:
partial = 'character'
else:
raise NotImplementedError(
"Not implemented yet for category:" + category
)
url = urljoin(
BASE_URL,
'{}/{}'.format(partial, int(eve_id))
)
return url
def alliance_url(eve_id: int) -> str:
"""url for page about given alliance on evewho"""
return _build_url(ESI_CATEGORY_ALLIANCE, eve_id)
def character_url(eve_id: int) -> str:
"""url for page about given character on evewho"""
return _build_url(ESI_CATEGORY_CHARACTER, eve_id)
def corporation_url(eve_id: int) -> str:
"""url for page about given corporation on evewho"""
return _build_url(ESI_CATEGORY_CORPORATION, eve_id)

View File

@@ -0,0 +1,92 @@
from django.test import TestCase
from ...models import EveCharacter, EveCorporationInfo, EveAllianceInfo
from .. import dotlan, zkillboard, evewho
from ...templatetags import evelinks
class TestEveWho(TestCase):
def test_alliance_url(self):
self.assertEqual(
evewho.alliance_url(12345678),
'https://evewho.com/alliance/12345678'
)
def test_corporation_url(self):
self.assertEqual(
evewho.corporation_url(12345678),
'https://evewho.com/corporation/12345678'
)
def test_character_url(self):
self.assertEqual(
evewho.character_url(12345678),
'https://evewho.com/character/12345678'
)
class TestDotlan(TestCase):
def test_alliance_url(self):
self.assertEqual(
dotlan.alliance_url('Wayne Enterprices'),
'http://evemaps.dotlan.net/alliance/Wayne_Enterprices'
)
def test_corporation_url(self):
self.assertEqual(
dotlan.corporation_url('Wayne Technology'),
'http://evemaps.dotlan.net/corp/Wayne_Technology'
)
self.assertEqual(
dotlan.corporation_url('Crédit Agricole'),
'http://evemaps.dotlan.net/corp/Cr%C3%A9dit_Agricole'
)
def test_region_url(self):
self.assertEqual(
dotlan.region_url('Black Rise'),
'http://evemaps.dotlan.net/map/Black_Rise'
)
def test_solar_system_url(self):
self.assertEqual(
dotlan.solar_system_url('Jita'),
'http://evemaps.dotlan.net/system/Jita'
)
class TestZkillboard(TestCase):
def test_alliance_url(self):
self.assertEqual(
zkillboard.alliance_url(12345678),
'https://zkillboard.com/alliance/12345678/'
)
def test_corporation_url(self):
self.assertEqual(
zkillboard.corporation_url(12345678),
'https://zkillboard.com/corporation/12345678/'
)
def test_character_url(self):
self.assertEqual(
zkillboard.character_url(12345678),
'https://zkillboard.com/character/12345678/'
)
def test_region_url(self):
self.assertEqual(
zkillboard.region_url(12345678),
'https://zkillboard.com/region/12345678/'
)
def test_solar_system_url(self):
self.assertEqual(
zkillboard.solar_system_url(12345678),
'https://zkillboard.com/system/12345678/'
)

View File

@@ -0,0 +1,334 @@
from django.test import TestCase
from ...models import EveCharacter, EveCorporationInfo, EveAllianceInfo
from .. import dotlan, zkillboard, evewho
from ...templatetags import evelinks
class TestTemplateTags(TestCase):
def setUp(self):
self.my_character = EveCharacter.objects.create(
character_id=1001,
character_name='Bruce Wayne',
corporation_id=2001,
corporation_name='Dummy Corporation 1',
corporation_ticker='DC1',
alliance_id=3001,
alliance_name='Dummy Alliance 1',
alliance_ticker='DA1',
)
self.my_character_2 = EveCharacter.objects.create(
character_id=1002,
character_name='Peter Parker',
corporation_id=2002,
corporation_name='Dummy Corporation 2',
corporation_ticker='DC2',
)
self.my_alliance = EveAllianceInfo.objects.create(
alliance_id=3001,
alliance_name='Dummy Alliance 1',
alliance_ticker='DA1',
executor_corp_id=2001
)
self.my_corporation = EveCorporationInfo(
corporation_id=2001,
corporation_name='Dummy Corporation 1',
corporation_ticker='DC1',
member_count=42,
alliance=self.my_alliance
)
self.my_region_id = 8001
self.my_region_name = 'Southpark'
self.my_solar_system_id = 9001
self.my_solar_system_name = 'Gotham'
def test_evewho_character_url(self):
self.assertEqual(
evelinks.evewho_character_url(self.my_character),
evewho.character_url(self.my_character.character_id),
)
self.assertEqual(
evelinks.evewho_character_url(None),
''
)
self.assertEqual(
evelinks.evewho_character_url(self.my_character.character_id),
evewho.character_url(self.my_character.character_id),
)
def test_evewho_corporation_url(self):
self.assertEqual(
evelinks.evewho_corporation_url(self.my_character),
evewho.corporation_url(self.my_character.corporation_id),
)
self.assertEqual(
evelinks.evewho_corporation_url(self.my_corporation),
evewho.corporation_url(self.my_corporation.corporation_id),
)
self.assertEqual(
evelinks.evewho_corporation_url(None),
''
)
self.assertEqual(
evelinks.evewho_corporation_url(self.my_character.corporation_id),
evewho.corporation_url(self.my_character.corporation_id),
)
def test_evewho_alliance_url(self):
self.assertEqual(
evelinks.evewho_alliance_url(self.my_character),
evewho.alliance_url(self.my_character.alliance_id),
)
self.assertEqual(
evelinks.evewho_alliance_url(self.my_character_2),
'',
)
self.assertEqual(
evelinks.evewho_alliance_url(self.my_alliance),
evewho.alliance_url(self.my_alliance.alliance_id),
)
self.assertEqual(
evelinks.evewho_alliance_url(None),
''
)
self.assertEqual(
evelinks.evewho_alliance_url(self.my_character.alliance_id),
evewho.alliance_url(self.my_character.alliance_id),
)
# dotlan
def test_dotlan_corporation_url(self):
self.assertEqual(
evelinks.dotlan_corporation_url(self.my_character),
dotlan.corporation_url(self.my_character.corporation_name),
)
self.assertEqual(
evelinks.dotlan_corporation_url(self.my_corporation),
dotlan.corporation_url(self.my_corporation.corporation_name),
)
self.assertEqual(
evelinks.dotlan_corporation_url(None),
''
)
self.assertEqual(
evelinks.dotlan_corporation_url(self.my_character.corporation_name),
dotlan.corporation_url(self.my_character.corporation_name),
)
def test_dotlan_alliance_url(self):
self.assertEqual(
evelinks.dotlan_alliance_url(self.my_character),
dotlan.alliance_url(self.my_character.alliance_name),
)
self.assertEqual(
evelinks.dotlan_alliance_url(self.my_character_2),
'',
)
self.assertEqual(
evelinks.dotlan_alliance_url(self.my_alliance),
dotlan.alliance_url(self.my_alliance.alliance_name),
)
self.assertEqual(
evelinks.dotlan_alliance_url(None),
''
)
self.assertEqual(
evelinks.dotlan_alliance_url(self.my_character.alliance_name),
dotlan.alliance_url(self.my_character.alliance_name),
)
def test_dotlan_region_url(self):
self.assertEqual(
evelinks.dotlan_region_url(self.my_region_name),
dotlan.region_url(self.my_region_name),
)
self.assertEqual(
evelinks.dotlan_region_url(None),
''
)
def test_dotlan_solar_system_url(self):
self.assertEqual(
evelinks.dotlan_solar_system_url(self.my_solar_system_name),
dotlan.solar_system_url(self.my_solar_system_name),
)
self.assertEqual(
evelinks.dotlan_solar_system_url(None),
''
)
# zkillboard
def test_zkillboard_character_url(self):
self.assertEqual(
evelinks.zkillboard_character_url(self.my_character),
zkillboard.character_url(self.my_character.character_id),
)
self.assertEqual(
evelinks.zkillboard_character_url(None),
''
)
self.assertEqual(
evelinks.zkillboard_character_url(self.my_character.character_id),
zkillboard.character_url(self.my_character.character_id),
)
def test_zkillboard_corporation_url(self):
self.assertEqual(
evelinks.zkillboard_corporation_url(self.my_character),
zkillboard.corporation_url(self.my_character.corporation_id),
)
self.assertEqual(
evelinks.zkillboard_corporation_url(self.my_corporation),
zkillboard.corporation_url(self.my_corporation.corporation_id),
)
self.assertEqual(
evelinks.zkillboard_corporation_url(None),
''
)
self.assertEqual(
evelinks.zkillboard_corporation_url(self.my_character.corporation_id),
zkillboard.corporation_url(self.my_character.corporation_id),
)
def test_zkillboard_alliance_url(self):
self.assertEqual(
evelinks.zkillboard_alliance_url(self.my_character),
zkillboard.alliance_url(self.my_character.alliance_id),
)
self.assertEqual(
evelinks.zkillboard_alliance_url(self.my_character_2),
'',
)
self.assertEqual(
evelinks.zkillboard_alliance_url(self.my_alliance),
zkillboard.alliance_url(self.my_alliance.alliance_id),
)
self.assertEqual(
evelinks.zkillboard_alliance_url(None),
''
)
self.assertEqual(
evelinks.zkillboard_alliance_url(self.my_character.alliance_id),
zkillboard.alliance_url(self.my_character.alliance_id),
)
def test_zkillboard_region_url(self):
self.assertEqual(
evelinks.zkillboard_region_url(self.my_region_id),
zkillboard.region_url(self.my_region_id),
)
self.assertEqual(
evelinks.zkillboard_region_url(None),
''
)
def test_zkillboard_solar_system_url(self):
self.assertEqual(
evelinks.zkillboard_solar_system_url(self.my_solar_system_id),
zkillboard.solar_system_url(self.my_solar_system_id),
)
self.assertEqual(
evelinks.zkillboard_solar_system_url(None),
''
)
# image URLs
def test_character_portrait_url(self):
self.assertEqual(
evelinks.character_portrait_url(123),
EveCharacter.generic_portrait_url(123)
),
self.assertEqual(
evelinks.character_portrait_url(123, 128),
EveCharacter.generic_portrait_url(123, 128)
)
self.assertEqual(
evelinks.character_portrait_url(123, 99),
''
)
self.assertEqual(
evelinks.character_portrait_url(self.my_character),
self.my_character.portrait_url()
)
self.assertEqual(
evelinks.character_portrait_url(None),
''
)
def test_corporation_logo_url(self):
self.assertEqual(
evelinks.corporation_logo_url(123),
EveCorporationInfo.generic_logo_url(123)
),
self.assertEqual(
evelinks.corporation_logo_url(123, 128),
EveCorporationInfo.generic_logo_url(123, 128)
)
self.assertEqual(
evelinks.corporation_logo_url(123, 99),
''
)
self.assertEqual(
evelinks.corporation_logo_url(self.my_corporation),
self.my_corporation.logo_url()
)
self.assertEqual(
evelinks.corporation_logo_url(self.my_character),
self.my_character.corporation_logo_url()
)
self.assertEqual(
evelinks.corporation_logo_url(None),
''
)
def test_alliance_logo_url(self):
self.assertEqual(
evelinks.alliance_logo_url(123),
EveAllianceInfo.generic_logo_url(123)
),
self.assertEqual(
evelinks.alliance_logo_url(123, 128),
EveAllianceInfo.generic_logo_url(123, 128)
)
self.assertEqual(
evelinks.alliance_logo_url(123, 99),
''
)
self.assertEqual(
evelinks.alliance_logo_url(self.my_alliance),
self.my_alliance.logo_url()
)
self.assertEqual(
evelinks.alliance_logo_url(self.my_character),
self.my_character.alliance_logo_url()
)
self.assertEqual(
evelinks.alliance_logo_url(None),
''
)
self.assertEqual(
evelinks.alliance_logo_url(self.my_character_2),
''
)

View File

@@ -0,0 +1,57 @@
# this module generates profile URLs for zKillboard
from urllib.parse import urljoin, quote
from . import *
BASE_URL = 'https://zkillboard.com'
def _build_url(category: str, eve_id: int) -> str:
"""return url to profile page for an eve entity"""
if category == ESI_CATEGORY_ALLIANCE:
partial = 'alliance'
elif category == ESI_CATEGORY_CORPORATION:
partial = 'corporation'
elif category == ESI_CATEGORY_CHARACTER:
partial = 'character'
elif category == ESI_CATEGORY_REGION:
partial = 'region'
elif category == ESI_CATEGORY_SOLARSYSTEM:
partial = 'system'
else:
raise NotImplementedError(
"Not implemented yet for category:" + category
)
url = urljoin(
BASE_URL,
'{}/{}/'.format(partial, int(eve_id))
)
return url
def alliance_url(eve_id: int) -> str:
"""url for page about given alliance on zKillboard"""
return _build_url(ESI_CATEGORY_ALLIANCE, eve_id)
def character_url(eve_id: int) -> str:
"""url for page about given character on zKillboard"""
return _build_url(ESI_CATEGORY_CHARACTER, eve_id)
def corporation_url(eve_id: int) -> str:
"""url for page about given corporation on zKillboard"""
return _build_url(ESI_CATEGORY_CORPORATION, eve_id)
def region_url(eve_id: int) -> str:
"""url for page about given region on zKillboard"""
return _build_url(ESI_CATEGORY_REGION, eve_id)
def solar_system_url(eve_id: int) -> str:
return _build_url(ESI_CATEGORY_SOLARSYSTEM, eve_id)