Changeset 2604 in products
- Timestamp:
- Jul 2, 2010 9:52:56 AM (14 years ago)
- Location:
- quintagroup.gauth/trunk/quintagroup/gauth
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
quintagroup.gauth/trunk/quintagroup/gauth/tests.py
r2577 r2604 28 28 29 29 30 # class SafeQuery(object): 31 # def safeCall(self, serv, meth, methargs=[], methkwargs={}): 32 # print "safecall %s: serv: %s, meth: %s, methargs: %s, methkwargs: %s" % ( 33 # self, serv, meth, methargs, methkwargs) 34 # try: 35 # return meth(*methargs, **methkwargs) 36 # except gdata.service.RequestError, e: 37 # print "Token Expired -> Update it." 38 # logException("Token Expired -> Update it.") 39 # serv.ProgrammaticLogin() 40 # return meth(*methargs, **methkwargs) 41 # counter = 0 42 # class DummyServ: 43 # def ProgrammaticLogin(self, captcha_token=None, captcha_response=None): 44 # print "for '%s' called ProgrammaticLogin" % str(self) 45 # def Query(self, *args, **kwargs): 46 # global counter 47 # if counter > 3: 48 # counter = 0 49 # raise gdata.service.RequestError("Some Problem in Query") 50 # print "for '%s' called Query with args: %s, kwargs: %s" % tuple( 51 # map(str,[self,args,kwargs])) 52 # counter += 1 53 # class C(SafeQuery): 54 # serv = None 55 # def __init__(self): 56 # self.serv = DummyServ() 57 # def operation(self, a): 58 # for i in range(5): 59 # self.safeCall(self.serv, self.serv.Query, [i,], {"q": i*i}) 60 61 62 63 64 65 30 66 def test_suite(): 31 67 return unittest.TestSuite([ -
quintagroup.gauth/trunk/quintagroup/gauth/utility.py
r2603 r2604 3 3 """ 4 4 5 import logging 5 6 from zope.interface import implements 6 7 from zope.component import queryMultiAdapter, queryAdapter … … 10 11 from quintagroup.gdata.browser.configlet import IGDataConfigletSchema 11 12 13 logger = logging.getLogger('quintagroup.gauth') 14 def logException(msg, context=None): 15 logger.exception(msg) 16 if context is not None: 17 error_log = getattr(context, 'error_log', None) 18 if error_log is not None: 19 error_log.raising(sys.exc_info()) 12 20 13 21 class GAuthUtility(object): … … 34 42 35 43 36 # @property 37 # @memoize_contextless 38 # def portal(self): 39 # pps = queryMultiAdapter((self.context, self.context.REQUEST), name="plone_portal_state") 40 # return pps.portal() 44 class SafeQuery(object): 45 """ Base class for perform safe Google data service calls, 46 with automatic programming re-loginning. 47 48 So if class need automatic relogin to Google Date services, it must 49 inherit from the class and use safeQuery metho to call to services methods 50 51 For example ... 52 53 class MyGdataService(SafeQuery): 54 55 def __init__(self): 56 gauth_util = queryUtility(IGAuthInterface) 57 self.service = gdata.spreadsheet.service.SpreadsheetService( 58 gauth_util.email, gauth_util.password) 59 self.service.ProgrammaticLogin() 60 61 def fooservice(self): 62 ... 63 self.safeQuery(self.service, self.service.GetSpreadsheetsFeed, 64 title="some title") 65 ... 66 67 So call to fooservice should automatic relogin to SpreadsheetService even 68 if token expired. 69 """ 70 71 def safeQuery(self, serv, meth, *margs, **mkwargs): 72 try: 73 return meth(*margs, **mkwargs) 74 except gdata.service.RequestError, e: 75 logException("Token Expired -> Update it.") 76 if hasattr(serv, 'ProgrammaticLogin'): 77 serv.ProgrammaticLogin() 78 return meth(*margs, **mkwargs) 79 else: 80 raise 81
Note: See TracChangeset
for help on using the changeset viewer.