def decode(self, data): o = PermissionsI() o.from_string(data['perm']) o._restrictions = [ not data['canLink'], not data['canEdit'], not data['canDelete'], not data['canAnnotate'] ] return o
def setActualPermissions(permissions): permissions = int(permissions) if permissions == 0: p = PermissionsI("rw----") elif permissions == 1: p = PermissionsI("rwr---") elif permissions == 2: p = PermissionsI("rwra--") else: p = PermissionsI() return p
def new_group(self, experimenters=None, perms=None, config=None, gname=None): admin = self.root.sf.getAdminService() if gname is None: gname = self.uuid() group = ExperimenterGroupI() group.name = rstring(gname) group.ldap = rbool(False) group.config = config if perms: group.details.permissions = PermissionsI(perms) gid = admin.createGroup(group) group = admin.getGroup(gid) self.add_experimenters(group, experimenters) return group
def permissions(): o = PermissionsI() return o
def setActualPermissions(self, p, r=None): permissions = PermissionsI() p = int(p) if p == 0: #private permissions.setUserRead(True) permissions.setUserWrite(True) permissions.setGroupRead(False) permissions.setGroupWrite(False) permissions.setWorldRead(False) permissions.setWorldWrite(False) elif p == 1: #collaborative permissions.setUserRead(True) permissions.setUserWrite(True) permissions.setGroupRead(True) permissions.setGroupWrite(not r) permissions.setWorldRead(False) permissions.setWorldWrite(False) elif p == 2: #public permissions.setUserRead(True) permissions.setUserWrite(True) permissions.setGroupRead(True) permissions.setGroupWrite(not r) permissions.setWorldRead(True) permissions.setWorldWrite(not r) return permissions
def testQueryTaggedUnique(self): # get group we're working on... ctx = self.client.sf.getAdminService().getEventContext() groupId = ctx.groupId print 'groupId', groupId # Admin sets permissions to read-ann admin = self.root.sf.getAdminService() rootUpdate = self.root.sf.getUpdateService() gr = admin.getGroup(groupId) p = PermissionsI() p.setUserRead(True) p.setUserWrite(True) p.setGroupRead(True) p.setGroupAnnotate(True) p.setGroupWrite(False) p.setWorldRead(False) p.setWorldAnnotate(False) p.setWorldWrite(False) gr.details.permissions = p admin.updateGroup(gr) # Update context for user ctx = self.client.sf.getAdminService().getEventContext() update = self.client.sf.getUpdateService() queryService = self.client.sf.getQueryService() tagCount = 5 # User creates tag linked to images tag = TagAnnotationI() tag.textValue = wrap("test_iQuerySpeed") links = [] for i in range(tagCount): iid = createImageWithPixels(self.client, self.uuid()) link = ImageAnnotationLinkI() link.parent = ImageI(iid, False) link.child = tag links.append(link) links = update.saveAndReturnArray(links) tag = links[0].child # check permissions p = tag.getDetails().getPermissions() assert p.isGroupRead() assert p.isGroupAnnotate() # Root also links user's tag to images rootLinks = [] for l in links: link = ImageAnnotationLinkI() link.parent = ImageI(l.parent.id, False) link.child = TagAnnotationI(l.child.id, False) rootLinks.append(link) rootUpdate.saveAndReturnArray(rootLinks, {'omero.group': str(groupId)}) q = """select distinct new map(obj.id as id, obj.name as name, obj.details.owner.id as ownerId, obj as image_details_permissions, obj.fileset.id as filesetId, lower(obj.name) as n , pix.sizeX as sizeX, pix.sizeY as sizeY, pix.sizeZ as sizeZ ) from Image obj left outer join obj.pixels pix join obj.annotationLinks alink where %s order by lower(obj.name), obj.id """ params = ParametersI() params.add('tid', tag.id) # We can get all the tagged images like this. # We use an additional select statement to give 'unique' results uniqueClause = """alink.id = (select max(alink.id) from ImageAnnotationLink alink where alink.child.id=:tid and alink.parent.id=obj.id)""" query = q % uniqueClause result1 = queryService.projection(query, params, {'omero.group': str(groupId)}) assert len(result1) == tagCount # Without the select statement, we get the same image returned # multiple times if there is no 'distinct' clause = "alink.child.id=:tid" query = q % clause result2 = queryService.projection(query, params, {'omero.group': str(groupId)}) assert len(result2) == tagCount for idx in range(len(result1)-1): # Omit final since == isn't defined for Ice objects. assert result1[idx] == result2[idx]
def client(request, itest): """Returns a new user client in a read-only group.""" # Use group read-only permissions (not private) by default perms = PermissionsI() perms.setGroupRead(True) return itest.new_client(perms=perms.getPerm1())