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__)