From 1a9de5a90fd73a5eebee00dd1e352db89d9e4e16 Mon Sep 17 00:00:00 2001 From: Christophe Dumez <christophe@nexedi.com> Date: Mon, 3 Apr 2006 14:10:57 +0000 Subject: [PATCH] - Worked on commit (login/cookie is working + SSL Trust) git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@6431 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Subversion/SubversionClient.py | 20 ++++++++++++++++--- product/ERP5Subversion/Tool/SubversionTool.py | 3 --- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/product/ERP5Subversion/SubversionClient.py b/product/ERP5Subversion/SubversionClient.py index fcf6e402cd..a4d559eed4 100644 --- a/product/ERP5Subversion/SubversionClient.py +++ b/product/ERP5Subversion/SubversionClient.py @@ -59,9 +59,13 @@ try: class SubversionLoginError(SubversionError): """Raised when an authentication is required. """ + # Declarative Security + security = ClassSecurityInfo() + def __init__(self, realm = None): self._realm = realm + security.declarePublic('getRealm') def getRealm(self): return self._realm @@ -105,7 +109,7 @@ try: class GetLoginCallback(Callback): def __call__(self, realm, username, may_save): user, password = self.client.getLogin(realm) - if user is None: + if not username or not password: self.client.setException(SubversionLoginError(realm)) #raise SubversionLoginError(realm) return False, '', '', False @@ -197,10 +201,14 @@ try: #self.client.callback_ssl_server_trust_prompt = self.callback_ssl_server_trust_prompt self.creation_time = time.time() self.__dict__.update(kw) + self.exception = None def getLogMessage(self): return self.log_message + def getLogin(self, realm): + return self.aq_parent._getLogin(realm) + def _getPreferences(self): self.working_path = self.getPortalObject().portal_preferences.getPreference('subversion_working_copy') if not self.working_path : @@ -237,8 +245,12 @@ try: self._getPreferences() try: return self.client.checkin(path, log_message=log_message, recurse=recurse) - except pysvn.ClientError: - raise self.getException() + except pysvn.ClientError, error: + excep = self.getException() + if excep: + raise excep + else: + raise error def status(self, path, **kw): # Since plain Python classes are not convenient in Zope, convert the objects. @@ -258,6 +270,8 @@ try: InitializeClass(SubversionSSLTrustError) allow_class(SubversionSSLTrustError) + InitializeClass(SubversionLoginError) + allow_class(SubversionLoginError) except ImportError: from zLOG import LOG, WARNING diff --git a/product/ERP5Subversion/Tool/SubversionTool.py b/product/ERP5Subversion/Tool/SubversionTool.py index 14a7ebd2c5..f84cdf6600 100644 --- a/product/ERP5Subversion/Tool/SubversionTool.py +++ b/product/ERP5Subversion/Tool/SubversionTool.py @@ -386,9 +386,6 @@ class SubversionTool(UniqueObject, Folder): expires = (DateTime() + 1).toZone('GMT').rfc822() response.setCookie(self.login_cookie_name, value, path = '/', expires = expires) -# def setLogin(self, username, passwd): -# self.login = (username, passwd) - def _getLogin(self, target_realm): request = self.REQUEST cookie = request.get(self.login_cookie_name) -- 2.30.9