diff --git a/allianceauth/authentication/templates/authentication/dashboard.html b/allianceauth/authentication/templates/authentication/dashboard.html index a4b916a0..8140a78f 100644 --- a/allianceauth/authentication/templates/authentication/dashboard.html +++ b/allianceauth/authentication/templates/authentication/dashboard.html @@ -20,8 +20,8 @@
+ |
||||||||||||||
![]() |
+ |
|||||||||||
![]() |
+ |
|||||||||
-
![]() |
{{ alt.character_name }} | diff --git a/allianceauth/corputils/tests.py b/allianceauth/corputils/tests.py index de49f06f..e4e1b75f 100644 --- a/allianceauth/corputils/tests.py +++ b/allianceauth/corputils/tests.py @@ -205,13 +205,13 @@ class CorpStatsPropertiesTestCase(TestCase): AuthUtils.connect_signals() def test_logos(self): - self.assertEqual(self.corpstats.corp_logo(size=128), 'https://image.eveonline.com/Corporation/2_128.png') - self.assertEqual(self.corpstats.alliance_logo(size=128), 'https://image.eveonline.com/Alliance/1_128.png') + self.assertEqual(self.corpstats.corp_logo(size=128), 'https://images.evetech.net/corporations/2/logo?size=128') + self.assertEqual(self.corpstats.alliance_logo(size=128), 'https://images.evetech.net/alliances/1/logo?size=128') alliance = EveAllianceInfo.objects.create(alliance_name='test alliance', alliance_id='3', alliance_ticker='TEST', executor_corp_id='2') self.corp.alliance = alliance self.corp.save() - self.assertEqual(self.corpstats.alliance_logo(size=128), 'https://image.eveonline.com/Alliance/3_128.png') + self.assertEqual(self.corpstats.alliance_logo(size=128), 'https://images.evetech.net/alliances/3/logo?size=128') alliance.delete() @@ -273,5 +273,7 @@ class CorpMemberTestCase(TestCase): AuthUtils.connect_signals() def test_portrait_url(self): - self.assertEquals(self.member.portrait_url(size=32), 'https://image.eveonline.com/Character/2_32.jpg') + self.assertEquals(self.member.portrait_url(size=32), 'https://images.evetech.net/characters/2/portrait?size=32') self.assertEquals(self.member.portrait_url(size=32), self.member.portrait_url_32) + self.assertEquals(self.member.portrait_url(size=64), self.member.portrait_url_64) + self.assertEquals(self.member.portrait_url(size=128), self.member.portrait_url_128) diff --git a/allianceauth/eveonline/models.py b/allianceauth/eveonline/models.py index 2edbc5c4..a2dc447e 100644 --- a/allianceauth/eveonline/models.py +++ b/allianceauth/eveonline/models.py @@ -7,6 +7,90 @@ from .managers import EveAllianceManager, EveAllianceProviderManager from . import providers +EVE_IMAGE_SERVER_URL = 'https://images.evetech.net' + + +def _eve_entity_image_url( + category: str, + id: int, + size: int = 32, + variant: str = None, + tenant: str = None, +) -> str: + """returns image URL for an Eve Online ID. + Supported categories: `alliance`, `corporation`, `character` + + Arguments: + - category: category of the ID + - id: Eve ID of the entity + - size: (optional) render size of the image.must be between 32 (default) and 1024 + - variant: (optional) image variant for category. currently not relevant. + - tentant: (optional) Eve Server, either `tranquility`(default) or `singularity` + + Returns: + - URL string for the requested image on the Eve image server + + Exceptions: + - Throws ValueError on invalid input + """ + + # input validations + categories = { + 'alliance': { + 'endpoint': 'alliances', + 'variants': [ + 'logo' + ] + }, + 'corporation': { + 'endpoint': 'corporations', + 'variants': [ + 'logo' + ] + }, + 'character': { + 'endpoint': 'characters', + 'variants': [ + 'portrait' + ] + } + } + tenants = ['tranquility', 'singularity'] + + if size < 32 or size > 1024 or (size & (size - 1) != 0): + raise ValueError('Invalid size: {}'.format(size)) + + if category not in categories: + raise ValueError('Invalid category {}'.format(category)) + else: + endpoint = categories[category]['endpoint'] + + if variant: + if variant not in categories[category]['variants']: + raise ValueError('Invalid variant {} for category {}'.format( + variant, + category + )) + else: + variant = categories[category]['variants'][0] + + if tenant and tenant not in tenants: + raise ValueError('Invalid tentant {}'.format(tenant)) + + # compose result URL + result = '{}/{}/{}/{}?size={}'.format( + EVE_IMAGE_SERVER_URL, + endpoint, + id, + variant, + size + ) + if tenant: + result += '&tenant={}'.format(tenant) + + return result + + class EveAllianceInfo(models.Model): alliance_id = models.CharField(max_length=254, unique=True) alliance_name = models.CharField(max_length=254, unique=True) @@ -35,14 +119,34 @@ class EveAllianceInfo(models.Model): def __str__(self): return self.alliance_name - def logo_url(self, size=32): - return "https://image.eveonline.com/Alliance/%s_%s.png" % (self.alliance_id, size) + @staticmethod + def generic_logo_url(alliance_id: int, size: int = 32) -> str: + """image URL for the given alliance ID""" + return _eve_entity_image_url('alliance', alliance_id, size) + + def logo_url(self, size:int = 32) -> str: + """image URL of this alliance""" + return self.generic_logo_url(self.alliance_id, size) - def __getattr__(self, item): - if item.startswith('logo_url_'): - size = item.strip('logo_url_') - return self.logo_url(size) - return self.__getattribute__(item) + @property + def logo_url_32(self) -> str: + """image URL for this alliance""" + return self.logo_url(32) + + @property + def logo_url_64(self) -> str: + """image URL for this alliance""" + return self.logo_url(64) + + @property + def logo_url_128(self) -> str: + """image URL for this alliance""" + return self.logo_url(128) + + @property + def logo_url_256(self) -> str: + """image URL for this alliance""" + return self.logo_url(256) class EveCorporationInfo(models.Model): @@ -69,14 +173,34 @@ class EveCorporationInfo(models.Model): def __str__(self): return self.corporation_name - def logo_url(self, size=32): - return "https://image.eveonline.com/Corporation/%s_%s.png" % (self.corporation_id, size) + @staticmethod + def generic_logo_url(corporation_id: int, size: int = 32) -> str: + """image URL for the given corporation ID""" + return _eve_entity_image_url('corporation', corporation_id, size) - def __getattr__(self, item): - if item.startswith('logo_url_'): - size = item.strip('logo_url_') - return self.logo_url(size) - return self.__getattribute__(item) + def logo_url(self, size:int = 32) -> str: + """image URL for this corporation""" + return self.generic_logo_url(self.corporation_id, size) + + @property + def logo_url_32(self) -> str: + """image URL for this corporation""" + return self.logo_url(32) + + @property + def logo_url_64(self) -> str: + """image URL for this corporation""" + return self.logo_url(64) + + @property + def logo_url_128(self) -> str: + """image URL for this corporation""" + return self.logo_url(128) + + @property + def logo_url_256(self) -> str: + """image URL for this corporation""" + return self.logo_url(256) class EveCharacter(models.Model): @@ -128,11 +252,82 @@ class EveCharacter(models.Model): def __str__(self): return self.character_name - def portrait_url(self, size=32): - return "https://image.eveonline.com/Character/%s_%s.jpg" % (self.character_id, size) + @staticmethod + def generic_portrait_url(character_id: int, size: int = 32) -> str: + """image URL for the given character ID""" + return _eve_entity_image_url('character', character_id, size) - def __getattr__(self, item): - if item.startswith('portrait_url_'): - size = item.strip('portrait_url_') - return self.portrait_url(size) - return self.__getattribute__(item) + def portrait_url(self, size = 32) -> str: + """image URL for this character""" + return self.generic_portrait_url(self.character_id, size) + + @property + def portrait_url_32(self) -> str: + """image URL for this character""" + return self.portrait_url(32) + + @property + def portrait_url_64(self) -> str: + """image URL for this character""" + return self.portrait_url(64) + + @property + def portrait_url_128(self) -> str: + """image URL for this character""" + return self.portrait_url(128) + + @property + def portrait_url_256(self) -> str: + """image URL for this character""" + return self.portrait_url(256) + + def corporation_logo_url(self, size = 32) -> str: + """image URL for corporation of this character""" + return EveCorporationInfo.generic_logo_url(self.corporation_id, size) + + @property + def corporation_logo_url_32(self) -> str: + """image URL for corporation of this character""" + return self.corporation_logo_url(32) + + @property + def corporation_logo_url_64(self) -> str: + """image URL for corporation of this character""" + return self.corporation_logo_url(64) + + @property + def corporation_logo_url_128(self) -> str: + """image URL for corporation of this character""" + return self.corporation_logo_url(128) + + @property + def corporation_logo_url_256(self) -> str: + """image URL for corporation of this character""" + return self.corporation_logo_url(256) + + def alliance_logo_url(self, size = 32) -> str: + """image URL for alliance of this character or empty string""" + if self.alliance_id: + return EveAllianceInfo.generic_logo_url(self.alliance_id, size) + else: + return '' + + @property + def alliance_logo_url_32(self) -> str: + """image URL for alliance of this character or empty string""" + return self.alliance_logo_url(32) + + @property + def alliance_logo_url_64(self) -> str: + """image URL for alliance of this character or empty string""" + return self.alliance_logo_url(64) + + @property + def alliance_logo_url_128(self) -> str: + """image URL for alliance of this character or empty string""" + return self.alliance_logo_url(128) + + @property + def alliance_logo_url_256(self) -> str: + """image URL for alliance of this character or empty string""" + return self.alliance_logo_url(256) diff --git a/allianceauth/eveonline/tests/test_models.py b/allianceauth/eveonline/tests/test_models.py index 3471a588..3813fcab 100644 --- a/allianceauth/eveonline/tests/test_models.py +++ b/allianceauth/eveonline/tests/test_models.py @@ -1,8 +1,104 @@ +from unittest.mock import Mock, patch + from django.test import TestCase -from ..models import EveCharacter, EveCorporationInfo, EveAllianceInfo +from ..models import EveCharacter, EveCorporationInfo, \ + EveAllianceInfo, _eve_entity_image_url +from ..providers import Alliance, Corporation, Character +class EveUniverseImageUrlTestCase(TestCase): + """unit test for _eve_entity_image_url()""" + + def test_sizes(self): + self.assertEqual( + _eve_entity_image_url('character', 42), + 'https://images.evetech.net/characters/42/portrait?size=32' + ) + self.assertEqual( + _eve_entity_image_url('character', 42, size=32), + 'https://images.evetech.net/characters/42/portrait?size=32' + ) + self.assertEqual( + _eve_entity_image_url('character', 42, size=64), + 'https://images.evetech.net/characters/42/portrait?size=64' + ) + self.assertEqual( + _eve_entity_image_url('character', 42, size=128), + 'https://images.evetech.net/characters/42/portrait?size=128' + ) + self.assertEqual( + _eve_entity_image_url('character', 42, size=256), + 'https://images.evetech.net/characters/42/portrait?size=256' + ) + self.assertEqual( + _eve_entity_image_url('character', 42, size=512), + 'https://images.evetech.net/characters/42/portrait?size=512' + ) + self.assertEqual( + _eve_entity_image_url('character', 42, size=1024), + 'https://images.evetech.net/characters/42/portrait?size=1024' + ) + with self.assertRaises(ValueError): + _eve_entity_image_url('corporation', 42, size=-5) + + with self.assertRaises(ValueError): + _eve_entity_image_url('corporation', 42, size=0) + + with self.assertRaises(ValueError): + _eve_entity_image_url('corporation', 42, size=31) + + with self.assertRaises(ValueError): + _eve_entity_image_url('corporation', 42, size=1025) + + with self.assertRaises(ValueError): + _eve_entity_image_url('corporation', 42, size=2048) + + + def test_variant(self): + self.assertEqual( + _eve_entity_image_url('character', 42, variant='portrait'), + 'https://images.evetech.net/characters/42/portrait?size=32' + ) + self.assertEqual( + _eve_entity_image_url('alliance', 42, variant='logo'), + 'https://images.evetech.net/alliances/42/logo?size=32' + ) + with self.assertRaises(ValueError): + _eve_entity_image_url('character', 42, variant='logo') + + + def test_alliance(self): + + self.assertEqual( + _eve_entity_image_url('alliance', 42), + 'https://images.evetech.net/alliances/42/logo?size=32' + ) + self.assertEqual( + _eve_entity_image_url('corporation', 42), + 'https://images.evetech.net/corporations/42/logo?size=32' + ) + self.assertEqual( + _eve_entity_image_url('character', 42), + 'https://images.evetech.net/characters/42/portrait?size=32' + ) + with self.assertRaises(ValueError): + _eve_entity_image_url('station', 42) + + + def test_tenants(self): + self.assertEqual( + _eve_entity_image_url('character', 42, tenant='tranquility'), + 'https://images.evetech.net/characters/42/portrait?size=32&tenant=tranquility' + ) + self.assertEqual( + _eve_entity_image_url('character', 42, tenant='singularity'), + 'https://images.evetech.net/characters/42/portrait?size=32&tenant=singularity' + ) + with self.assertRaises(ValueError): + _eve_entity_image_url('character', 42, tenant='xxx') + + class EveCharacterTestCase(TestCase): def test_corporation_prop(self): """ @@ -119,3 +215,410 @@ class EveCharacterTestCase(TestCase): ) self.assertIsNone(character.alliance) + + @patch('allianceauth.eveonline.providers.provider') + def test_update_character(self, mock_provider): + mock_provider.get_corp.return_value = Corporation( + id=2002, + name='Dummy Corp 2', + ticker='DC2', + ceo_id=1001, + members=34, + ) + + my_character = EveCharacter.objects.create( + character_id='1001', + character_name='Bruce Wayne', + corporation_id='2001', + corporation_name='Dummy Corp 1', + corporation_ticker='DC1', + alliance_id='3001', + alliance_name='Dummy Alliance 1', + ) + my_updated_character = Character( + name='Bruce X. Wayne', + corp_id=2002 + ) + my_character.update_character(my_updated_character) + self.assertEqual(my_character.character_name, 'Bruce X. Wayne') + + # todo: add test cases not yet covered, e.g. with alliance + + + def test_image_url(self): + self.assertEqual( + EveCharacter.generic_portrait_url(42), + _eve_entity_image_url('character', 42) + ) + self.assertEqual( + EveCharacter.generic_portrait_url(42, 256), + _eve_entity_image_url('character', 42, 256) + ) + + def test_portrait_urls(self): + x = EveCharacter( + character_id='42', + character_name='character.name', + corporation_id='123', + corporation_name='corporation.name', + corporation_ticker='ABC', + ) + self.assertEqual( + x.portrait_url(), + _eve_entity_image_url('character', 42) + ) + self.assertEqual( + x.portrait_url(64), + _eve_entity_image_url('character', 42, size=64) + ) + self.assertEqual( + x.portrait_url_32, + _eve_entity_image_url('character', 42, size=32) + ) + self.assertEqual( + x.portrait_url_64, + _eve_entity_image_url('character', 42, size=64) + ) + self.assertEqual( + x.portrait_url_128, + _eve_entity_image_url('character', 42, size=128) + ) + self.assertEqual( + x.portrait_url_256, + _eve_entity_image_url('character', 42, size=256) + ) + + + def test_corporation_logo_urls(self): + x = EveCharacter( + character_id='42', + character_name='character.name', + corporation_id='123', + corporation_name='corporation.name', + corporation_ticker='ABC', + ) + self.assertEqual( + x.corporation_logo_url(), + _eve_entity_image_url('corporation', 123) + ) + self.assertEqual( + x.corporation_logo_url(256), + _eve_entity_image_url('corporation', 123, size=256) + ) + self.assertEqual( + x.corporation_logo_url_32, + _eve_entity_image_url('corporation', 123, size=32) + ) + self.assertEqual( + x.corporation_logo_url_64, + _eve_entity_image_url('corporation', 123, size=64) + ) + self.assertEqual( + x.corporation_logo_url_128, + _eve_entity_image_url('corporation', 123, size=128) + ) + self.assertEqual( + x.corporation_logo_url_256, + _eve_entity_image_url('corporation', 123, size=256) + ) + + + def test_alliance_logo_urls(self): + x = EveCharacter( + character_id='42', + character_name='character.name', + corporation_id='123', + corporation_name='corporation.name', + corporation_ticker='ABC', + ) + self.assertEqual( + x.alliance_logo_url(), + '' + ) + self.assertEqual( + x.alliance_logo_url_32, + '' + ) + self.assertEqual( + x.alliance_logo_url_64, + '' + ) + self.assertEqual( + x.alliance_logo_url_128, + '' + ) + self.assertEqual( + x.alliance_logo_url_256, + '' + ) + x.alliance_id = 987 + self.assertEqual( + x.alliance_logo_url(), + _eve_entity_image_url('alliance', 987) + ) + self.assertEqual( + x.alliance_logo_url(128), + _eve_entity_image_url('alliance', 987, size=128) + ) + self.assertEqual( + x.alliance_logo_url_32, + _eve_entity_image_url('alliance', 987, size=32) + ) + self.assertEqual( + x.alliance_logo_url_64, + _eve_entity_image_url('alliance', 987, size=64) + ) + self.assertEqual( + x.alliance_logo_url_128, + _eve_entity_image_url('alliance', 987, size=128) + ) + self.assertEqual( + x.alliance_logo_url_256, + _eve_entity_image_url('alliance', 987, size=256) + ) + + +class EveAllianceTestCase(TestCase): + + def test_str(self): + my_alliance = EveAllianceInfo( + alliance_id=3001, + alliance_name='Dummy Alliance 1', + alliance_ticker='DA1', + executor_corp_id=2001 + ) + self.assertEqual(str(my_alliance), 'Dummy Alliance 1') + + @patch( + 'allianceauth.eveonline.models.EveCorporationInfo.objects.create_corporation' + ) + def test_populate_alliance(self, mock_create_corporation): + + def create_corp(corp_id): + if corp_id == 2002: + EveCorporationInfo.objects.create( + corporation_id=2002, + corporation_name='Dummy Corporation 2', + corporation_ticker='DC2', + member_count=87, + ) + else: + raise ValueError() + + mock_EveAllianceProviderManager = Mock() + mock_EveAllianceProviderManager.get_alliance.return_value = \ + Alliance( + id=3001, + name='Dummy Alliance 1', + corp_ids=[2001, 2002] + ) + mock_create_corporation.side_effect = create_corp + + EveCorporationInfo.objects.create( + corporation_id=2001, + corporation_name='Dummy Corporation 1', + corporation_ticker='DC1', + member_count=42, + ) + + my_alliance = EveAllianceInfo( + alliance_id=3001, + alliance_name='Dummy Alliance 1', + alliance_ticker='DA1', + executor_corp_id=2001 + ) + my_alliance.provider = mock_EveAllianceProviderManager + my_alliance.save() + my_alliance.populate_alliance() + + for corporation in EveCorporationInfo.objects\ + .filter(corporation_id__in=[2001, 2002] + ): + self.assertEqual(corporation.alliance, my_alliance) + + def test_update_alliance_with_object(self): + my_alliance = EveAllianceInfo.objects.create( + alliance_id=3001, + alliance_name='Dummy Alliance 1', + alliance_ticker='DA1', + executor_corp_id=2001 + ) + updated_alliance = Alliance( + id=3002, + name='Dummy Alliance 2', + corp_ids=[2004], + executor_corp_id=2004 + ) + my_alliance.update_alliance(updated_alliance) + my_alliance.refresh_from_db() + self.assertEqual(int(my_alliance.executor_corp_id), 2004) + + # potential bug + # update_alliance() is only updateting executor_corp_id when object is given + + + def test_update_alliance_wo_object(self): + mock_EveAllianceProviderManager = Mock() + mock_EveAllianceProviderManager.get_alliance.return_value = \ + Alliance( + id=3002, + name='Dummy Alliance 2', + corp_ids=[2004], + executor_corp_id=2004 + ) + + my_alliance = EveAllianceInfo.objects.create( + alliance_id=3001, + alliance_name='Dummy Alliance 1', + alliance_ticker='DA1', + executor_corp_id=2001 + ) + my_alliance.provider = mock_EveAllianceProviderManager + my_alliance.save() + updated_alliance = Alliance( + name='Dummy Alliance 2', + corp_ids=[2004], + executor_corp_id=2004 + ) + my_alliance.update_alliance() + my_alliance.refresh_from_db() + self.assertEqual(int(my_alliance.executor_corp_id), 2004) + + # potential bug + # update_alliance() is only updateting executor_corp_id nothing else ??? + + + def test_image_url(self): + self.assertEqual( + EveAllianceInfo.generic_logo_url(42), + _eve_entity_image_url('alliance', 42) + ) + self.assertEqual( + EveAllianceInfo.generic_logo_url(42, 256), + _eve_entity_image_url('alliance', 42, 256) + ) + + def test_logo_url(self): + x = EveAllianceInfo( + alliance_id='42', + alliance_name='alliance.name', + alliance_ticker='ABC', + executor_corp_id='123' + ) + self.assertEqual( + x.logo_url(), + 'https://images.evetech.net/alliances/42/logo?size=32' + ) + self.assertEqual( + x.logo_url(64), + 'https://images.evetech.net/alliances/42/logo?size=64' + ) + self.assertEqual( + x.logo_url_32, + 'https://images.evetech.net/alliances/42/logo?size=32' + ) + self.assertEqual( + x.logo_url_64, + 'https://images.evetech.net/alliances/42/logo?size=64' + ) + self.assertEqual( + x.logo_url_128, + 'https://images.evetech.net/alliances/42/logo?size=128' + ) + self.assertEqual( + x.logo_url_256, + 'https://images.evetech.net/alliances/42/logo?size=256' + ) + + +class EveCorporationTestCase(TestCase): + + def setUp(self): + my_alliance = EveAllianceInfo.objects.create( + alliance_id=3001, + alliance_name='Dummy Alliance 1', + alliance_ticker='DA1', + executor_corp_id=2001 + ) + self.my_corp = EveCorporationInfo( + corporation_id=2001, + corporation_name='Dummy Corporation 1', + corporation_ticker='DC1', + member_count=42, + alliance=my_alliance + ) + + def test_str(self): + self.assertEqual(str(self.my_corp), 'Dummy Corporation 1') + + def test_update_corporation_from_object_w_alliance(self): + updated_corp = Corporation( + members=87 + ) + self.my_corp.update_corporation(updated_corp) + self.assertEqual(self.my_corp.member_count, 87) + + # potential bug + # update_corporation updates member_count only + + def test_update_corporation_no_object_w_alliance(self): + mock_provider = Mock() + mock_provider.get_corporation.return_value = Corporation( + members=87 + ) + self.my_corp.provider = mock_provider + + self.my_corp.update_corporation() + self.assertEqual(self.my_corp.member_count, 87) + + def test_update_corporation_from_object_wo_alliance(self): + my_corp2 = EveCorporationInfo( + corporation_id=2011, + corporation_name='Dummy Corporation 11', + corporation_ticker='DC11', + member_count=6 + ) + updated_corp = Corporation( + members=8 + ) + my_corp2.update_corporation(updated_corp) + self.assertEqual(my_corp2.member_count, 8) + self.assertIsNone(my_corp2.alliance) + + + def test_image_url(self): + self.assertEqual( + EveCorporationInfo.generic_logo_url(42), + _eve_entity_image_url('corporation', 42) + ) + self.assertEqual( + EveCorporationInfo.generic_logo_url(42, 256), + _eve_entity_image_url('corporation', 42, 256) + ) + + def test_logo_url(self): + self.assertEqual( + self.my_corp.logo_url(), + 'https://images.evetech.net/corporations/2001/logo?size=32' + ) + self.assertEqual( + self.my_corp.logo_url(64), + 'https://images.evetech.net/corporations/2001/logo?size=64' + ) + self.assertEqual( + self.my_corp.logo_url_32, + 'https://images.evetech.net/corporations/2001/logo?size=32' + ) + self.assertEqual( + self.my_corp.logo_url_64, + 'https://images.evetech.net/corporations/2001/logo?size=64' + ) + self.assertEqual( + self.my_corp.logo_url_128, + 'https://images.evetech.net/corporations/2001/logo?size=128' + ) + self.assertEqual( + self.my_corp.logo_url_256, + 'https://images.evetech.net/corporations/2001/logo?size=256' + ) + diff --git a/allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html b/allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html index e6e88e79..c4f97f83 100644 --- a/allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html +++ b/allianceauth/fleetactivitytracking/templates/fleetactivitytracking/characternotexisting.html @@ -12,7 +12,7 @@|||||||||
- ![]() |
{{ memberStat.mainchar.character_name }} | {{ memberStat.n_chars }} | diff --git a/allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html b/allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html index 2d282183..df86d306 100644 --- a/allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html +++ b/allianceauth/fleetactivitytracking/templates/fleetactivitytracking/fatlinkstatisticsview.html @@ -30,7 +30,7 @@ {% for corpStat in fatStats %}||||||||
- ![]() |
[{{ corpStat.corp.corporation_ticker }}] | {{ corpStat.corp.corporation_name }} | diff --git a/allianceauth/fleetactivitytracking/views.py b/allianceauth/fleetactivitytracking/views.py index 84160c6f..a8c9b8bf 100644 --- a/allianceauth/fleetactivitytracking/views.py +++ b/allianceauth/fleetactivitytracking/views.py @@ -287,8 +287,13 @@ def click_fatlink_view(request, token, fat_hash=None): err_messages.append(message[0]) messages.error(request, ' '.join(err_messages)) else: - context = {'character_id': token.character_id, - 'character_name': token.character_name} + context = { + 'character_id': token.character_id, + 'character_name': token.character_name, + 'character_portrait_url': EveCharacter.generic_portrait_url( + token.character_id, 128 + ), + } return render(request, 'fleetactivitytracking/characternotexisting.html', context=context) else: messages.error(request, _('FAT link has expired.')) diff --git a/allianceauth/hrapplications/templates/hrapplications/view.html b/allianceauth/hrapplications/templates/hrapplications/view.html index c0de5e7b..b6e6461b 100644 --- a/allianceauth/hrapplications/templates/hrapplications/view.html +++ b/allianceauth/hrapplications/templates/hrapplications/view.html @@ -50,7 +50,7 @@||||||||
![]() |
{{ char.character_name }} | {{ char.corporation_name }} | diff --git a/allianceauth/services/modules/discord/manager.py b/allianceauth/services/modules/discord/manager.py index 6fe7a7d4..8c87a565 100644 --- a/allianceauth/services/modules/discord/manager.py +++ b/allianceauth/services/modules/discord/manager.py @@ -12,7 +12,6 @@ from hashlib import md5 logger = logging.getLogger(__name__) DISCORD_URL = "https://discordapp.com/api" -EVE_IMAGE_SERVER = "https://image.eveonline.com" AUTH_URL = "https://discordapp.com/api/oauth2/authorize" TOKEN_URL = "https://discordapp.com/api/oauth2/token" diff --git a/allianceauth/services/modules/discourse/views.py b/allianceauth/services/modules/discourse/views.py index 270ce9c0..d85e749d 100644 --- a/allianceauth/services/modules/discourse/views.py +++ b/allianceauth/services/modules/discourse/views.py @@ -83,7 +83,7 @@ def discourse_sso(request): } if main_char: - params['avatar_url'] = 'https://image.eveonline.com/Character/%s_256.jpg' % main_char.character_id + params['avatar_url'] = main_char.portrait_url(256) return_payload = base64.encodestring(urlencode(params).encode('utf-8')) h = hmac.new(key, return_payload, digestmod=hashlib.sha256) diff --git a/allianceauth/services/modules/phpbb3/manager.py b/allianceauth/services/modules/phpbb3/manager.py index 0df4f299..5d6b2bed 100755 --- a/allianceauth/services/modules/phpbb3/manager.py +++ b/allianceauth/services/modules/phpbb3/manager.py @@ -6,6 +6,7 @@ from datetime import datetime from passlib.apps import phpbb3_context from django.db import connections +from allianceauth.eveonline.models import EveCharacter import logging @@ -58,7 +59,7 @@ class Phpbb3Manager: @staticmethod def __add_avatar(username, characterid): logger.debug("Adding EVE character id %s portrait as phpbb avater for user %s" % (characterid, username)) - avatar_url = "https://image.eveonline.com/Character/" + characterid + "_64.jpg" + avatar_url = EveCharacter.generic_portrait_url(characterid, 64) cursor = connections['phpbb3'].cursor() userid = Phpbb3Manager.__get_user_id(username) cursor.execute(Phpbb3Manager.SQL_ADD_USER_AVATAR, [avatar_url, userid]) diff --git a/allianceauth/services/modules/smf/manager.py b/allianceauth/services/modules/smf/manager.py index 194c2806..72d872b9 100644 --- a/allianceauth/services/modules/smf/manager.py +++ b/allianceauth/services/modules/smf/manager.py @@ -8,6 +8,7 @@ import re from django.db import connections from django.conf import settings +from allianceauth.eveonline.models import EveCharacter logger = logging.getLogger(__name__) @@ -101,8 +102,8 @@ class SmfManager: @classmethod def add_avatar(cls, member_name, characterid): - logger.debug("Adding EVE character id %s portrait as smf avatar for user %s" % (characterid, member_name)) - avatar_url = "https://image.eveonline.com/Character/" + characterid + "_64.jpg" + logger.debug("Adding EVE character id %s portrait as smf avatar for user %s" % (characterid, member_name)) + avatar_url = EveCharacter.generic_portrait_url(characterid, 64) cursor = connections['smf'].cursor() id_member = cls.get_user_id(member_name) cursor.execute(cls.SQL_ADD_USER_AVATAR, [avatar_url, id_member])