def getAssociation(self, server_url, handle=None): """ This method returns an C{L{Association <openid.association.Association>}} object from storage that matches the server URL and, if specified, handle. It returns C{None} if no such association is found or if the matching association is expired. If no handle is specified, the store may return any association which matches the server URL. If multiple associations are valid, the recommended return value for this method is the one that will remain valid for the longest duration. """ query = Association.all().filter('url', server_url) if handle: query.filter('handle', handle) results = query.fetch(1) if results: association = OpenIDAssociation.deserialize(results[0].association) if association.getExpiresIn() > 0: # hasn't expired yet return association return None