all_cso_alliance.py (4523B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\services\alliances\all_cso_alliance.py 2 import blue 3 import utillib 4 from carbon.common.script.sys.crowset import CRowset 5 from eve.client.script.ui.services.alliances.all_cso_base import BaseAllianceObject 6 from eve.client.script.ui.shared.neocom.corporation import corpUISignals 7 8 class AllianceO(BaseAllianceObject): 9 __guid__ = 'allianceObject.alliance' 10 11 def __init__(self, boundObject): 12 BaseAllianceObject.__init__(self, boundObject) 13 self.alliancesByAllianceID = None 14 self.rankedAlliances = utillib.KeyVal(time=None, alliances=None, standings=None, maxLen=None) 15 16 def DoSessionChanging(self, isRemote, session, change): 17 pass 18 19 def GetRankedAlliances(self, maxLen = 100): 20 if self.rankedAlliances.time is not None: 21 if self.rankedAlliances.maxLen != maxLen or blue.os.TimeDiffInMs(self.rankedAlliances.time, blue.os.GetWallclockTime()) > 5000: 22 self.rankedAlliances.time = None 23 if self.rankedAlliances.time is None: 24 self.rankedAlliances.time = blue.os.GetWallclockTime() 25 self.rankedAlliances.maxLen = maxLen 26 self.rankedAlliances.alliances = sm.RemoteSvc('allianceRegistry').GetRankedAlliances(maxLen) 27 self.rankedAlliances.standings = {} 28 for a in self.rankedAlliances.alliances: 29 s = sm.GetService('standing').GetStanding(session.corpid, a.allianceID) 30 self.rankedAlliances.standings[a.allianceID] = s 31 32 return self.rankedAlliances 33 34 def UpdateAlliance(self, description, url): 35 return self.GetMoniker().UpdateAlliance(description, url) 36 37 def GetAlliance(self, allianceID = None): 38 if allianceID is None: 39 allianceID = session.allianceid 40 if allianceID is None: 41 raise RuntimeError('NoSuchAlliance') 42 if self.alliancesByAllianceID is not None and allianceID in self.alliancesByAllianceID: 43 return self.alliancesByAllianceID[allianceID] 44 alliance = None 45 if allianceID == session.allianceid: 46 alliance = self.GetMoniker().GetAlliance() 47 else: 48 alliance = sm.RemoteSvc('allianceRegistry').GetAlliance(allianceID) 49 self.LoadAlliance(alliance) 50 return self.alliancesByAllianceID[allianceID] 51 52 def LoadAlliance(self, alliance): 53 if self.alliancesByAllianceID is None: 54 self.alliancesByAllianceID = CRowset(alliance.__header__, []).Index('allianceID') 55 self.alliancesByAllianceID[alliance.allianceID] = alliance 56 57 def OnAllianceChanged(self, allianceID, change): 58 bAdd, bRemove = self.GetAddRemoveFromChange(change) 59 if self.alliancesByAllianceID is not None: 60 if bAdd: 61 if len(change) != len(self.alliancesByAllianceID.columns): 62 self.LogWarn('IncorrectNumberOfColumns ignoring change as Add change:', change) 63 return 64 line = [] 65 for columnName in self.alliancesByAllianceID.columns: 66 line.append(change[columnName][1]) 67 68 self.alliancesByAllianceID[allianceID] = blue.DBRow(self.alliancesByAllianceID.header, line) 69 else: 70 if allianceID not in self.alliancesByAllianceID: 71 return 72 if bRemove: 73 del self.alliancesByAllianceID[allianceID] 74 else: 75 alliance = self.alliancesByAllianceID[allianceID] 76 for columnName in change.iterkeys(): 77 setattr(alliance, columnName, change[columnName][1]) 78 79 if allianceID in cfg.allianceshortnames.data: 80 header = cfg.allianceshortnames.header 81 line = cfg.allianceshortnames.data[allianceID] 82 i = -1 83 for columnName in header: 84 i = i + 1 85 if columnName not in change: 86 continue 87 line[i] = change[columnName][1] 88 89 corpUISignals.on_alliance_changed(allianceID, change) 90 91 def ResetCacheForMyAlliance(self): 92 allianceID = session.allianceid 93 if not allianceID: 94 return 95 if self.alliancesByAllianceID and allianceID in self.alliancesByAllianceID: 96 self.alliancesByAllianceID.pop(allianceID, None)