all_cso.py (11215B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\services\alliances\all_cso.py 2 import blue 3 import localization 4 from carbon.common.script.sys.service import Service 5 from carbon.common.script.sys.serviceConst import SERVICE_RUNNING, SERVICE_START_PENDING 6 from eve.client.script.ui.services.alliances.all_cso_alliance import AllianceO 7 from eve.client.script.ui.services.alliances.all_cso_applications import AllianceApplicationsO 8 from eve.client.script.ui.services.alliances.all_cso_members import AllianceMembersO 9 from eve.client.script.ui.services.alliances.all_cso_relationships import AllianceRelationshipsO 10 from eve.common.script.net import eveMoniker 11 from eveexceptions import UserError 12 from eve.common.lib import appConst as const 13 DATA_OBJECT_TYPE_MAP = {'alliance': AllianceO, 14 'applications': AllianceApplicationsO, 15 'members': AllianceMembersO, 16 'relationships': AllianceRelationshipsO} 17 18 class Alliances(Service): 19 __guid__ = 'svc.alliance' 20 __notifyevents__ = ['DoSessionChanging', 21 'OnSessionChanged', 22 'OnAllianceChanged', 23 'OnAllianceApplicationChanged', 24 'OnAllianceMemberChanged', 25 'OnAllianceRelationshipChanged'] 26 __servicename__ = 'alliance' 27 __displayname__ = 'Alliance Client Service' 28 __dependencies__ = [] 29 __functionalobjects__ = ['alliance', 30 'members', 31 'applications', 32 'relationships'] 33 34 def __init__(self): 35 Service.__init__(self) 36 37 def GetDependencies(self): 38 return self.__dependencies__ 39 40 def GetObjectNames(self): 41 return self.__functionalobjects__ 42 43 def Run(self, memStream = None): 44 self.LogInfo('Starting Alliances') 45 self.bulletins = None 46 self.bulletinsTimestamp = 0 47 self.state = SERVICE_START_PENDING 48 self.__allianceMoniker = None 49 self.__allianceMonikerAllianceID = None 50 for objectName in self.__functionalobjects__: 51 if objectName == 'base': 52 continue 53 dataObject = None 54 dataObjectType = DATA_OBJECT_TYPE_MAP.get(objectName, None) 55 if dataObjectType is not None: 56 self.LogInfo('Setting', objectName, 'to instance of', dataObjectType) 57 dataObject = dataObjectType(self) 58 if dataObject is None: 59 raise RuntimeError('FunctionalObject not found %s' % objectName) 60 setattr(self, objectName, dataObject) 61 62 for objectName in self.__functionalobjects__: 63 object = getattr(self, objectName) 64 object.DoObjectWeakRefConnections() 65 66 self.state = SERVICE_RUNNING 67 if session.allianceid is not None: 68 self.GetMoniker() 69 70 def Stop(self, memStream = None): 71 self.__allianceMoniker = None 72 self.__allianceMonikerAllianceID = None 73 74 def RefreshMoniker(self): 75 if self.__allianceMoniker is not None: 76 self.__allianceMoniker = None 77 self.__allianceMonikerAllianceID = None 78 79 def GetMoniker(self): 80 if self.__allianceMoniker is None: 81 self.__allianceMoniker = eveMoniker.GetAlliance() 82 self.__allianceMonikerAllianceID = session.allianceid 83 self.__allianceMoniker.Bind() 84 if self.__allianceMonikerAllianceID != session.allianceid: 85 if self.__allianceMoniker is not None: 86 self.__allianceMoniker = None 87 self.__allianceMoniker = eveMoniker.GetAlliance() 88 self.__allianceMonikerAllianceID = session.allianceid 89 self.__allianceMoniker.Bind() 90 return self.__allianceMoniker 91 92 def DoSessionChanging(self, isRemote, session, change): 93 if 'corprole' in change: 94 old, new = change['corprole'] 95 if old & const.corpRoleDirector != new & const.corpRoleDirector: 96 self.members.members = None 97 for objectname in self.__functionalobjects__: 98 function = getattr(objectname, 'DoSessionChanging', None) 99 if function is None: 100 self.LogInfo(objectname, 'DOES NOT PROCESS DoSessionChanging') 101 else: 102 function(isRemote, session, change) 103 104 if 'charid' in change and change['charid'][0] or 'userid' in change and change['userid'][0]: 105 sm.StopService(self.__guid__[4:]) 106 107 def OnSessionChanged(self, isremote, sess, change): 108 if 'allianceid' in change: 109 oldID, newID = change['allianceid'] 110 self.bulletins = None 111 self.bulletinsTimestamp = 0 112 if newID is not None: 113 self.GetMoniker() 114 else: 115 self.RefreshMoniker() 116 117 def OnAllianceChanged(self, allianceID, change): 118 self.alliance.OnAllianceChanged(allianceID, change) 119 self.members.ResetMembers() 120 121 def GetAlliance(self, allianceID = None): 122 return self.alliance.GetAlliance(allianceID) 123 124 def GetAlliancePublicInfo(self, allianceID): 125 return sm.RemoteSvc('allianceRegistry').GetAlliancePublicInfo(allianceID) 126 127 def ResetCacheForMyAlliance(self): 128 self.alliance.ResetCacheForMyAlliance() 129 130 def UpdateAlliance(self, description, url): 131 return self.alliance.UpdateAlliance(description, url) 132 133 def GetRankedAlliances(self, maxLen = 100): 134 return self.alliance.GetRankedAlliances(maxLen) 135 136 def GetApplications(self, showRejected = False): 137 return self.applications.GetApplications(showRejected) 138 139 def UpdateApplication(self, corpID, applicationText, state): 140 return self.applications.UpdateApplication(corpID, applicationText, state) 141 142 def OnAllianceApplicationChanged(self, allianceID, corpID, change): 143 if allianceID == session.allianceid: 144 self.applications.OnAllianceApplicationChanged(allianceID, corpID, change) 145 146 def GetMembers(self): 147 return self.members.GetMembers() 148 149 def OnAllianceMemberChanged(self, allianceID, corpID, change): 150 if allianceID == session.allianceid: 151 self.members.OnAllianceMemberChanged(allianceID, corpID, change) 152 153 def DeclareExecutorSupport(self, corpID): 154 self.members.DeclareExecutorSupport(corpID) 155 156 def DeleteMember(self, corpID): 157 self.members.DeleteMember(corpID) 158 159 def GetRelationships(self): 160 return self.relationships.Get() 161 162 def SetRelationship(self, relationship, toID): 163 return self.relationships.Set(relationship, toID) 164 165 def DeleteRelationship(self, toID): 166 return self.relationships.Delete(toID) 167 168 def OnAllianceRelationshipChanged(self, allianceID, toID, change): 169 if allianceID == session.allianceid: 170 self.relationships.OnAllianceRelationshipChanged(allianceID, toID, change) 171 sm.ChainEvent('ProcessOnUIAllianceRelationshipChanged', allianceID, toID, change) 172 173 def DeclareWarAgainst(self, againstID, warHQ = None): 174 return self.GetMoniker().DeclareWarAgainst(againstID, warHQ) 175 176 def PayBill(self, billID, fromAccountKey): 177 if not const.corpRoleAccountant & session.corprole == const.corpRoleAccountant: 178 reason = localization.GetByLabel('UI/Corporations/AccessRestrictions/AccountantToPayBills') 179 raise UserError('CrpAccessDenied', {'reason': reason}) 180 return self.GetMoniker().PayBill(billID, fromAccountKey) 181 182 def GetBillBalance(self, billID): 183 if const.corpRoleAccountant & session.corprole == const.corpRoleAccountant: 184 pass 185 elif const.corpRoleJuniorAccountant & session.corprole == const.corpRoleJuniorAccountant: 186 pass 187 else: 188 reason = localization.GetByLabel('UI/Corporations/AccessRestrictions/AccountantToViewBillBalance') 189 raise UserError('CrpAccessDenied', {'reason': reason}) 190 return self.GetMoniker().GetBillBalance(billID) 191 192 def GetBills(self): 193 if const.corpRoleAccountant & session.corprole == const.corpRoleAccountant: 194 pass 195 elif const.corpRoleJuniorAccountant & session.corprole == const.corpRoleJuniorAccountant: 196 pass 197 else: 198 reason = localization.GetByLabel('UI/Corporations/AccessRestrictions/AccountantToViewBills') 199 raise UserError('CrpAccessDenied', {'reason': reason}) 200 return self.GetMoniker().GetBills() 201 202 def GetBillsReceivable(self): 203 if const.corpRoleAccountant & session.corprole == const.corpRoleAccountant: 204 pass 205 elif const.corpRoleJuniorAccountant & session.corprole == const.corpRoleJuniorAccountant: 206 pass 207 else: 208 reason = localization.GetByLabel('UI/Corporations/AccessRestrictions/AccountantToViewBills') 209 raise UserError('CrpAccessDenied', {'reason': reason}) 210 return self.GetMoniker().GetBillsReceivable() 211 212 def GetAllianceBulletins(self): 213 if self.bulletins is None or self.bulletinsTimestamp < blue.os.GetWallclockTime(): 214 self.bulletins = self.GetMoniker().GetBulletins() 215 self.bulletinsTimestamp = blue.os.GetWallclockTime() + 15 * const.MIN 216 return self.bulletins 217 218 def UpdateBulletinOrder(self, newOrder): 219 sm.GetService('alliance').GetMoniker().UpdateBulletinOrder(newOrder) 220 self.bulletinsTimestamp = 0 221 222 def GetContactList(self): 223 if not session.allianceid: 224 return {} 225 return self.GetMoniker().GetAllianceContacts() 226 227 def AddAllianceContact(self, contactID, relationshipID): 228 self.GetMoniker().AddAllianceContact(contactID, relationshipID) 229 230 def EditAllianceContact(self, contactID, relationshipID): 231 self.GetMoniker().EditAllianceContact(contactID, relationshipID) 232 233 def RemoveAllianceContacts(self, contactIDs): 234 self.GetMoniker().RemoveAllianceContacts(contactIDs) 235 236 def EditContactsRelationshipID(self, contactIDs, relationshipID): 237 self.GetMoniker().EditContactsRelationshipID(contactIDs, relationshipID) 238 239 def GetLabels(self): 240 return self.GetMoniker().GetLabels() 241 242 def CreateLabel(self, name, color = 0): 243 return self.GetMoniker().CreateLabel(name, color) 244 245 def DeleteLabel(self, labelID): 246 self.GetMoniker().DeleteLabel(labelID) 247 248 def EditLabel(self, labelID, name = None, color = None): 249 self.GetMoniker().EditLabel(labelID, name, color) 250 251 def AssignLabels(self, contactIDs, labelMask): 252 self.GetMoniker().AssignLabels(contactIDs, labelMask) 253 254 def RemoveLabels(self, contactIDs, labelMask): 255 self.GetMoniker().RemoveLabels(contactIDs, labelMask) 256 257 def GMAcceptApplication(self, corporationID): 258 self.GetMoniker().GMForceAcceptApplication(corporationID) 259 260 def GetPrimeTimeInfo(self): 261 return self.GetMoniker().GetPrimeTimeInfo() 262 263 def SetPrimeHour(self, hour): 264 self.GetMoniker().SetPrimeHour(hour) 265 266 def GetCapitalSystemInfo(self): 267 return self.GetMoniker().GetCapitalSystemInfo() 268 269 def SetCapitalSystem(self, solarSystemID): 270 self.GetMoniker().SetCapitalSystem(solarSystemID) 271 sm.ScatterEvent('OnUpdateCapitalInfo') 272 273 def CancelCapitalSystemTransition(self): 274 self.GetMoniker().CancelCapitalSystemTransition() 275 sm.ScatterEvent('OnUpdateCapitalInfo')