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

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