mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 20:40:17 +02:00
Merge branch 'issue-1172' into 'master'
Fix issue #1172: Replace deprecated eve image URLs in apps and services Closes #1172 See merge request allianceauth/allianceauth!1145
This commit is contained in:
commit
a5fe61eb15
@ -20,8 +20,8 @@
|
||||
<div class="col-lg-4 col-sm-2">
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td class="text-center"><img class="ra-avatar"
|
||||
src="{{ main.portrait_url_128 }}">
|
||||
<td class="text-center">
|
||||
<img class="ra-avatar"src="{{ main.portrait_url_128 }}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -32,8 +32,8 @@
|
||||
<div class="col-lg-4 col-sm-2">
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td class="text-center"><img class="ra-avatar"
|
||||
src="https://image.eveonline.com/Corporation/{{ main.corporation_id }}_128.png">
|
||||
<td class="text-center">
|
||||
<img class="ra-avatar"src="{{ main.corporation_logo_url_128 }}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -45,8 +45,8 @@
|
||||
{% if main.alliance_id %}
|
||||
<table class="table">
|
||||
<tr>
|
||||
<td class="text-center"><img class="ra-avatar"
|
||||
src="https://image.eveonline.com/Alliance/{{ main.alliance_id }}_128.png">
|
||||
<td class="text-center">
|
||||
<img class="ra-avatar"src="{{ main.alliance_logo_url_128 }}">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -6,7 +6,8 @@ from bravado.exception import HTTPForbidden
|
||||
from django.db import models
|
||||
from esi.errors import TokenError
|
||||
from esi.models import Token
|
||||
from allianceauth.eveonline.models import EveCorporationInfo, EveCharacter
|
||||
from allianceauth.eveonline.models import EveCorporationInfo, EveCharacter,\
|
||||
EveAllianceInfo
|
||||
from allianceauth.notifications import notify
|
||||
|
||||
from allianceauth.corputils.managers import CorpStatsManager
|
||||
@ -137,13 +138,13 @@ class CorpStats(models.Model):
|
||||
return self.token.user == user or self.visible_to(user)
|
||||
|
||||
def corp_logo(self, size=128):
|
||||
return "https://image.eveonline.com/Corporation/%s_%s.png" % (self.corp.corporation_id, size)
|
||||
return self.corp.logo_url(size)
|
||||
|
||||
def alliance_logo(self, size=128):
|
||||
if self.corp.alliance:
|
||||
return "https://image.eveonline.com/Alliance/%s_%s.png" % (self.corp.alliance.alliance_id, size)
|
||||
return self.corp.alliance.logo_url(size)
|
||||
else:
|
||||
return "https://image.eveonline.com/Alliance/1_%s.png" % size
|
||||
return EveAllianceInfo.generic_logo_url(1, size)
|
||||
|
||||
|
||||
class CorpMember(models.Model):
|
||||
@ -185,10 +186,16 @@ class CorpMember(models.Model):
|
||||
return CharacterOwnership.objects.filter(character__character_id=self.character_id).exists()
|
||||
|
||||
def portrait_url(self, size=32):
|
||||
return "https://image.eveonline.com/Character/%s_%s.jpg" % (self.character_id, size)
|
||||
return EveCharacter.generic_portrait_url(self.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)
|
||||
@property
|
||||
def portrait_url_32(self):
|
||||
return self.portrait_url(32)
|
||||
|
||||
@property
|
||||
def portrait_url_64(self):
|
||||
return self.portrait_url(64)
|
||||
|
||||
@property
|
||||
def portrait_url_128(self):
|
||||
return self.portrait_url(128)
|
||||
|
@ -80,7 +80,7 @@
|
||||
<tr>
|
||||
<td class="text-center" style="width:5%">
|
||||
<div class="thumbnail" style="border: 0 none; box-shadow: none; background: transparent;">
|
||||
<img src="https://image.eveonline.com/Character/{{ alt.character_id }}_32.jpg" class="img-circle">
|
||||
<img src="{{ alt.portrait_url_32 }}" class="img-circle">
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-center" style="width:30%">{{ alt.character_name }}</td>
|
||||
|
@ -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)
|
||||
|
@ -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 __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 of this alliance"""
|
||||
return self.generic_logo_url(self.alliance_id, size)
|
||||
|
||||
@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)
|
||||
|
@ -1,6 +1,102 @@
|
||||
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):
|
||||
@ -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'
|
||||
)
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
<div class="panel-heading">{{ character_name }}</div>
|
||||
<div class="panel-body">
|
||||
<div class="col-lg-2 col-sm-2">
|
||||
<img class="ra-avatar img-responsive" src="https://image.eveonline.com/Character/{{ character_id }}_128.jpg">
|
||||
<img class="ra-avatar img-responsive" src="{{ character_portrait_url }}">
|
||||
</div>
|
||||
<div class="col-lg-10 col-sm-2">
|
||||
<div class="alert alert-danger" role="alert">{% trans "Character not registered!" %}</div>
|
||||
|
@ -29,7 +29,7 @@
|
||||
{% for memberStat in fatStats %}
|
||||
<tr>
|
||||
<td>
|
||||
<img src="https://image.eveonline.com/Character/{{ memberStat.mainchid }}_32.jpg" class="ra-avatar img-responsive">
|
||||
<img src="{{ memberStat.mainchar.portrait_url_32 }}" class="ra-avatar img-responsive">
|
||||
</td>
|
||||
<td class="text-center">{{ memberStat.mainchar.character_name }}</td>
|
||||
<td class="text-center">{{ memberStat.n_chars }}</td>
|
||||
|
@ -30,7 +30,7 @@
|
||||
{% for corpStat in fatStats %}
|
||||
<tr>
|
||||
<td>
|
||||
<img src="https://image.eveonline.com/Corporation/{{ corpStat.corp.corporation_id }}_32.png" class="ra-avatar img-responsive">
|
||||
<img src="{{ corpStat.corp.logo_url_32 }}" class="ra-avatar img-responsive">
|
||||
</td>
|
||||
<td class="text-center"><a href="{% url 'fatlink:statistics_corp' corpStat.corp.corporation_id %}">[{{ corpStat.corp.corporation_ticker }}]</td>
|
||||
<td class="text-center">{{ corpStat.corp.corporation_name }}</td>
|
||||
|
@ -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.'))
|
||||
|
@ -50,7 +50,7 @@
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
<img class="ra-avatar img-responsive img-circle"
|
||||
src="https://image.eveonline.com/Character/{{ char.character_id }}_32.jpg">
|
||||
src="{{ char.portrait_url_32 }}">
|
||||
</td>
|
||||
<td class="text-center">{{ char.character_name }}</td>
|
||||
<td class="text-center">{{ char.corporation_name }}</td>
|
||||
|
@ -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"
|
||||
|
@ -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)
|
||||
|
@ -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])
|
||||
|
@ -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__)
|
||||
|
||||
@ -102,7 +103,7 @@ 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"
|
||||
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])
|
||||
|
Loading…
x
Reference in New Issue
Block a user