Fix openid manager pickle dumping

pickle dumps are binary
Fixes https://sentry.galaxyproject.org/sentry/main/issues/503803/:
```
TypeError: write() argument must be str, not bytes
  File "galaxy/web/framework/middleware/sentry.py", line 43, in __call__
    iterable = self.application(environ, start_response)
  File "/cvmfs/main.galaxyproject.org/venv/lib/python3.6/site-packages/paste/recursive.py", line 85, in __call__
    return self.application(environ, start_response)
  File "galaxy/web/framework/middleware/statsd.py", line 34, in __call__
    req = self.application(environ, start_response)
  File "/cvmfs/main.galaxyproject.org/venv/lib/python3.6/site-packages/paste/httpexceptions.py", line 640, in __call__
    return self.application(environ, start_response)
  File "galaxy/web/framework/base.py", line 143, in __call__
    return self.handle_request(environ, start_response)
  File "galaxy/web/framework/base.py", line 222, in handle_request
    body = method(trans, **kwargs)
  File "galaxy/webapps/galaxy/controllers/openid.py", line 30, in openid_auth
    consumer = self.openid_manager.get_consumer(trans)
  File "galaxy/openid/openid_manager.py", line 58, in get_consumer
    return consumer.Consumer(self.get_session(trans), self.store)
  File "galaxy/openid/openid_manager.py", line 50, in get_session
    pickle.dump(dict(), open(session_file, 'w'))
```
This commit is contained in:
mvdbeek
2020-02-07 13:47:06 +01:00
parent f597185589
commit f01ca59ebe
+3 -3
View File
@@ -47,12 +47,12 @@ class OpenIDManager(object):
def get_session(self, trans):
session_file = os.path.join(self.session_path, str(trans.galaxy_session.id))
if not os.path.exists(session_file):
pickle.dump(dict(), open(session_file, 'w'))
return pickle.load(open(session_file))
pickle.dump(dict(), open(session_file, 'wb'))
return pickle.load(open(session_file, 'rb'))
def persist_session(self, trans, oidconsumer):
session_file = os.path.join(self.session_path, str(trans.galaxy_session.id))
pickle.dump(oidconsumer.session, open(session_file, 'w'))
pickle.dump(oidconsumer.session, open(session_file, 'wb'))
def get_consumer(self, trans):
return consumer.Consumer(self.get_session(trans), self.store)