Make root API serialisable

This commit is contained in:
Thomas Wade 2020-04-22 16:29:06 +09:30
parent d4fff8d61a
commit b3a5b4acdb

View File

@ -449,7 +449,6 @@ class FAAPI:
""" """
self._cookies = None self._cookies = None
self._req = requests.session() self._req = requests.session()
self._driver = None
self.logged_in = False self.logged_in = False
self.username = None self.username = None
self._usercache = {} self._usercache = {}
@ -468,16 +467,16 @@ class FAAPI:
if not cookies: if not cookies:
# Try sign in to FA # Try sign in to FA
self._driver = webdriver.Chrome() driver = webdriver.Chrome()
self._driver.get(FA_BASE_URL + '/login') driver.get(FA_BASE_URL + '/login')
# Wait until our username is visible on the top banner # Wait until our username is visible on the top banner
while not self._driver.find_elements_by_id('my-username'): while not driver.find_elements_by_id('my-username'):
pass pass
# Extract the cookies and stop the driver # Extract the cookies and stop the driver
self._cookies = self._driver.get_cookies() self._cookies = driver.get_cookies()
self._driver.close() driver.close()
else: else:
self._cookies = cookies self._cookies = cookies
@ -564,3 +563,17 @@ class FAAPI:
if not submission._api: if not submission._api:
submission._api = self submission._api = self
return submission return submission
def __getstate__(self):
# Get a copy of the object state without the requests session
state = self.__dict__.copy()
del(state['req'])
return state
def __setstate__(self, state):
# Set up the object with the given state
self.__dict__.update(state)
# Create a new requests session
self._req = requests.session()