[Erp5-report] r35693 rafael - in /erp5/trunk/products/ERP5: Tool/ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu May 27 19:06:49 CEST 2010
Author: rafael
Date: Thu May 27 19:06:47 2010
New Revision: 35693
URL: http://svn.erp5.org?rev=35693&view=rev
Log:
This utility method verify which repository (from a list) the business template is available, returning the appropriate url.
Modified:
erp5/trunk/products/ERP5/Tool/TemplateTool.py
erp5/trunk/products/ERP5/tests/testBusinessTemplate.py
Modified: erp5/trunk/products/ERP5/Tool/TemplateTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/TemplateTool.py?rev=35693&r1=35692&r2=35693&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/TemplateTool.py [utf8] (original)
+++ erp5/trunk/products/ERP5/Tool/TemplateTool.py [utf8] Thu May 27 19:06:47 2010
@@ -44,6 +44,7 @@
from Products.ERP5 import _dtmldir
from cStringIO import StringIO
from urllib import pathname2url, urlopen, splittype, urlretrieve
+import urllib2
import re
from xml.dom.minidom import parse
from xml.parsers.expat import ExpatError
@@ -1051,4 +1052,36 @@
opreation_log.append('Not found in repositories %s' % template_name)
return opreation_log
+ security.declareProtected(Permissions.ManagePortal,
+ 'getBusinessTemplateUrl')
+ def getBusinessTemplateUrl(self, base_url_list, bt5_title):
+ """
+ This method verify if the business template are available
+ into one url (repository).
+ """
+ # This list could be preconfigured at some properties or
+ # at preferences.
+ for base_url in base_url_list:
+ url = "%s/%s" % (base_url, bt5_title)
+ if base_url == "INSTANCE_HOME_REPOSITORY":
+ url = "file://%s/bt5/%s" % (getConfiguration().instancehome,
+ bt5_title)
+ LOG('ERP5', INFO, "TemplateTool: INSTANCE_HOME_REPOSITORY is %s." \
+ % url)
+ try:
+ urllib2.urlopen(url)
+ return url
+ except (urllib2.HTTPError, OSError):
+ # XXX Try again with ".bt5" in case the folder format be used
+ # Instead tgz one.
+ url = "%s.bt5" % url
+ try:
+ urllib2.urlopen(url)
+ return url
+ except (urllib2.HTTPError, OSError):
+ pass
+ LOG('ERP5', INFO, 'TemplateTool: %s was not found into the url list: '
+ '%s.' % (bt5_title, base_url_list))
+ return None
+
InitializeClass(TemplateTool)
Modified: erp5/trunk/products/ERP5/tests/testBusinessTemplate.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testBusinessTemplate.py?rev=35693&r1=35692&r2=35693&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testBusinessTemplate.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testBusinessTemplate.py [utf8] Thu May 27 19:06:47 2010
@@ -6385,6 +6385,40 @@
self.assertFalse(getattr(portal.some_file, 'isClassOverriden', False))
self.assertFalse(getattr(portal.another_file, 'isClassOverriden', False))
+ def test_getBusinessTemplateUrl(self):
+ """ Test if this method can find which repository is the business
+ template
+ """
+ # How to define an existing and use INSTANCE_HOME_REPOSITORY?
+ url_list = [ 'https://svn.erp5.org/repos/public/erp5/trunk/bt5',
+ 'http://www.erp5.org/dists/snapshot/bt5',
+ 'http://www.erp5.org/dists/release/5.4.5/bt5',
+ 'file:///opt/does/not/exist',
+ "INSTANCE_HOME_REPOSITORY"]
+
+ exist_bt5 = 'erp5_base'
+ not_exist_bt5 = "erp5_not_exist"
+ template_tool = self.portal.portal_templates
+ getBusinessTemplateUrl = template_tool.getBusinessTemplateUrl
+
+ # Test Exists
+ self.assertEquals(getBusinessTemplateUrl(url_list, exist_bt5),
+ 'https://svn.erp5.org/repos/public/erp5/trunk/bt5/erp5_base')
+ self.assertEquals(getBusinessTemplateUrl(url_list[1:], exist_bt5),
+ 'http://www.erp5.org/dists/snapshot/bt5/erp5_base.bt5')
+ self.assertEquals(getBusinessTemplateUrl(url_list[2:], exist_bt5),
+ 'http://www.erp5.org/dists/release/5.4.5/bt5/erp5_base.bt5')
+ self.assertEquals(getBusinessTemplateUrl(url_list[3:], exist_bt5), None)
+ # XXX Remains test for INSTANCE_HOME_REPOSITORY and file:/// where erp5_base
+ # exists.
+
+ # Test Not exists
+ self.assertEquals(getBusinessTemplateUrl(url_list, not_exist_bt5), None)
+ self.assertEquals(getBusinessTemplateUrl(url_list[1:], not_exist_bt5), None)
+ self.assertEquals(getBusinessTemplateUrl(url_list[2:], not_exist_bt5), None)
+ self.assertEquals(getBusinessTemplateUrl(url_list[3:], not_exist_bt5), None)
+ self.assertEquals(getBusinessTemplateUrl(url_list[4:], not_exist_bt5), None)
+
def test_type_provider(self):
self.portal._setObject('dummy_type_provider', DummyTypeProvider())
type_provider = self.portal.dummy_type_provider
More information about the Erp5-report
mailing list