From a071bd04020e251c0fb65fb80f79dcfc1e80d28e Mon Sep 17 00:00:00 2001
From: Rafael Monnerat <rafael@nexedi.com>
Date: Wed, 24 Feb 2010 04:01:55 +0000
Subject: [PATCH] Added support to svn checkout.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@33072 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Subversion/SubversionClient.py    |  5 ++++-
 product/ERP5Subversion/Tool/SubversionTool.py | 21 ++++++++++++++++++-
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/product/ERP5Subversion/SubversionClient.py b/product/ERP5Subversion/SubversionClient.py
index 66f1b204f6..d25e458495 100644
--- a/product/ERP5Subversion/SubversionClient.py
+++ b/product/ERP5Subversion/SubversionClient.py
@@ -318,7 +318,10 @@ try:
     
     def switch(self, path, url):
       return self.client.switch(path=path, url=url)
-    
+
+    def checkout(self, path, url):
+      return self.client.checkout(path=path, url=url)
+
     def log(self, path):
       try:
         log_list = self.client.log(path)
diff --git a/product/ERP5Subversion/Tool/SubversionTool.py b/product/ERP5Subversion/Tool/SubversionTool.py
index af6e05f3f2..554331a333 100644
--- a/product/ERP5Subversion/Tool/SubversionTool.py
+++ b/product/ERP5Subversion/Tool/SubversionTool.py
@@ -516,7 +516,26 @@ class SubversionTool(BaseTool, UniqueObject, Folder):
       url = url[:-1]
     # Update from SVN
     client.switch(path=path, url=url)
-  
+
+  security.declareProtected('Import/Export objects', 'checkout')
+  def checkout(self, business_template, url):
+    """ Checkout business configuration from SVN into 
+        the first Preferres Subversion Working Copy.
+    """
+    wc_list = self.getPortalObject().portal_preferences\
+    .getPreferredSubversionWorkingCopyList()
+    if not wc_list or len(wc_list) == 0 :
+      raise SubversionPreferencesError, \
+      'Please set at least one Subversion Working Copy in preferences first.'
+    bt_name = business_template.getTitle()
+    wc_path = os.path.join(wc_list[0], bt_name)
+    path = self._getWorkingPath(wc_path)
+    client = self._getClient()
+    if url[-1] != '/' :
+      url += '/' 
+    url += bt_name
+    client.checkout(path=path, url=url)
+
   security.declareProtected('Import/Export objects', 'add')
   # path can be a list or not (relative or absolute)
   def add(self, path, business_template=None):
-- 
2.30.9