From 251f3107febf7808938435f2429298d088039a7a Mon Sep 17 00:00:00 2001 From: Chenxiong Qi Date: Jun 11 2018 09:44:27 +0000 Subject: Handle Bodhi login automatically This refers to what Bodhi CLI errorhandler does. The reason to handle login automatically is, in fedpkg implementation, list_overrides is called pior to save_overrides and send_request. That causes Bodhi cookies is stored, and then it results in AuthError during subsequent call, e.g. to save_overrides. So, the result behavior is similar with bodhi CLI, that is password is required to be entered only once until it is unavailable. Signed-off-by: Chenxiong Qi --- diff --git a/fedpkg/__init__.py b/fedpkg/__init__.py index 77e500e..7888a1a 100644 --- a/fedpkg/__init__.py +++ b/fedpkg/__init__.py @@ -28,7 +28,17 @@ except ImportError: if _BodhiClient is not None: + from fedora.client import AuthError + class BodhiClient(_BodhiClient): + def save_override(self, *args, **kwargs): + try: + super(BodhiClient, self).save_override(*args, **kwargs) + except AuthError: + self._session.clear() + self.csrf_token = None + super(BodhiClient, self).save_override(*args, **kwargs) + def extend_override(self, override, expiration_date): data = dict( nvr=override['nvr'], @@ -37,8 +47,14 @@ if _BodhiClient is not None: edited=override['nvr'], csrf_token=self.csrf(), ) - return self.send_request( - 'overrides/', verb='POST', auth=True, data=data) + try: + return self.send_request( + 'overrides/', verb='POST', auth=True, data=data) + except AuthError: + self._session.clear() + self.csrf_token = None + return self.send_request( + 'overrides/', verb='POST', auth=True, data=data) class Commands(pyrpkg.Commands):