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

mailingListsSvc.py (7008B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\services\mail\mailingListsSvc.py
      2 from carbon.common.script.sys.service import Service, SERVICE_START_PENDING, SERVICE_RUNNING
      3 from carbon.common.script.util.format import GetKeyAndNormalize
      4 from eveexceptions import UserError
      5 from utillib import KeyVal
      6 
      7 class MailingLists(Service):
      8     __exportedcalls__ = {'GetDisplayName': [],
      9      'GetMyMailingLists': [],
     10      'CreateMailingList': [],
     11      'JoinMailingList': [],
     12      'LeaveMaillist': [],
     13      'DeleteMaillist': [],
     14      'GetMembers': [],
     15      'KickMembers': [],
     16      'SetEntityAccess': [],
     17      'ClearEntityAccess': [],
     18      'SetMembersMuted': [],
     19      'SetMembersOperator': [],
     20      'SetMembersClear': [],
     21      'SetDefaultAccess': [],
     22      'GetSettings': [],
     23      'GetWelcomeMail': [],
     24      'SaveWelcomeMail': [],
     25      'SaveAndSendWelcomeMail': [],
     26      'ClearWelcomeMail': []}
     27     __guid__ = 'svc.mailinglists'
     28     __servicename__ = 'mailinglists'
     29     __displayname__ = 'Mailing Lists'
     30     __notifyevents__ = ['OnMailingListSetOperator',
     31      'OnMailingListSetMuted',
     32      'OnMailingListSetClear',
     33      'OnMailingListLeave',
     34      'OnMailingListDeleted',
     35      'OnCharacterSessionChanged']
     36 
     37     def __init__(self):
     38         super(MailingLists, self).__init__()
     39         self.myMailingLists = None
     40         self.objectCaching = None
     41         self.mailingListsMgr = None
     42         self.myMailingLists = None
     43         self.externalLists = {}
     44 
     45     def Run(self, memStream = None):
     46         self.state = SERVICE_START_PENDING
     47         self.LogInfo('Starting Mailing Lists Svc')
     48         self.Initialize()
     49         self.state = SERVICE_RUNNING
     50 
     51     def Initialize(self):
     52         self.objectCaching = sm.GetService('objectCaching')
     53         self.mailingListsMgr = sm.RemoteSvc('mailingListsMgr')
     54         self.myMailingLists = self.mailingListsMgr.GetJoinedLists()
     55         self.externalLists = {}
     56 
     57     def OnCharacterSessionChanged(self, _oldCharacterID, newCharacterID):
     58         if newCharacterID is not None:
     59             self.Initialize()
     60 
     61     def GetMyMailingLists(self):
     62         return self.myMailingLists
     63 
     64     def GetDisplayName(self, listID):
     65         if listID in self.myMailingLists:
     66             return self.myMailingLists[listID].displayName
     67         if listID in self.externalLists:
     68             return self.externalLists[listID].displayName
     69         info = self.mailingListsMgr.GetInfo(listID)
     70         if info is None:
     71             raise UserError('MailingListNoSuchList')
     72         self.externalLists[listID] = info
     73         return info.displayName
     74 
     75     def CreateMailingList(self, name, defaultAccess = const.mailingListAllowed, defaultMemberAccess = const.mailingListMemberDefault, cost = 0):
     76         ret = sm.RemoteSvc('mailingListsMgr').Create(name, defaultAccess, defaultMemberAccess, cost)
     77         key, displayName = GetKeyAndNormalize(name)
     78         self.myMailingLists[ret] = KeyVal(name=key, displayName=displayName, isMuted=False, isOperator=False, isOwner=True)
     79         sm.ScatterEvent('OnMyMaillistChanged')
     80         return ret
     81 
     82     def JoinMailingList(self, name):
     83         ret = self.mailingListsMgr.Join(name)
     84         self.myMailingLists[ret.id] = ret
     85         sm.ScatterEvent('OnMyMaillistChanged')
     86         return ret.id
     87 
     88     def LeaveMaillist(self, listID):
     89         self.mailingListsMgr.Leave(listID)
     90         try:
     91             del self.myMailingLists[listID]
     92         except KeyError:
     93             pass
     94 
     95         sm.ScatterEvent('OnMyMaillistChanged')
     96 
     97     def DeleteMaillist(self, listID):
     98         self.mailingListsMgr.Delete(listID)
     99         try:
    100             del self.myMailingLists[listID]
    101         except KeyError:
    102             pass
    103 
    104         sm.ScatterEvent('OnMyMaillistChanged')
    105 
    106     def KickMembers(self, listID, memberIDs):
    107         self.mailingListsMgr.KickMembers(listID, memberIDs)
    108         self.objectCaching.InvalidateCachedMethodCall('mailingListsMgr', 'GetMembers', listID)
    109 
    110     def GetMembers(self, listID):
    111         members = self.mailingListsMgr.GetMembers(listID)
    112         sm.GetService('mailSvc').PrimeOwners(members.keys())
    113         return members
    114 
    115     def SetEntityAccess(self, listID, entityID, access):
    116         self.SetEntitiesAccess(listID, {entityID: access})
    117 
    118     def SetEntitiesAccess(self, listID, accessByEntityID):
    119         self.mailingListsMgr.SetEntitiesAccess(listID, accessByEntityID)
    120 
    121     def ClearEntityAccess(self, listID, entityID):
    122         self.mailingListsMgr.ClearEntityAccess(listID, entityID)
    123 
    124     def SetMembersMuted(self, listID, memberIDs):
    125         self.mailingListsMgr.SetMembersMuted(listID, memberIDs)
    126         self.objectCaching.InvalidateCachedMethodCall('mailingListsMgr', 'GetMembers', listID)
    127 
    128     def SetMembersOperator(self, listID, memberIDs):
    129         self.mailingListsMgr.SetMembersOperator(listID, memberIDs)
    130         self.objectCaching.InvalidateCachedMethodCall('mailingListsMgr', 'GetMembers', listID)
    131 
    132     def SetMembersClear(self, listID, memberIDs):
    133         self.mailingListsMgr.SetMembersClear(listID, memberIDs)
    134         self.objectCaching.InvalidateCachedMethodCall('mailingListsMgr', 'GetMembers', listID)
    135 
    136     def SetDefaultAccess(self, listID, defaultAccess, defaultMemberAccess, mailCost = 0):
    137         self.mailingListsMgr.SetDefaultAccess(listID, defaultAccess, defaultMemberAccess, mailCost)
    138 
    139     def GetSettings(self, listID):
    140         return self.mailingListsMgr.GetSettings(listID)
    141 
    142     def OnMailingListSetOperator(self, listID):
    143         if listID in self.myMailingLists:
    144             self.myMailingLists[listID].isOperator = True
    145             self.myMailingLists[listID].isMuted = False
    146 
    147     def OnMailingListSetMuted(self, listID):
    148         if listID in self.myMailingLists:
    149             self.myMailingLists[listID].isMuted = True
    150             self.myMailingLists[listID].isOperator = False
    151 
    152     def OnMailingListSetClear(self, listID):
    153         if listID in self.myMailingLists:
    154             self.myMailingLists[listID].isMuted = False
    155             self.myMailingLists[listID].isOperator = False
    156 
    157     def OnMailingListLeave(self, listID, characterID):
    158         if characterID == session.charid and listID in self.myMailingLists:
    159             try:
    160                 del self.myMailingLists[listID]
    161             except KeyError:
    162                 pass
    163 
    164             sm.ScatterEvent('OnMyMaillistChanged')
    165 
    166     def OnMailingListDeleted(self, listID):
    167         if listID in self.myMailingLists:
    168             try:
    169                 del self.myMailingLists[listID]
    170             except KeyError:
    171                 pass
    172 
    173             sm.ScatterEvent('OnMyMaillistChanged')
    174 
    175     def GetWelcomeMail(self, listID):
    176         return self.mailingListsMgr.GetWelcomeMail(listID)
    177 
    178     def SaveWelcomeMail(self, listID, title, body):
    179         return self.mailingListsMgr.SaveWelcomeMail(listID, title, body)
    180 
    181     def SaveAndSendWelcomeMail(self, listID, title, body):
    182         return self.mailingListsMgr.SendWelcomeMail(listID, title, body)
    183 
    184     def ClearWelcomeMail(self, listID):
    185         self.mailingListsMgr.ClearWelcomeMail(listID)