[Erp5-report] r39501 jerome - in /erp5/trunk/products/ERP5Type: ./ Accessor/ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Oct 25 15:23:06 CEST 2010
Author: jerome
Date: Mon Oct 25 15:23:03 2010
New Revision: 39501
URL: http://svn.erp5.org?rev=39501&view=rev
Log:
- implement get${base_category}TranslatedLogicalPath accessors.
- add missing tests for get${base_category}LogicalPath acessors.
- note an interesting behaviour in setDefault${base_category}Value
Modified:
erp5/trunk/products/ERP5Type/Accessor/Value.py
erp5/trunk/products/ERP5Type/Utils.py
erp5/trunk/products/ERP5Type/tests/testERP5Type.py
Modified: erp5/trunk/products/ERP5Type/Accessor/Value.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Accessor/Value.py?rev=39501&r1=39500&r2=39501&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Accessor/Value.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Accessor/Value.py [utf8] Mon Oct 25 15:23:03 2010
@@ -569,6 +569,7 @@ class DefaultLogicalPathGetter(BaseGette
func_code.co_varnames = ('self',)
func_code.co_argcount = 1
func_defaults = ()
+ _item_method = 'getTitle'
def __init__(self, id, key):
self._id = id
@@ -581,14 +582,18 @@ class DefaultLogicalPathGetter(BaseGette
portal_type=kw.get('portal_type',()),
checked_permission=kw.get('checked_permission', None))
if value is not None:
- return value.getLogicalPath()
- else:
- return None
+ return value.getLogicalPath(item_method=self._item_method)
+ return None
psyco.bind(__call__)
LogicalPathGetter = DefaultLogicalPathGetter
+class DefaultTranslatedLogicalPathGetter(DefaultLogicalPathGetter):
+ _item_method = "getTranslatedTitle"
+
+TranslatedLogicalPathGetter = DefaultTranslatedLogicalPathGetter
+
class IdListGetter(BaseGetter):
"""
Gets a list of reference objects uid
@@ -640,6 +645,7 @@ class LogicalPathListGetter(BaseGetter):
func_code.co_varnames = ('self',)
func_code.co_argcount = 1
func_defaults = ()
+ _item_method = 'getTitle'
def __init__(self, id, key):
self._id = id
@@ -647,7 +653,8 @@ class LogicalPathListGetter(BaseGetter):
self._key = key
def __call__(self, instance, *args, **kw):
- return [x.getLogicalPath() for x in instance._getAcquiredValueList(self._key,
+ return [x.getLogicalPath(item_method=self._item_method)
+ for x in instance._getAcquiredValueList(self._key,
spec=kw.get('spec',()),
filter=kw.get('filter', None),
portal_type=kw.get('portal_type',()),
Modified: erp5/trunk/products/ERP5Type/Utils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Utils.py?rev=39501&r1=39500&r2=39501&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Utils.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Utils.py [utf8] Mon Oct 25 15:23:03 2010
@@ -2439,12 +2439,19 @@ def createValueAccessors(property_holder
if not hasattr(property_holder, accessor_name):
property_holder.registerAccessor(accessor_name, id, Value.DefaultLogicalPathGetter, ())
property_holder.declareProtected(read_permission, accessor_name)
+ accessor_name = 'get' + UpperCase(id) + 'TranslatedLogicalPath'
+ if not hasattr(property_holder, accessor_name):
+ property_holder.registerAccessor(accessor_name, id, Value.DefaultTranslatedLogicalPathGetter, ())
+ property_holder.declareProtected(read_permission, accessor_name)
accessor_name = '_categoryGetDefault' + UpperCase(id) + 'LogicalPath'
if not hasattr(property_holder, accessor_name):
property_holder.registerAccessor(accessor_name, id, Value.DefaultLogicalPathGetter, ())
accessor_name = '_categoryGet' + UpperCase(id) + 'LogicalPath'
if not hasattr(property_holder, accessor_name):
property_holder.registerAccessor(accessor_name, id, Value.DefaultLogicalPathGetter, ())
+ accessor_name = '_categoryGet' + UpperCase(id) + 'TranslatedLogicalPath'
+ if not hasattr(property_holder, accessor_name):
+ property_holder.registerAccessor(accessor_name, id, Value.DefaultTranslatedLogicalPathGetter, ())
setter_name = 'set' + UpperCase(id) + 'Value'
if not hasattr(property_holder, setter_name):
Modified: erp5/trunk/products/ERP5Type/tests/testERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5Type.py?rev=39501&r1=39500&r2=39501&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py [utf8] Mon Oct 25 15:23:03 2010
@@ -1747,7 +1747,7 @@ class TestPropertySheet:
for View permission
"""
# Create a few categories
- region_category = self.getPortal().portal_categories.region
+ region_category = self.portal.portal_categories.region
beta_id = "beta"
beta_title = "Beta System"
beta = region_category.newContent(
@@ -1767,9 +1767,13 @@ class TestPropertySheet:
title = gamma_title, )
gamma_path = gamma.getCategoryRelativeUrl()
+ alpha = gamma.newContent(portal_type='Category',
+ id='alpha',
+ title='Alpha')
+
# Make sure categories are reindexed
transaction.commit()
- self.tic()
+ self.tic()
self.assertEquals(beta.getRelativeUrl(), 'region/beta')
@@ -1805,8 +1809,19 @@ class TestPropertySheet:
None,
foo.getRegionTitle(checked_permission=checked_permission))
- # Check getCategoryValue accessor
+ # Check getCategoryLogicalPath accesor
foo.setDefaultRegionValue(beta)
+ self.assertEquals(beta_title, foo.getRegionLogicalPath())
+
+ foo.setDefaultRegionValue(alpha)
+ self.assertEquals('Gamma System/Alpha', foo.getRegionLogicalPath())
+
+ # Check getCategoryValue accessor
+ # XXX did you know ?
+ # calling setDefaultRegionValue here would append a default region, and
+ # the region list would be [beta, alpha].
+ # bug or feature ? I don't know ...
+ foo.setRegionValue(beta)
self.assertEquals(beta, foo.getRegionValue())
self.assertEquals(
None,
@@ -2261,6 +2276,27 @@ class TestPropertySheet:
self.assertEquals('foo', doc.getTranslatedDummy())
self.assertEquals([], self.portal.Localizer.erp5_ui._translated)
+ def test_translated_category_accessors(self):
+ region_category = self.portal.portal_categories.region
+ gamma = region_category.newContent(portal_type="Category",
+ id="gamma",
+ title="Gamma System")
+ alpha = gamma.newContent(portal_type='Category',
+ id='alpha',
+ title='Alpha')
+ self.portal.Localizer = DummyLocalizer()
+ doc = self.portal.person_module.newContent(portal_type='Person',
+ region='gamma/alpha')
+
+ self.assertEquals('Alpha', doc.getRegionTranslatedTitle())
+ # the value of the category title is translated with erp5_content
+ self.assertEquals(['Alpha'], self.portal.Localizer.erp5_content._translated)
+
+ self.portal.Localizer.erp5_content._translated = []
+ self.assertEquals('Gamma System/Alpha', doc.getRegionTranslatedLogicalPath())
+ self.assertEquals(['Gamma System', 'Alpha'],
+ self.portal.Localizer.erp5_content._translated)
+
# _aq_reset should be called implicitly when the system configuration
# changes:
More information about the Erp5-report
mailing list