Trees | Indices | Help |
|
---|
|
1 #!/usr/bin/env python 2 # 3 # 4 # 5 # Copyright (c) 2008 University of Dundee. 6 # 7 # This program is free software: you can redistribute it and/or modify 8 # it under the terms of the GNU Affero General Public License as 9 # published by the Free Software Foundation, either version 3 of the 10 # License, or (at your option) any later version. 11 # 12 # This program is distributed in the hope that it will be useful, 13 # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 # GNU Affero General Public License for more details. 16 # 17 # You should have received a copy of the GNU Affero General Public License 18 # along with this program. If not, see <http://www.gnu.org/licenses/>. 19 # 20 # Author: Aleksandra Tarkowska <A(dot)Tarkowska(at)dundee(dot)ac(dot)uk>, 2008. 21 # 22 # Version: 1.0 23 # 24 25 from omero.rtypes import * 26 from omero.model import ExperimenterGroupI, PermissionsI 27 28 from webadmin.controller import BaseController 2931 32 groups = None 33 groupsCount = 0 345336 BaseController.__init__(self, conn) 37 groupsList = list(self.conn.getObjects("ExperimenterGroup")) 38 groupsList.sort(key=lambda x: x.getName().lower()) 39 self.groups = list() 40 for gr in groupsList: 41 self.groups.append({'group': gr, 'locked': self.isLocked(gr.name), 'permissions': self.getPermissions(gr)}) 42 self.groupsCount = len(groupsList)4355 56 group = None 57 experimenters = None 5824460 BaseController.__init__(self, conn) 61 if gid is not None: 62 self.group = self.conn.getObject("ExperimenterGroup", gid) 63 64 self.owners = list() 65 for gem in self.group.copyGroupExperimenterMap(): 66 if gem.owner.val == True: 67 self.owners.append(gem.child.id.val) 68 self.experimenters = list(self.conn.getObjects("Experimenter")) 69 self.experimenters.sort(key=lambda x: x.getOmeName().lower())7072 owners = list() 73 for e in self.conn.getObjects("Experimenter", self.owners): 74 owners.append(e.getFullName()) 75 return ", ".join(owners)7678 self.members = list(self.conn.containedExperimenters(self.group.id)) 79 self.members.sort(key=lambda x: x.getOmeName().lower()) 80 for i, m in enumerate(self.members): 81 if m.copyGroupExperimenterMap()[0].parent.id.val == self.group.id: 82 self.members[i].setFirstName("*%s" % (m.firstName)) 83 84 self.available = list() 85 memberIds = [m.id for m in self.members] 86 for e in self.experimenters: 87 if e.id not in memberIds: 88 self.available.append(e)8991 old_members = list(self.conn.containedExperimenters(self.group.id)) 92 old_available = list() 93 for e in self.experimenters: 94 flag = False 95 for m in old_members: 96 if e.id == m.id: 97 flag = True 98 if not flag: 99 old_available.append(e) 100 101 add_exps = list() 102 rm_exps = list() 103 for om in old_members: 104 for a in available: 105 if om.id == long(str(a)): 106 rm_exps.append(om._obj) 107 for oa in old_available: 108 for m in members: 109 if oa.id == long(str(m)): 110 add_exps.append(oa._obj) 111 112 for r in rm_exps: 113 if self.conn.getDefaultGroup(r.id.val).id == self.group.id: 114 rm_exps.remove(r) 115 116 self.conn.setMembersOfGroup(self.group._obj, add_exps, rm_exps)117119 new_gr = ExperimenterGroupI() 120 new_gr.name = rstring(str(name)) 121 new_gr.description = (description!="" and description is not None) and rstring(str(description)) or None 122 new_gr.details.permissions = self.setActualPermissions(perm, r) 123 124 listOfOwners = set() 125 for e in self.experimenters: 126 for o in owners: 127 if long(o) == e.id: 128 listOfOwners.add(e._obj) 129 130 return self.conn.createGroup(new_gr, list(listOfOwners))131133 up_gr = self.group._obj 134 up_gr.name = rstring(str(name)) 135 up_gr.description = (description!="" and description is not None) and rstring(str(description)) or None 136 permissions = None 137 perm = int(perm) 138 if self.getActualPermissions() != perm or self.isReadOnly()!=r: 139 permissions = self.setActualPermissions(perm, r) 140 # old list of groups 141 old_owners = list() 142 for oex in up_gr.copyGroupExperimenterMap(): 143 if oex.owner.val: 144 old_owners.append(oex.child) 145 146 # create list of new groups 147 new_owners = list() 148 for e in self.experimenters: 149 for o in owners: 150 if long(o) == e.id: 151 new_owners.append(e._obj) 152 153 add_exps = list() 154 rm_exps = list() 155 156 # remove 157 for oex in old_owners: 158 flag = False 159 for nex in new_owners: 160 if nex.id.val == oex.id.val: 161 flag = True 162 if not flag: 163 rm_exps.append(oex) 164 165 # add 166 for nex in new_owners: 167 flag = False 168 for oex in old_owners: 169 if oex.id.val == nex.id.val: 170 flag = True 171 if not flag: 172 add_exps.append(nex) 173 174 self.conn.updateGroup(up_gr, add_exps, rm_exps, permissions)175177 permissions = None 178 perm = int(perm) 179 if self.getActualPermissions() != perm or self.isReadOnly()!=r: 180 permissions = self.setActualPermissions(perm, r) 181 self.conn.updatePermissions(self.group._obj, permissions)182184 p = None 185 if self.group.details.getPermissions() is None: 186 raise AttributeError('Object has no permissions') 187 else: 188 p = self.group.details.getPermissions() 189 190 flag = None 191 if p.isUserRead(): 192 flag = 0 193 if p.isGroupRead(): 194 flag = 1 195 if p.isWorldRead(): 196 flag = 2 197 198 return flag199201 p = None 202 if self.group.details.getPermissions() is None: 203 raise AttributeError('Object has no permissions') 204 else: 205 p = self.group.details.getPermissions() 206 207 flag = False 208 if p.isUserRead() and not p.isUserWrite(): 209 flag = True 210 if p.isGroupRead() and not p.isGroupWrite(): 211 flag = True 212 if p.isWorldRead() and not p.isWorldWrite(): 213 flag = True 214 return flag215217 permissions = PermissionsI() 218 p = int(p) 219 if p == 0: 220 #private 221 permissions.setUserRead(True) 222 permissions.setUserWrite(True) 223 permissions.setGroupRead(False) 224 permissions.setGroupWrite(False) 225 permissions.setWorldRead(False) 226 permissions.setWorldWrite(False) 227 elif p == 1: 228 #collaborative 229 permissions.setUserRead(True) 230 permissions.setUserWrite(True) 231 permissions.setGroupRead(True) 232 permissions.setGroupWrite(not r) 233 permissions.setWorldRead(False) 234 permissions.setWorldWrite(False) 235 elif p == 2: 236 #public 237 permissions.setUserRead(True) 238 permissions.setUserWrite(True) 239 permissions.setGroupRead(True) 240 permissions.setGroupWrite(not r) 241 permissions.setWorldRead(True) 242 permissions.setWorldWrite(not r) 243 return permissions
Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Tue Jan 24 19:49:39 2012 | http://epydoc.sourceforge.net |