Package omeroweb :: Package webadmin :: Package controller :: Module experimenter
[hide private]
[frames] | no frames]

Source Code for Module omeroweb.webadmin.controller.experimenter

  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 ExperimenterI, GroupExperimenterMapI 
 27   
 28  from webadmin.controller import BaseController 
 29   
30 -class BaseExperimenters(BaseController):
31 32 experimenters = None 33 experimentersCount = 0 34 auth = None 35
36 - def __init__(self, conn):
37 BaseController.__init__(self, conn) 38 self.experimentersList = list(self.conn.getObjects("Experimenter")) 39 self.experimentersList.sort(key=lambda x: x.getOmeName().lower()) 40 self.auth = self.conn.listLdapAuthExperimenters() 41 self.experimenters = list() 42 self.experimentersCount = {'experimenters': 0, 'active': 0, 'ldap': 0, 'admin': 0, 'guest': 0} 43 for exp in self.experimentersList: 44 isLdap = self.isLdap(exp.id) 45 isActive = exp.isActive() 46 isAdmin = exp.isAdmin() 47 isGuest = exp.isGuest() 48 self.experimenters.append({'experimenter': exp, 'active': isActive, 'ldap':isLdap, 49 'admin': isAdmin, 'guest':isGuest }) 50 if isActive: 51 self.experimentersCount['active'] += 1 52 if isLdap: 53 self.experimentersCount['ldap'] += 1 54 if isAdmin: 55 self.experimentersCount['admin'] += 1 56 if isGuest: 57 self.experimentersCount['guest'] += 1 58 59 self.experimentersCount['experimenters'] = len(self.experimenters)
60
61 - def isLdap(self, eid):
62 try: 63 if len(self.auth.val) > 0: 64 for a in self.auth.val: 65 for k,v in a.val.iteritems(): 66 if long(eid) == long(v.val): 67 return True 68 except: 69 return False 70 return False
71 72
73 -class BaseExperimenter(BaseController):
74 75 experimenter = None 76 defaultGroup = None 77 otherGroups = None 78 ldapAuth = None 79 80 groups = None 81
82 - def __init__(self, conn, eid=None):
83 BaseController.__init__(self, conn) 84 if eid is not None: 85 self.experimenter = self.conn.getObject("Experimenter", eid) 86 self.ldapAuth = self.conn.getLdapAuthExperimenter(eid) 87 geMap = self.experimenter.copyGroupExperimenterMap() 88 if self.experimenter.sizeOfGroupExperimenterMap() > 0: 89 self.defaultGroup = geMap[0].parent.id.val 90 else: 91 self.defaultGroup = None 92 self.otherGroups = list() 93 self.others = list() 94 self.default = list() 95 for gem in geMap: 96 if gem.parent.name.val == "user": 97 pass 98 #elif gem.parent.name.val == "system": 99 # pass 100 elif gem.parent.name.val == "guest": 101 pass 102 else: 103 self.otherGroups.append(gem.parent.id.val) 104 self.others.append(gem.parent) 105 self.default.append((gem.parent.id.val, gem.parent.name.val)) 106 self.groups = list(self.conn.getObjects("ExperimenterGroup")) 107 self.groups.sort(key=lambda x: x.getName().lower())
108
109 - def otherGroupsInitialList(self, exclude=list()):
110 formGroups = list() 111 for gr in self.groups: 112 flag = False 113 if gr.name == "user": 114 flag = True 115 elif gr.name == "system": 116 flag = True 117 elif gr.name == "guest": 118 flag = True 119 if gr.id in exclude: 120 flag = True 121 if not flag: 122 formGroups.append(gr) 123 return formGroups
124
125 - def getSelectedGroups(self, ids):
126 if len(ids)>0: 127 return list(self.conn.getObjects("ExperimenterGroup", ids)) 128 return list()
129
130 - def getMyDetails(self):
131 self.experimenter = self.conn.getUser() 132 self.ldapAuth = self.conn.getLdapAuthExperimenter(self.conn._userid) 133 self.defaultGroup = self.experimenter.copyGroupExperimenterMap()[0].parent.id.val 134 self.otherGroups = list() 135 for gem in self.experimenter.copyGroupExperimenterMap(): 136 if gem.parent.name.val == "user": 137 pass 138 else: 139 self.otherGroups.append(gem.parent)
140
141 - def getOwnedGroups(self):
142 groupsList = list(self.conn.listOwnedGroups()) 143 self.groups = list() 144 for gr in groupsList: 145 if gr.name == "user" or gr.name == "system" or gr.name == "guest": 146 pass 147 else: 148 self.groups.append({'group': gr, 'permissions': self.getPermissions(gr)}) 149 self.groupsCount = len(self.groups)
150
151 - def updateMyAccount(self, firstName, lastName, email, dGroup, middleName=None, institution=None):
152 up_exp = self.experimenter._obj 153 up_exp.firstName = rstring(str(firstName)) 154 up_exp.middleName = middleName is not None and rstring(str(middleName)) or None 155 up_exp.lastName = rstring(str(lastName)) 156 up_exp.email = rstring(str(email)) 157 up_exp.institution = (institution!="" and institution is not None) and rstring(str(institution)) or None 158 159 defaultGroup = self.conn.getObject("ExperimenterGroup", long(dGroup))._obj 160 self.conn.updateMyAccount(up_exp, defaultGroup)
161
162 - def createExperimenter(self, omeName, firstName, lastName, email, admin, active, dGroup, otherGroups, password, middleName=None, institution=None):
163 new_exp = ExperimenterI() 164 new_exp.omeName = rstring(str(omeName)) 165 new_exp.firstName = rstring(str(firstName)) 166 new_exp.middleName = middleName is not None and rstring(str(middleName)) or None 167 new_exp.lastName = rstring(str(lastName)) 168 new_exp.email = rstring(str(email)) 169 new_exp.institution = (institution!="" and institution is not None) and rstring(str(institution)) or None 170 171 listOfGroups = set() 172 # default group 173 for g in self.groups: 174 if long(dGroup) == g.id: 175 defaultGroup = g._obj 176 break 177 # system group 178 if admin: 179 for g in self.groups: 180 if g.name == "system": 181 sysGroup = g._obj 182 break 183 listOfGroups.add(sysGroup) 184 # user group 185 if active: 186 for g in self.groups: 187 if g.name == "user": 188 userGroup = g._obj 189 break 190 listOfGroups.add(userGroup) 191 # rest of groups 192 for g in self.groups: 193 for og in otherGroups: 194 # remove defaultGroup from otherGroups if contains 195 if long(og) == long(defaultGroup.id.val): 196 pass 197 elif long(og) == g.id: 198 listOfGroups.add(g._obj) 199 return self.conn.createExperimenter(new_exp, defaultGroup, list(listOfGroups), password)
200
201 - def updateExperimenter(self, omeName, firstName, lastName, email, admin, active, dGroup, otherGroups, middleName=None, institution=None):
202 up_exp = self.experimenter._obj 203 up_exp.omeName = rstring(str(omeName)) 204 up_exp.firstName = rstring(str(firstName)) 205 up_exp.middleName = middleName is not None and rstring(str(middleName)) or None 206 up_exp.lastName = rstring(str(lastName)) 207 up_exp.email = rstring(str(email)) 208 up_exp.institution = (institution!="" and institution is not None) and rstring(str(institution)) or None 209 210 # old list of groups 211 old_groups = list() 212 for ogr in up_exp.copyGroupExperimenterMap(): 213 old_groups.append(ogr.parent) 214 215 # create list of new groups 216 new_groups = list() 217 218 # default group 219 for g in self.groups: 220 if long(dGroup) == g.id: 221 defaultGroup = g._obj 222 new_groups.append(defaultGroup) 223 224 # user group 225 if active: 226 for g in self.groups: 227 if g.name == "user": 228 sysGroup = g._obj 229 break 230 new_groups.append(sysGroup) 231 232 # system group 233 if admin: 234 if defaultGroup.name.val != "system": 235 for g in self.groups: 236 if g.name == "system": 237 sysGroup = g._obj 238 break 239 new_groups.append(sysGroup) 240 241 # rest of groups 242 for g in self.groups: 243 for og in otherGroups: 244 if long(og) == g.id and g.name != defaultGroup.name.val: 245 new_groups.append(g._obj) 246 247 add_grs = list() 248 rm_grs = list() 249 250 # remove 251 for ogr in old_groups: 252 flag = False 253 for ngr in new_groups: 254 if ngr.id.val == ogr.id.val: 255 flag = True 256 if not flag: 257 rm_grs.append(ogr) 258 259 # add 260 for ngr in new_groups: 261 flag = False 262 for ogr in old_groups: 263 if ogr.id.val == ngr.id.val: 264 flag = True 265 if not flag: 266 add_grs.append(ngr) 267 268 self.conn.updateExperimenter(up_exp, defaultGroup, add_grs, rm_grs)
269
270 - def deleteExperimenter(self):
271 self.conn.deleteExperimenter(self.experimenter._obj)
272