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)