mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-14 02:56:24 +01:00
Improve image tags to also work with eveonline objects, use new tags in group managenet, optimer, timerboard
This commit is contained in:
17
allianceauth/eveonline/evelinks/__init__.py
Normal file
17
allianceauth/eveonline/evelinks/__init__.py
Normal 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"
|
||||
52
allianceauth/eveonline/evelinks/dotlan.py
Normal file
52
allianceauth/eveonline/evelinks/dotlan.py
Normal 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)
|
||||
44
allianceauth/eveonline/evelinks/evewho.py
Normal file
44
allianceauth/eveonline/evelinks/evewho.py
Normal 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)
|
||||
0
allianceauth/eveonline/evelinks/tests/__init__.py
Normal file
0
allianceauth/eveonline/evelinks/tests/__init__.py
Normal file
92
allianceauth/eveonline/evelinks/tests/test_evelinks.py
Normal file
92
allianceauth/eveonline/evelinks/tests/test_evelinks.py
Normal 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/'
|
||||
)
|
||||
|
||||
334
allianceauth/eveonline/evelinks/tests/test_templatetags.py
Normal file
334
allianceauth/eveonline/evelinks/tests/test_templatetags.py
Normal 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),
|
||||
''
|
||||
)
|
||||
|
||||
57
allianceauth/eveonline/evelinks/zkillboard.py
Normal file
57
allianceauth/eveonline/evelinks/zkillboard.py
Normal 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)
|
||||
Reference in New Issue
Block a user