accessGroupListCont.py (3580B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\accessGroups\accessGroupListCont.py 2 from collections import defaultdict 3 from carbonui.primitives.container import Container 4 from carbonui.util.bunch import Bunch 5 from eve.client.script.ui.control.entries.space import Space 6 from eve.client.script.ui.control.entries.util import GetFromClass 7 from eve.client.script.ui.control.eveScroll import Scroll 8 from eve.client.script.ui.structure import ChangeSignalConnect 9 from eve.client.script.ui.structure.accessGroups.accessGroupEntry import AccessGroupEntry 10 from carbonui.util.various_unsorted import SortListOfTuples 11 from eve.client.script.ui.structure.accessGroups.addCont import AddGroupCont 12 from ownergroups.ownergroupsUIUtil import ACCESS_SORT_ORDER 13 DEFAULT_CORP_GROUP = -2 14 15 class GroupListCont(Container): 16 17 def ApplyAttributes(self, attributes): 18 Container.ApplyAttributes(self, attributes) 19 self.controller = attributes.controller 20 self.ChangeSignalConnection(connect=True) 21 self.addCont = AddGroupCont(parent=self, controller=self.controller) 22 self.scroll = Scroll(name='groupListScroll', parent=self, padBottom=4) 23 self.LoadGroups() 24 25 def ChangeSignalConnection(self, connect = True): 26 signalAndCallback = [(self.controller.on_new_group_created, self.LoadGroups), 27 (self.controller.on_group_deleted, self.LoadGroups), 28 (self.controller.on_group_updated, self.LoadGroups), 29 (self.controller.on_groups_reload, self.LoadGroups)] 30 ChangeSignalConnect(signalAndCallback, connect) 31 32 def LoadGroups(self, *args): 33 myGroups = self.controller.GetMyGroups() 34 searchResults = self.controller.GetCurrentSearchResults() 35 groupIDs = set() 36 nodesByMembership = defaultdict(list) 37 for groupID, g in myGroups.iteritems(): 38 groupIDs.add(groupID) 39 groupName = g.name 40 nodeData = Bunch(decoClass=AccessGroupEntry, controller=self.controller, groupInfo=g, isNormal=self.IsNormalGroup(groupID, searchResults)) 41 node = (groupName.lower(), nodeData) 42 isDefaultCorpGroup = g.creatorID == session.corpid 43 if isDefaultCorpGroup: 44 myMembership = DEFAULT_CORP_GROUP 45 nodeData.groupDisplayName = cfg.eveowners.Get(session.corpid).name 46 else: 47 myMembership = g.membershipType 48 nodesByMembership[myMembership].append(node) 49 50 scrollList = [] 51 for eachMemberShipType in [DEFAULT_CORP_GROUP] + ACCESS_SORT_ORDER: 52 nodes = nodesByMembership.get(eachMemberShipType) 53 if nodes: 54 sortedNodes = SortListOfTuples(nodes) 55 scrollList += sortedNodes 56 scrollList.append(GetFromClass(Space, {'height': 12})) 57 58 self.scroll.Load(contentList=scrollList) 59 groupID = None 60 lastLoadedGroupID = settings.user.ui.Get('accessGroup_lastGroup', None) 61 if lastLoadedGroupID in groupIDs: 62 groupID = lastLoadedGroupID 63 elif len(scrollList) > 1: 64 firstNode = scrollList[0] 65 groupID = firstNode.groupInfo.groupID 66 self.controller.SelectGroup(groupID) 67 68 def IsNormalGroup(self, groupID, searchResults): 69 if searchResults is None: 70 return True 71 _, groupsWithMatchedMembers = searchResults 72 return groupID in groupsWithMatchedMembers 73 74 def Close(self): 75 self.ChangeSignalConnection(connect=False) 76 Container.Close(self)