Skip to content

Commit 6dde706

Browse files
authored
Merge pull request #400 from jburel/review_session
Session ID and constructor
2 parents eea0b87 + 64bf1f9 commit 6dde706

File tree

2 files changed

+48
-5
lines changed

2 files changed

+48
-5
lines changed

src/omero/gateway/__init__.py

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1484,7 +1484,7 @@ class _BlitzGateway (object):
14841484

14851485
def __init__(self, username=None, passwd=None, client_obj=None, group=None,
14861486
clone=False, try_super=False, host=None, port=None,
1487-
extra_config=None, secure=False, anonymous=True,
1487+
extra_config=None, secure=None, anonymous=True,
14881488
useragent=None, userip=None):
14891489
"""
14901490
Create the connection wrapper.
@@ -1532,14 +1532,43 @@ def __init__(self, username=None, passwd=None, client_obj=None, group=None,
15321532
self.ice_config = [os.path.abspath(str(x)) for x in [_f for _f in self.ice_config if _f]]
15331533

15341534
self.host = host
1535+
if self.c is not None:
1536+
hc = self.c.getProperty("omero.host")
1537+
if self.host is None:
1538+
self.host = hc
1539+
elif hc != self.host:
1540+
raise Exception("hosts %s and %s do not match" % (hc, self.host))
15351541
self.port = port
1542+
if self.c is not None:
1543+
pc = self.c.getProperty("omero.port")
1544+
if self.port is None:
1545+
self.port = pc
1546+
elif pc != self.port:
1547+
raise Exception("ports %s and %s do not match" % (pc, self.port))
1548+
if self.c is None:
1549+
if secure is None:
1550+
secure = False
1551+
else:
1552+
cs = self.c.isSecure()
1553+
if secure is None:
1554+
secure = cs
1555+
else:
1556+
# Check that the values match
1557+
if secure != cs:
1558+
raise Exception("Secure flag %s and %s do not match" % (secure, cs))
1559+
15361560
self.secure = secure
15371561
self.useragent = useragent
15381562
self.userip = userip
15391563

15401564
self._sessionUuid = None
15411565
self._session_cb = None
15421566
self._session = None
1567+
if self.c is not None:
1568+
try:
1569+
self._sessionUuid = self.c.getSessionId()
1570+
except omero.ClientError: # no session available
1571+
pass
15431572
self._lastGroupId = None
15441573
self._anonymous = anonymous
15451574
self._defaultOmeroGroup = None
@@ -1943,6 +1972,7 @@ def close(self, hard=True): # pragma: no cover
19431972
oldC = None
19441973
self.c = None
19451974
self._session = None
1975+
self._sessionUuid = None
19461976

19471977
self._proxies = NoProxies()
19481978
logger.info("closed connection (uuid=%s)" % str(self._sessionUuid))
@@ -2036,7 +2066,7 @@ def isSecure(self):
20362066
Returns 'True' if the underlying omero.clients.BaseClient is connected
20372067
using SSL
20382068
"""
2039-
return hasattr(self.c, 'isSecure') and self.c.isSecure() or False
2069+
return self.secure
20402070

20412071
def _getSessionId(self):
20422072
return self.c.getSessionId()
@@ -2089,8 +2119,11 @@ def _resetOmeroClient(self):
20892119
logger.debug(self.ice_config)
20902120

20912121
if self.c is not None:
2092-
self.c.__del__()
2093-
self.c = None
2122+
try:
2123+
self.c.__del__()
2124+
self.c = None
2125+
except omero.ClientError: # no session available
2126+
pass
20942127

20952128
if self.host is not None:
20962129
if self.port is not None:
@@ -2132,6 +2165,15 @@ def connect(self, sUuid=None):
21322165
logger.debug("Ooops. no self._c")
21332166
return False
21342167
try:
2168+
try:
2169+
sid = self.c.getSessionId()
2170+
# we have a session already from the client
2171+
if sUuid is None or sid == sUuid:
2172+
logger.debug('connected via client')
2173+
return True
2174+
except omero.ClientError: # no session available
2175+
pass
2176+
21352177
if self._sessionUuid is None and sUuid:
21362178
self._sessionUuid = sUuid
21372179
if self._sessionUuid is not None:

src/omero/gateway/scripts/dbhelpers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ def login(self, groupname=None):
9696
if groupname is None:
9797
groupname = self.groupname
9898
client = omero.gateway.BlitzGateway(
99-
self.name, self.passwd, group=groupname, try_super=self.admin)
99+
username=self.name, passwd=self.passwd,
100+
group=groupname, try_super=self.admin)
100101
if not client.connect():
101102
print("Can not connect")
102103
return None

0 commit comments

Comments
 (0)