AuditLogSecureContainerLogViewer.py (11381B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\AuditLogSecureContainerLogViewer.py 2 import sys 3 import blue 4 import carbon.common.script.util.logUtil as log 5 import eveicon 6 import evetypes 7 import localization 8 from carbon.common.script.util.format import FmtDate, ParseDate 9 from carbonui import uiconst 10 from carbonui.control.buttonIcon import ButtonIcon 11 from carbonui.control.contextMenu.menuEntryData import MenuEntryData 12 from carbonui.control.singlelineedits.singleLineEditText import SingleLineEditText 13 from carbonui.primitives.container import Container 14 from eve.client.script.ui.control import eveLabel, eveScroll 15 from carbonui.control.button import Button 16 from eve.client.script.ui.control.entries.generic import Generic 17 from eve.client.script.ui.control.entries.util import GetFromClass 18 from carbonui.control.window import Window 19 from eve.common.script.sys import idCheckers 20 from eveexceptions import UserError 21 from eveservices.menu import GetMenuService 22 from menu import MenuLabel 23 from player_messaging.client.ui_message import prompt_player_fsd_dialog 24 25 class AuditLogSecureContainerLogViewer(Window): 26 default_windowID = 'alsclogviewer' 27 default_minSize = (400, 400) 28 default_width = 700 29 default_height = 400 30 default_captionLabelPath = 'UI/AuditContainerLogViewer/AuditLogTitle' 31 32 def ApplyAttributes(self, attributes): 33 super(AuditLogSecureContainerLogViewer, self).ApplyAttributes(attributes) 34 itemID = attributes.itemID 35 self.container = sm.GetService('invCache').GetInventoryFromId(itemID) 36 self.itemID = itemID 37 self.logIDmax = None 38 self.logIDmin = None 39 self.logOptions = Container(name='logOptions', parent=self.sr.main, align=uiconst.TOTOP, height=SingleLineEditText.default_height, idx=1, padTop=8) 40 navButtonCont = Container(name='navButtonCont', parent=self.logOptions, align=uiconst.TORIGHT, width=54) 41 self.wndBackBtn = ButtonIcon(parent=navButtonCont, align=uiconst.CENTERLEFT, texturePath=eveicon.navigate_back, iconSize=16, hint=localization.GetByLabel('UI/Common/Previous'), func=lambda : self.BrowseLog(0), args=()) 42 self.wndFwdBtn = ButtonIcon(parent=navButtonCont, align=uiconst.CENTERLEFT, left=24, texturePath=eveicon.navigate_forward, iconSize=16, hint=localization.GetByLabel('UI/Common/More'), func=lambda : self.BrowseLog(1), args=()) 43 self.fromDate = self.GetNow() 44 self.wndFromDate = SingleLineEditText(name='fromdate', parent=self.logOptions, setvalue=self.fromDate, align=uiconst.TOPLEFT, pos=(0, 0, 80, 0), maxLength=16) 45 self.wndFromDate.OnReturn = self.GetDate 46 dateLabel = localization.GetByLabel('UI/Common/Date') 47 eveLabel.EveHeaderSmall(text=dateLabel, parent=self.wndFromDate, width=200, top=-12, state=uiconst.UI_NORMAL) 48 self.scroll = eveScroll.Scroll(parent=self.sr.main, padding=(0, 8, 0, 0)) 49 self.ViewLogForContainer() 50 51 def GetDate(self): 52 self.ViewLogForContainer(ParseDate(self.wndFromDate.GetValue())) 53 54 def GetNow(self): 55 return FmtDate(blue.os.GetWallclockTime(), 'sn') 56 57 def BrowseLog(self, direction, *args): 58 fromDate = None 59 if self.fromDate != self.wndFromDate.GetValue(): 60 fromDate = ParseDate(self.wndFromDate.GetValue()) 61 if direction == 1: 62 fromLogID = self.logIDmax 63 else: 64 fromLogID = self.logIDmin 65 self.ViewLogForContainer(fromDate=fromDate, fromLogID=fromLogID, forward=direction) 66 67 def ViewLogForContainer(self, fromDate = None, fromLogID = None, forward = 1): 68 log.LogInfo('ViewLogForContainer fromDate:', fromDate, 'fromLogID:', fromLogID, 'forward:', forward) 69 if self is None or self.destroyed: 70 return 71 try: 72 if fromDate is None and fromLogID is None: 73 if forward == 1: 74 fromLogID = self.logIDmax 75 else: 76 fromLogID = self.logIDmin 77 if fromLogID is None: 78 fromLogID = 1 79 scrolllist = [] 80 self.ShowLoad() 81 headers = [localization.GetByLabel('UI/Common/Date'), 82 localization.GetByLabel('UI/Common/Location'), 83 localization.GetByLabel('UI/AuditContainerLogViewer/SubLocation'), 84 localization.GetByLabel('UI/AuditContainerLogViewer/Who'), 85 localization.GetByLabel('UI/AuditContainerLogViewer/Action'), 86 localization.GetByLabel('UI/AuditContainerLogViewer/Status'), 87 localization.GetByLabel('UI/Common/Type'), 88 localization.GetByLabel('UI/AuditContainerLogViewer/QuantityOwner')] 89 logs = self.container.ALSCLogGet(fromDate, fromLogID, forward) 90 log.LogInfo('result count:', len(logs)) 91 if len(logs): 92 self.logIDmax = None 93 self.logIDmin = None 94 for contLog in logs: 95 log.LogInfo('log:', contLog) 96 subLocation = None 97 if self.logIDmax is None or self.logIDmax < contLog.logID: 98 self.logIDmax = contLog.logID 99 if self.logIDmin is None or self.logIDmin > contLog.logID: 100 self.logIDmin = contLog.logID 101 if contLog.inventoryMgrLocationID == contLog.locationID: 102 if contLog.flagID == const.flagHangar: 103 subLocation = localization.GetByLabel('UI/AuditContainerLogViewer/PersonalHangar') 104 elif contLog.flagID in const.corpDivisionsByFlag: 105 division = const.corpDivisionsByFlag[contLog.flagID] 106 subLocation = sm.GetService('corp').GetDivisionNames()[division + 1] 107 if subLocation is None: 108 location = cfg.evelocations.GetIfExists(contLog.locationID) 109 if location is not None: 110 subLocation = location.locationName 111 else: 112 subLocation = '%s' % contLog.flagID 113 action = '%s' % contLog.actionID 114 arg1 = '%s' % contLog.arg1 115 arg2 = '%s' % contLog.arg2 116 if contLog.actionID == const.ALSCActionAssemble: 117 action = localization.GetByLabel('UI/AuditContainerLogViewer/Assembled') 118 arg1 = evetypes.GetName(contLog.arg2) 119 arg2 = cfg.eveowners.Get(contLog.arg1).ownerName 120 elif contLog.actionID == const.ALSCActionRepackage: 121 action = localization.GetByLabel('UI/AuditContainerLogViewer/Repackaged') 122 arg1 = arg2 = localization.GetByLabel('UI/Generic/NotAvailableShort') 123 elif contLog.actionID == const.ALSCActionSetName: 124 action = localization.GetByLabel('UI/AuditContainerLogViewer/SetName') 125 arg1 = arg2 = localization.GetByLabel('UI/Generic/NotAvailableShort') 126 elif contLog.actionID == const.ALSCActionSetPassword: 127 action = localization.GetByLabel('UI/AuditContainerLogViewer/SetPassword') 128 if contLog.arg1 == const.SCCPasswordTypeGeneral: 129 arg1 = localization.GetByLabel('UI/Generic/General') 130 elif contLog.arg1 == const.SCCPasswordTypeConfig: 131 arg1 = localization.GetByLabel('UI/AuditContainerLogViewer/Configuration') 132 arg2 = localization.GetByLabel('UI/Generic/NotAvailableShort') 133 elif contLog.actionID == const.ALSCActionLock: 134 action = localization.GetByLabel('UI/AuditContainerLogViewer/Lock') 135 arg1 = evetypes.GetName(contLog.arg1) 136 arg2 = '%s' % contLog.arg2 137 elif contLog.actionID == const.ALSCActionUnlock: 138 action = localization.GetByLabel('UI/AuditContainerLogViewer/Unlock') 139 arg1 = evetypes.GetName(contLog.arg1) 140 arg2 = '%s' % contLog.arg2 141 elif contLog.actionID == const.ALSCActionEnterPassword: 142 action = localization.GetByLabel('UI/AuditContainerLogViewer/EnterPassword') 143 if contLog.arg1 == const.SCCPasswordTypeGeneral: 144 arg1 = localization.GetByLabel('UI/Generic/General') 145 elif contLog.arg1 == const.SCCPasswordTypeConfig: 146 arg1 = localization.GetByLabel('UI/AuditContainerLogViewer/Configuration') 147 arg2 = localization.GetByLabel('UI/Generic/NotAvailableShort') 148 elif contLog.actionID == const.ALSCActionConfigure: 149 action = localization.GetByLabel('UI/AuditContainerLogViewer/Configure') 150 arg1 = arg2 = localization.GetByLabel('UI/Generic/NotAvailableShort') 151 failLabel = localization.GetByLabel('UI/AuditContainerLogViewer/Fail') 152 successLabel = localization.GetByLabel('UI/AuditContainerLogViewer/Success') 153 failSucceed = [(failLabel, '0xffff0000'), (successLabel, '0xff00ff00')][contLog.status] 154 label = '%s' % FmtDate(contLog.logDate) 155 label += '<t>%s' % cfg.evelocations.Get(contLog.inventoryMgrLocationID).locationName 156 label += '<t>%s' % subLocation 157 label += '<t>%s' % cfg.eveowners.Get(contLog.actorID).ownerName 158 label += '<t>%s' % action 159 label += '<t><color=%s>%s</color>' % (failSucceed[1], failSucceed[0]) 160 label += '<t>%s' % arg1 161 label += '<t>%s' % arg2 162 scrolllist.append(GetFromClass(Generic, {'label': label, 163 'entryData': contLog, 164 'GetMenu': self.GetDataMenu})) 165 166 self.scroll.Load(None, scrolllist, headers=headers) 167 if len(logs) == 50: 168 self.wndBackBtn.Enable() 169 self.wndFwdBtn.Enable() 170 if forward == 1 and len(logs) < 50: 171 self.wndBackBtn.Enable() 172 self.wndFwdBtn.Disable() 173 if forward == 0 and len(logs) < 50: 174 self.wndBackBtn.Disable() 175 self.wndFwdBtn.Enable() 176 except UserError as e: 177 prompt_player_fsd_dialog(e.msg, e.dict) 178 sys.exc_clear() 179 self.Close() 180 finally: 181 if not self.destroyed: 182 self.HideLoad() 183 184 def GetDataMenu(self, entry): 185 m = [] 186 if entry.sr.node.entryData: 187 contLog = entry.sr.node.entryData 188 if idCheckers.IsSolarSystem(contLog.locationID): 189 itemID, typeID = contLog.inventoryMgrLocationID, const.typeSolarSystem 190 else: 191 itemID, typeID = contLog.inventoryMgrLocationID, const.groupStation 192 m.append(MenuEntryData(MenuLabel('UI/Common/Location'), subMenuData=GetMenuService().CelestialMenu(itemID=itemID, mapItem=None, typeID=typeID), texturePath=eveicon.location)) 193 m += [None] 194 operatorLabel = MenuLabel('UI/AuditContainerLogViewer/Operator', {'ownerName': cfg.eveowners.Get(contLog.actorID)}) 195 m.append(MenuEntryData(operatorLabel, subMenuData=GetMenuService().CharacterMenu(contLog.actorID), texturePath=eveicon.person)) 196 m += [None] 197 return m