skin_license.py (4116B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\cosmetics\client\ships\skins\live_data\skin_license.py 2 import datetime 3 from cosmetics.client.shipSkinDataSvc import get_ship_skin_data_svc 4 from cosmetics.client.ships.skins.live_data.skin_design import SkinDesign 5 from player_messaging.client.ui_message import message_player 6 from eveProto.generated.eve_public.cosmetic.ship.skin.thirdparty.license.license_pb2 import Attributes as LicenseAttributes 7 from google.protobuf.timestamp_pb2 import Timestamp 8 from localization import GetByLabel 9 from publicGateway.grpc.exceptions import GenericException 10 from stackless_response_router.exceptions import TimeoutException 11 12 class SkinLicense(object): 13 14 def __init__(self, owner_character_id, skin_hex, activated, nb_unactivated, nb_escrowed, acquired_time): 15 self._owner_character_id = owner_character_id 16 self._skin_hex = skin_hex 17 self._activated = activated 18 self._nb_unactivated = nb_unactivated 19 self._nb_escrowed = nb_escrowed 20 self._acquired_time = acquired_time 21 self._skin_design = None 22 23 @property 24 def owner_character_id(self): 25 return self._owner_character_id 26 27 @property 28 def skin_hex(self): 29 return self._skin_hex 30 31 @property 32 def skin_design(self): 33 return self._skin_design 34 35 @property 36 def activated(self): 37 return self._activated 38 39 @activated.setter 40 def activated(self, value): 41 self._activated = value 42 43 @property 44 def nb_unactivated(self): 45 return self._nb_unactivated 46 47 @property 48 def nb_escrowed(self): 49 return self._nb_escrowed 50 51 @property 52 def acquired_time(self): 53 return self._acquired_time 54 55 @property 56 def name(self): 57 return self.skin_design.name 58 59 @property 60 def tier_level(self): 61 return self.skin_design.tier_level 62 63 def load_skin_design(self): 64 if self._skin_design is None: 65 try: 66 self._skin_design = get_ship_skin_data_svc().get_skin_data(self._skin_hex) 67 except (GenericException, TimeoutException): 68 message_player(GetByLabel('UI/Common/CannotConnectToServer')) 69 self._skin_design = None 70 71 def __eq__(self, other): 72 if other is None: 73 return False 74 return self.owner_character_id == other.owner_character_id and self.skin_design == other.skin_design and self.activated == other.activated and self.nb_unactivated == other.nb_unactivated and self.nb_escrowed == other.nb_escrowed and self.acquired_time == other.acquired_time 75 76 def __ne__(self, other): 77 return not self.__eq__(other) 78 79 def __str__(self): 80 result = 'SKIN License from skin design %s\n' % self.skin_hex 81 result += 'activated: %s\n' % self.activated 82 result += 'nb_unactivated: %s\n' % self.nb_unactivated 83 result += 'nb_escrowed: %s\n' % self.nb_escrowed 84 result += 'acquired_time: %s\n' % self.acquired_time 85 return result 86 87 def copy_from_other(self, other): 88 self._owner_character_id = other.owner_character_id 89 self._skin_design = SkinDesign.copy_from_other(other.skin_design) 90 self._activated = other.activated 91 self._nb_unactivated = other.nb_unactivated 92 self._nb_escrowed = other.nb_escrowed 93 self._acquired_time = other.acquired_time 94 95 @staticmethod 96 def build_from_proto(payload, skin_hex, owner_character_id): 97 license = SkinLicense(owner_character_id=owner_character_id, skin_hex=skin_hex, activated=payload.activated, nb_unactivated=payload.unactivated, nb_escrowed=payload.escrowed, acquired_time=datetime.datetime.fromtimestamp(payload.first_acquired.seconds)) 98 return license 99 100 @staticmethod 101 def build_proto_from_license(license): 102 first_acquired = Timestamp() 103 first_acquired.FromDatetime(license.acquired_time) 104 payload = LicenseAttributes(activated=license.activated, unactivated=license.nb_unactivated, escrowed=license.nb_escrowed, first_acquired=first_acquired) 105 return payload