Skip to content

Commit

Permalink
Merge pull request ome#94 from joshmoore/8056-sprint9-server
Browse files Browse the repository at this point in the history
8056 sprint9 server backlog
  • Loading branch information
chris-allan committed Feb 27, 2012
2 parents 6503873 + e1882cd commit 7c66fc8
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 23 deletions.
1 change: 1 addition & 0 deletions build.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ def java_omero(args):
command = [ find_java() ]
p = os.path.join( os.path.curdir, "lib", "log4j-build.xml")
command.append("-Dlog4j.configuration=%s" % p)
command.append("-Dbuild.py=true")
command.extend( calculate_memory_args() )
command.extend(["omero"])
command.extend(choose_omero_version())
Expand Down
13 changes: 13 additions & 0 deletions components/antlib/resources/global.xml
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,19 @@
<taskdef resource="net/sf/antcontrib/antlib.xml"
classpath="${lib.dir}/repository/ant-contrib-1.0b3.jar"/>

<!-- prevent direct use of ant -->
<if><not><isset property="build.py"/></not>
<then>
<fail> ERROR!

========================================================
Please use ./build.py which uses the ant version bundled
with OMERO.
========================================================
</fail>
</then>
</if>

<!-- Define properties :
The user's environment (env) overrides all other
variables, then comes the user defined
Expand Down
77 changes: 56 additions & 21 deletions components/tools/OmeroPy/src/omero/plugins/group.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,16 @@ def _configure(self, parser):
list.add_argument("--long", action="store_true", help = "Print comma-separated list of all groups, not just counts")

copy = parser.add(sub, self.copy, "Copy the members of one group to another group")
copy.add_argument("from_group", type=long, help = "Source group ID whose members will be copied")
copy.add_argument("to_group", type=long, help = "Target group ID which will have new members added")
copy.add_argument("from_group", help = "Source group ID or NAME whose members will be copied")
copy.add_argument("to_group", help = "Target group ID or NAME which will have new members added")

insert = parser.add(sub, self.insert, "Insert one or more users into a group")
insert.add_argument("GROUP", metavar="group", type=long, help = "ID of the group which is to have users added")
insert.add_argument("user", type=long, nargs="+", help = "ID of user to be inserted")
insert.add_argument("GROUP", metavar="group", help = "ID or NAME of the group which is to have users added")
insert.add_argument("USER", metavar="user", nargs="+", help = "ID or NAME of user to be inserted")

remove = parser.add(sub, self.remove, "remove one or more users from a group")
remove.add_argument("GROUP", metavar="group", help = "ID or NAME of the group which is to have users removed")
remove.add_argument("USER", metavar="user", nargs="+", help = "ID or NAME of user to be removed")

def parse_perms(self, args):
perms = getattr(args, "perms", None)
Expand Down Expand Up @@ -97,6 +101,31 @@ def add(self, args):
except omero.ServerError, se:
self.ctx.die(4, "%s: %s" % (type(se), se.message))

def find_group(self, admin, id_or_name):
import omero
try:
try:
gid = long(id_or_name)
g = admin.getGroup(gid)
except ValueError:
g = admin.lookupGroup(id_or_name)
gid = g.id.val
return gid, g
except omero.ApiUsageException:
self.ctx.die(503, "Unknown group: %s" % gid)

def find_user(self, admin, id_or_name):
import omero
try:
try:
uid = long(id_or_name)
u = admin.getExperimenter(uid)
except ValueError:
u = admin.lookupExperimenter(id_or_name)
uid = u.id.val
return uid, u
except omero.ApiUsageException:
self.ctx.die(503, "Unknown experimenter: %s" % uid)

def perms(self, args):

Expand All @@ -108,16 +137,7 @@ def perms(self, args):
c = self.ctx.conn(args)
a = c.sf.getAdminService()

try:
try:
gid = long(args.id_or_name)
g = a.getGroup(gid)
except ValueError:
g = a.lookupGroup(args.id_or_name)
gid = g.id.val
except omero.ApiUsageException:
self.ctx.die(503, "Unknown group: %s" % gid)

gid, g = self.find_group(admin, args.id_or_name)

old_perms = str(g.details.permissions)
if old_perms == perms:
Expand Down Expand Up @@ -155,8 +175,8 @@ def copy(self, args):
import omero
c = self.ctx.conn(args)
a = c.sf.getAdminService()
f_grp = a.getGroup(args.from_group)
t_grp = a.getGroup(args.to_group)
f_gid, f_grp = self.find_group(a, args.from_group)
t_gid, t_grp = self.find_group(a, args.to_group)

to_add = [(x.child.id.val, x.child.omeName.val) for x in f_grp.copyGroupExperimenterMap()]
already = [x.child.id.val for x in t_grp.copyGroupExperimenterMap()]
Expand All @@ -165,22 +185,37 @@ def copy(self, args):
self.ctx.out("%s already in group %s" % (add[1], args.to_group))
to_add.remove(add)
self.addusersbyid(c, t_grp, [x[0] for x in to_add])
self.ctx.out("%s coped to %s" % (args.from_group, args.to_group))
self.ctx.out("%s copied to %s" % (args.from_group, args.to_group))

def insert(self, args):
import omero
c = self.ctx.conn(args)
a = c.sf.getAdminService()
grp = a.getGroup(args.GROUP)
self.addusersbyid(c, grp, args.user)
self.ctx.out("Added %s users to %s" % (len(args.user), args.GROUP))
gid, grp = self.find_group(a, args.GROUP)
uids = [self.find_user(a, x)[0] for x in args.USER]
self.addusersbyid(c, grp, uids)

def remove(self, args):
import omero
c = self.ctx.conn(args)
a = c.sf.getAdminService()
gid, grp = self.find_group(a, args.GROUP)
uids = [self.find_user(a, x)[0] for x in args.USER]
self.removeusersbyid(c, grp, uids)

def addusersbyid(self, c, group, users):
import omero
a = c.sf.getAdminService()
for add in list(users):
a.addGroups(omero.model.ExperimenterI(add, False), [group])
self.ctx.out("Added %s" % add)
self.ctx.out("Added %s to group %s" % (add, group.id.val))

def removeusersbyid(self, c, group, users):
import omero
a = c.sf.getAdminService()
for add in list(users):
a.removeGroups(omero.model.ExperimenterI(add, False), [group])
self.ctx.out("Removed %s from group %s" % (add, group.id.val))

try:
register("group", GroupControl, HELP)
Expand Down
13 changes: 11 additions & 2 deletions components/tools/OmeroPy/src/omero/plugins/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,17 @@ def list(self, args):
for user in users:
row = [user.id.val, user.omeName.val, user.firstName.val, user.lastName.val]
row.append(user.email and user.email.val or "")
member_of = [str(x.parent.id.val) for x in user.copyGroupExperimenterMap() if not x.owner.val]
leader_of = [str(x.parent.id.val) for x in user.copyGroupExperimenterMap() if x.owner.val]
member_of = []
leader_of = []
for x in user.copyGroupExperimenterMap():
if not x:
continue
gid = str(x.parent.id.val)
if x.owner.val:
leader_of.append(gid)
else:
member_of.append(gid)

if member_of:
row.append(",".join(member_of))
else:
Expand Down

0 comments on commit 7c66fc8

Please sign in to comment.