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

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