NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

campaign.py (9183B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\campaigns\client\v2\data_model\campaign.py
      2 from __future__ import absolute_import, division, print_function
      3 from campaigns.client.v2.data_model.campaign_version import CampaignVersion
      4 from campaigns.client.v2.data_model.lifecycle import LifecycleState, LifecycleTriggers, LifecycleSideEffects
      5 from campaigns.client.v2.data_model.objective import ObjectiveID, UpcomingObjective
      6 from campaigns.client.v2.data_model.participation import ParticipationConfiguration
      7 from campaigns.client.v2.data_model.track import TrackDefinition, TrackID
      8 from campaigns.client.v2.data_model.ui_definition import UIDefinition
      9 from eveProto.generated.eve_public.campaign.campaign_pb2 import Identifier, Namespace
     10 from uuid import UUID
     11 
     12 class CampaignNamespace(object):
     13 
     14     def __init__(self, name):
     15         self._name = name
     16 
     17     @property
     18     def name(self):
     19         return self._name
     20 
     21     @classmethod
     22     def from_proto(cls, proto):
     23         return cls(proto.namespace)
     24 
     25     def to_proto(self):
     26         return Namespace(namespace=self._name)
     27 
     28     def __eq__(self, other):
     29         if not isinstance(other, CampaignNamespace):
     30             raise NotImplementedError
     31         return self._name == other._name
     32 
     33     def __ne__(self, other):
     34         return not self.__eq__(other)
     35 
     36     def __hash__(self):
     37         return hash(self._name)
     38 
     39     def __repr__(self):
     40         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
     41 
     42 
     43 class CampaignID(object):
     44 
     45     def __init__(self, campaign_uuid):
     46         self._campaign_uuid = campaign_uuid
     47 
     48     @property
     49     def uuid(self):
     50         return self._campaign_uuid
     51 
     52     @classmethod
     53     def from_proto(cls, proto):
     54         return cls(UUID(bytes=proto.uuid))
     55 
     56     def to_proto(self):
     57         return Identifier(uuid=self._campaign_uuid.bytes)
     58 
     59     def __eq__(self, other):
     60         if not isinstance(other, CampaignID):
     61             raise NotImplementedError
     62         return self._campaign_uuid == other._campaign_uuid
     63 
     64     def __ne__(self, other):
     65         return not self.__eq__(other)
     66 
     67     def __hash__(self):
     68         return hash(self._campaign_uuid)
     69 
     70     def __repr__(self):
     71         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
     72 
     73 
     74 class UpcomingCampaign(object):
     75 
     76     def __init__(self, namespace, definition_name, ui_definition, scheduled_start_datetime):
     77         self._namespace = namespace
     78         self._definition_name = definition_name
     79         self._ui_definition = ui_definition
     80         self._scheduled_start_datetime = scheduled_start_datetime
     81 
     82     @classmethod
     83     def from_proto(cls, namespace, proto):
     84         return cls(namespace=namespace, definition_name=proto.definition_name, ui_definition=UIDefinition.from_proto(proto.ui), scheduled_start_datetime=proto.scheduled_start_time.ToDatetime())
     85 
     86     @property
     87     def namespace(self):
     88         return self._namespace
     89 
     90     @property
     91     def definition_name(self):
     92         return self._definition_name
     93 
     94     @property
     95     def ui_definition(self):
     96         return self._ui_definition
     97 
     98     @property
     99     def scheduled_start_datetime(self):
    100         return self._scheduled_start_datetime
    101 
    102     def __eq__(self, other):
    103         if not isinstance(other, UpcomingCampaign):
    104             raise NotImplementedError
    105         return self._namespace == other._namespace and self._definition_name == other._definition_name and self._ui_definition == other._ui_definition and self._scheduled_start_datetime == other._scheduled_start_datetime
    106 
    107     def __ne__(self, other):
    108         return not self.__eq__(other)
    109 
    110     def __repr__(self):
    111         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
    112 
    113 
    114 class CampaignStatus(object):
    115 
    116     def __init__(self, campaign_id, lifecycle_state, total_contributors):
    117         self._campaign_id = campaign_id
    118         self._lifecycle_state = lifecycle_state
    119         self._total_contributors = total_contributors
    120 
    121     @property
    122     def campaign_id(self):
    123         return self._campaign_id
    124 
    125     @property
    126     def lifecycle_state(self):
    127         return self._lifecycle_state
    128 
    129     @property
    130     def total_contributors(self):
    131         return self._total_contributors
    132 
    133     @classmethod
    134     def from_proto(cls, campaign_id, lifecycle_state, stats):
    135         return CampaignStatus(campaign_id, lifecycle_state, stats.total_contributors)
    136 
    137     @classmethod
    138     def from_status_proto(cls, campaign_id, response):
    139         lifecycle_state = LifecycleState.from_campaign_proto(response.state) if response.HasField('state') else None
    140         return cls.from_proto(campaign_id, lifecycle_state, response.stats)
    141 
    142     @classmethod
    143     def from_get_proto(cls, campaign_id, response):
    144         attributes = response.attributes
    145         lifecycle_state = LifecycleState.from_campaign_proto(attributes.lifecycle_state) if attributes.HasField('lifecycle_state') else None
    146         return cls.from_proto(campaign_id, lifecycle_state, response.stats)
    147 
    148     def __eq__(self, other):
    149         if not isinstance(other, CampaignStatus):
    150             raise NotImplementedError
    151         return self.campaign_id == other.campaign_id and self.lifecycle_state == other.lifecycle_state and self.total_contributors == other.total_contributors
    152 
    153     def __ne__(self, other):
    154         return not self.__eq__(other)
    155 
    156     def __repr__(self):
    157         return '<%s %r>' % (self.__class__.__name__, self.__dict__)
    158 
    159 
    160 class CampaignDefinition(object):
    161 
    162     def __init__(self, campaign_id, version, scheduled_start_datetime, definition_name, namespace, ui_definition, participation, lifecycle_triggers, lifecycle_side_effects, tracks, objective_ids, upcoming_objectives):
    163         self._campaign_id = campaign_id
    164         self._version = version
    165         self._scheduled_start_datetime = scheduled_start_datetime
    166         self._definition_name = definition_name
    167         self._namespace = namespace
    168         self._ui_definition = ui_definition
    169         self._participation = participation
    170         self._lifecycle_triggers = lifecycle_triggers
    171         self._lifecycle_side_effects = lifecycle_side_effects
    172         self._tracks = tracks
    173         self._objective_ids = objective_ids
    174         self._upcoming_objectives = upcoming_objectives
    175 
    176     @property
    177     def campaign_id(self):
    178         return self._campaign_id
    179 
    180     @property
    181     def version(self):
    182         return self._version
    183 
    184     @property
    185     def scheduled_start_datetime(self):
    186         return self._scheduled_start_datetime
    187 
    188     @property
    189     def definition_name(self):
    190         return self._definition_name
    191 
    192     @property
    193     def namespace(self):
    194         return self._namespace
    195 
    196     @property
    197     def ui_definition(self):
    198         return self._ui_definition
    199 
    200     @property
    201     def participation(self):
    202         return self._participation
    203 
    204     @property
    205     def lifecycle_triggers(self):
    206         return self._lifecycle_triggers
    207 
    208     @property
    209     def lifecycle_side_effects(self):
    210         return self._lifecycle_side_effects
    211 
    212     @property
    213     def tracks(self):
    214         return self._tracks
    215 
    216     @property
    217     def objective_ids(self):
    218         return self._objective_ids
    219 
    220     @property
    221     def upcoming_objectives(self):
    222         return self._upcoming_objectives
    223 
    224     @classmethod
    225     def from_proto(cls, campaign_id, response):
    226         attributes = response.attributes
    227         return CampaignDefinition(campaign_id=campaign_id, version=CampaignVersion.from_proto(attributes.version) if attributes.HasField('version') else None, scheduled_start_datetime=attributes.scheduled_start_time.ToDatetime() if attributes.HasField('scheduled_start_time') else None, definition_name=attributes.definition_name, namespace=CampaignNamespace.from_proto(attributes.namespace), ui_definition=UIDefinition.from_proto(attributes.ui), participation=ParticipationConfiguration.from_proto(attributes.participation) if attributes.HasField('participation') else None, lifecycle_triggers=LifecycleTriggers.from_proto(attributes.lifecycle_triggers), lifecycle_side_effects=LifecycleSideEffects.from_proto(attributes.lifecycle_side_effects), tracks=[ TrackDefinition.from_proto(TrackID.from_proto(track.id), track.attributes) for track in response.tracks ], objective_ids=[ ObjectiveID.from_proto(objective) for objective in response.objectives ], upcoming_objectives=[ UpcomingObjective.from_proto(upcoming) for upcoming in response.upcoming_objectives ])
    228 
    229     def __eq__(self, other):
    230         if not isinstance(other, CampaignDefinition):
    231             raise NotImplementedError
    232         return self.campaign_id == other.campaign_id and self.version == other.version and self.scheduled_start_datetime == other.scheduled_start_datetime and self.definition_name == other.definition_name and self.namespace == other.namespace and self.ui_definition == other.ui_definition and self.participation == other.participation and self.lifecycle_triggers == other.lifecycle_triggers and self.lifecycle_side_effects == other.lifecycle_side_effects and self.tracks == other.tracks and self.objective_ids == other.objective_ids and self.upcoming_objectives == other.upcoming_objectives
    233 
    234     def __ne__(self, other):
    235         return not self.__eq__(other)
    236 
    237     def __repr__(self):
    238         return '<%s %r>' % (self.__class__.__name__, self.__dict__)