Commit 38807827 authored by Nikola's avatar Nikola

Merge branch 'master' of https://lab.nexedi.com/nexedi/erp5 into nikola_perspective

parents 643b4956 69d9157f
......@@ -26,9 +26,9 @@ informations = { 'processing': processing,
if informations['processing'] in ['converted', 'conversion_failed','empty']:
informations['permanent_url'] = document.Document_getPermanentUrl()
print dumps(informations) #print info before del object
print(dumps(informations)) #print info before del object
portal.portal_sessions.manage_delObjects(reference)
else:
print dumps(informations)
print(dumps(informations))
return printed
......@@ -72,4 +72,6 @@ for item_value in value_list:
sub_field_dict[item_key]['value'] = item_value
# Return the list of subfield configuration.
return sub_field_dict.values()
return sorted(
sub_field_dict.values(),
key=lambda v: v['title'])
......@@ -35,7 +35,7 @@ search_params = dict(
for brain in portal.portal_simulation.getInventoryList(**search_params):
if round(brain.total_price, precision) == 0:
print '%s has a 0 balance but some not grouped transactions.' % brain.mirror_section_relative_url
print('%s has a 0 balance but some not grouped transactions.' % brain.mirror_section_relative_url)
if fixit:
tr = brain.getObject().getParentValue()
grouped_line_list = tr.AccountingTransaction_guessGroupedLines()
......@@ -51,9 +51,9 @@ for brain in portal.portal_simulation.getInventoryList(**search_params):
portal_type=portal.getPortalAccountingMovementTypeList(),
grouping_reference=None,) if not line.getObject().getGroupingReference()])
if grouped_line_list:
print 'FIXED', grouped_line_list
print('FIXED %s' % grouped_line_list)
else:
print 'NOT FIXED'
print('NOT FIXED')
active_result = ActiveResult(
summary=context.getTitle(),
......
......@@ -78,7 +78,7 @@ for property_dict in object_list:
gap = str(gap)
if gap:
gap = gap.replace('CLASSE ', '')
print '+ %s - %s - %s' % (gap or '', title or '', description or '')
print('+ %s - %s - %s' % (gap or '', title or '', description or ''))
path = root
b = ''
for a in gap:
......@@ -96,7 +96,7 @@ for path in existing_path_list:
description = document.getDescription() or ''
gap = document.getId() or ''
title = document.getTitle() or ''
print '- %s - %s - %s' % (gap or '', title or '', description or '')
print('- %s - %s - %s' % (gap or '', title or '', description or ''))
document.getParentValue().deleteContent(document.getId())
return printed
......@@ -3387,7 +3387,7 @@ class TestAccountingExport(AccountingTestCase):
form_id='AccountingTransaction_view')
from Products.ERP5OOo.OOoUtils import OOoParser
parser = OOoParser()
parser.openFromString(ods_data)
parser.openFromBytes(ods_data)
content_xml = parser.oo_files['content.xml']
# just make sure that we have the correct account name
self.assertEqual(
......@@ -4322,7 +4322,7 @@ class TestTransactions(AccountingTestCase):
self.assertFalse(invoice_line.getGroupingReference())
self.assertFalse(payment_line.getGroupingReference())
def test_roundDebitCredit_raises_if_big_difference(self):
def test_roundDebitCredit_does_nothing_if_big_difference(self):
invoice = self._makeOne(
portal_type='Sale Invoice Transaction',
lines=(dict(source_value=self.account_module.goods_sales,
......@@ -4330,7 +4330,11 @@ class TestTransactions(AccountingTestCase):
dict(source_value=self.account_module.receivable,
source_credit=100.000001)))
invoice.newContent(portal_type='Invoice Line', quantity=1, price=100)
self.assertRaises(invoice.AccountingTransaction_roundDebitCredit)
self.assertEqual(
sorted([
m.getQuantity() for m in invoice.getMovementList(
portal_type='Sale Invoice Transaction Line')]),
[-100.032345, 100.000001])
def test_roundDebitCredit_when_payable_is_different_total_price(self):
invoice = self._makeOne(
......
......@@ -7,7 +7,7 @@ for cat in category_list:
cat.getObject().setId(newid)
except:
pass
print newid
print(newid)
print 'Categories Renamed'
print('Categories Renamed')
return printed
......@@ -7,7 +7,7 @@ for cat in category_list:
cat.getObject().setId(newid)
except:
pass
print newid
print(newid)
print 'Categories Renamed'
print('Categories Renamed')
return printed
......@@ -48,7 +48,7 @@ dane.p59=dane.p55-dane.p56
if debug:
for f in range(20,60):
n='p'+str(f)
print n,getattr(dane,n)
print(n,getattr(dane,n))
return printed
return container[report].index_html(REQUEST=context.REQUEST, RESPONSE=context.REQUEST.RESPONSE,dane=dane)
......@@ -5,7 +5,7 @@ Warning: Before using this script as zope, edit account_workflow and give Manage
#This script will REMOVE any existing accounts!!!
#comment following if you are sure
print 'Nothing done!'
print('Nothing done!')
return printed
......@@ -22,7 +22,7 @@ for category in gap_root.getCategoryMemberValueList():
acc = account_module.newContent(title='%s %s' % (category.getId(),category.getTitle()),\
gap_value = category)
acc.validate()
print 'acc created'
print('acc created')
return printed
......@@ -251,7 +251,7 @@ for line in gap_text.splitlines():
cpath += n
path.append(cpath)
parent = gap.restrictedTraverse('/'.join(path))
print 'Added to ',parent
print('Added to ',parent)
parent.newContent(id=num, title=descr)
......
......@@ -90,23 +90,22 @@ Test Account GAP Parallel listfield.
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='field_my_gap_list']//div[@data-gadget-scope='PARALLEL_SUB_FIELD_0']//label[@for='subfield_field_my_gap_list_my_country/my_accounting_standards' and text()='GAP - My Accounting Standards']</td>
<td>//div[@data-gadget-scope='field_my_gap_list']//div[@data-gadget-scope='PARALLEL_SUB_FIELD_0']//label[@for='subfield_field_my_gap_list_another_country/another_standards' and text()='GAP - Another Standards']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='field_my_gap_list']//div[@data-gadget-scope='PARALLEL_SUB_FIELD_0']//p[text()='1 - Equity Accounts']</td>
<td>//div[@data-gadget-scope='field_my_gap_list']//div[@data-gadget-scope='PARALLEL_SUB_FIELD_0']//p[text()='1 - Dummy Account']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='field_my_gap_list']//div[@data-gadget-scope='PARALLEL_SUB_FIELD_1']//label[@for='subfield_field_my_gap_list_another_country/another_standards' and text()='GAP - Another Standards']</td>
<td>//div[@data-gadget-scope='field_my_gap_list']//div[@data-gadget-scope='PARALLEL_SUB_FIELD_1']//label[@for='subfield_field_my_gap_list_my_country/my_accounting_standards' and text()='GAP - My Accounting Standards']</td>
<td></td>
</tr>
<tr>
<td>assertElementPresent</td>
<td>//div[@data-gadget-scope='field_my_gap_list']//div[@data-gadget-scope='PARALLEL_SUB_FIELD_1']//p[text()='1 - Dummy Account']</td>
<td>//div[@data-gadget-scope='field_my_gap_list']//div[@data-gadget-scope='PARALLEL_SUB_FIELD_1']//p[text()='1 - Equity Accounts']</td>
<td></td>
</tr>
......
......@@ -305,7 +305,8 @@ class TestConversionInSimulation(AccountingTestCase):
delivery_movement = delivery_applied_rule.contentValues()[0]
invoice_applied_rule = delivery_movement.contentValues()[0]
invoice_movement = invoice_applied_rule.contentValues()[0]
invoice_transaction_applied_rule = invoice_movement.contentValues()[0]
invoice_transaction_applied_rule = [x for x in invoice_movement.contentValues() \
if x.getSpecialiseReference() == 'default_invoice_transaction_rule'][0]
invoice_transaction_movement_1 =\
invoice_transaction_applied_rule.contentValues()[0]
self.assertEqual(currency,
......@@ -397,7 +398,8 @@ class TestConversionInSimulation(AccountingTestCase):
delivery_movement = delivery_applied_rule.contentValues()[0]
invoice_applied_rule = delivery_movement.contentValues()[0]
invoice_movement = invoice_applied_rule.contentValues()[0]
invoice_transaction_applied_rule = invoice_movement.contentValues()[0]
invoice_transaction_applied_rule = [x for x in invoice_movement.contentValues() \
if x.getSpecialiseReference() == 'default_invoice_transaction_rule'][0]
invoice_transaction_movement =\
invoice_transaction_applied_rule.contentValues()[0]
self.assertEqual(currency,
......@@ -684,7 +686,8 @@ class TestConversionInSimulation(AccountingTestCase):
delivery_movement = delivery_applied_rule.contentValues()[0]
invoice_applied_rule = delivery_movement.contentValues()[0]
invoice_movement = invoice_applied_rule.contentValues()[0]
invoice_transaction_applied_rule = invoice_movement.contentValues()[0]
invoice_transaction_applied_rule = [x for x in invoice_movement.contentValues() \
if x.getSpecialiseReference() == 'default_invoice_transaction_rule'][0]
result_list = []
for invoice_transaction_movement in invoice_transaction_applied_rule.contentValues():
result_list.append((invoice_transaction_movement.getSource(), invoice_transaction_movement.getDestinationTotalAssetPrice()))
......@@ -788,7 +791,8 @@ class TestConversionInSimulation(AccountingTestCase):
delivery_movement = delivery_applied_rule.contentValues()[0]
invoice_applied_rule = delivery_movement.contentValues()[0]
invoice_movement = invoice_applied_rule.contentValues()[0]
invoice_transaction_applied_rule = invoice_movement.contentValues()[0]
invoice_transaction_applied_rule = [x for x in invoice_movement.contentValues() \
if x.getSpecialiseReference() == 'default_invoice_transaction_rule'][0]
result_list = []
for invoice_transaction_movement in invoice_transaction_applied_rule.contentValues():
result_list.append((invoice_transaction_movement.getSource(), invoice_transaction_movement.getSourceTotalAssetPrice()))
......
......@@ -581,12 +581,24 @@ class TestCurrencyExchangeCell(CurrencyExchangeTestCase):
euro_to_usd.setPriceCurrencyValue(usd)
self.assertEqual(2, len(euro_to_usd.contentValues()))
# cell range is like this:
self.assertEqual([
# cell range is like this, matrix cell range does not have ordering
# of the keys, only asCellRange script has.
self.assertEqual(
euro_to_usd.CurrencyExchangeLine_asCellRange(base_id='path'),
(
['currency_exchange_type/type_a', 'currency_exchange_type/type_b'],
['resource/%s' % euro.getRelativeUrl()],
['price_currency/%s' % usd.getRelativeUrl()],
], euro_to_usd.getCellRange(base_id='path'))
)
)
self.assertEqual(
[sorted(r) for r in euro_to_usd.getCellRange(base_id='path')],
[
['currency_exchange_type/type_a', 'currency_exchange_type/type_b'],
['resource/%s' % euro.getRelativeUrl()],
['price_currency/%s' % usd.getRelativeUrl()],
]
)
type_a_cell = euro_to_usd.getCell(
'currency_exchange_type/type_a',
......
container.REQUEST.RESPONSE.setHeader('content-type', 'text/html')
print '<html><head><meta http-equiv="refresh" content="%s"></head><body>' % refresh_interval
print('<html><head><meta http-equiv="refresh" content="%s"></head><body>' % refresh_interval)
for table in 'message', 'message_queue':
q = """SELECT count(*) AS %(table)s, method_id, processing_node AS node, min(priority) AS min_pri, max(priority) AS max_pri
FROM %(table)s GROUP BY method_id, processing_node ORDER BY node""" % dict(table=table)
print "<table border=\"\" style=\"font-size:XX-small;\"><tbody> <tr><th>%s</th> <th>method_id</th> <th>node</th> <th>min_pri</th> <th>max_pri</th> </tr>" % table
print("<table border=\"\" style=\"font-size:XX-small;\"><tbody> <tr><th>%s</th> <th>method_id</th> <th>node</th> <th>min_pri</th> <th>max_pri</th> </tr>" % table)
for row in context.cmf_activity_sql_connection.manage_test(q):
print '<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td</tr>' % (row[table], row['method_id'], row['node'], row['min_pri'], row['max_pri'])
print '</tbody> </table> <br/>'
print('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td</tr>' % (row[table], row['method_id'], row['node'], row['min_pri'], row['max_pri']))
print('</tbody> </table> <br/>')
return printed
......@@ -10,14 +10,14 @@ for security_uid_field in security_uid_field_list:
print(">> useless uids in roles_and_users table <<\n")
if len(referenced_uid_set) > 0:
for row in req("select * from roles_and_users where uid not in %s" + tuple(referenced_uid_set)):
print row.uid, row.local_roles_group_id, row.allowedRolesAndUsers
print(row.uid, row.local_roles_group_id, row.allowedRolesAndUsers)
print("\n>> uids that should be in roles_and_users table <<\n")
all_uid_set = {row.uid for row in req("select uid from roles_and_users")}
for security_uid_field in security_uid_field_list:
for row in req("select %s, relative_url from catalog where %s not in %s" % (security_uid_field, security_uid_field, tuple(all_uid_set))):
print security_uid_field, getattr(row, security_uid_field, None), row.relative_url
print(security_uid_field, getattr(row, security_uid_field, None), row.relative_url)
print("\n>> END <<")
return printed
......@@ -6,18 +6,18 @@ u = getSecurityManager().getUser()
user_value = u.getUserValue()
if user_value is None:
print 'User ID:', u.getId()
print('User ID:', u.getId())
else:
print 'User ID:', u.getId(), user_value.getPath()
print('User ID:', u.getId(), user_value.getPath())
login_value = u.getLoginValue()
if login_value is None:
print 'Login:', u.getUserName()
print('Login:', u.getUserName())
else:
print 'Login:', u.getUserName(), login_value.getPath()
print 'Is owner:', u.allowed(context,('Owner',))
print 'User roles:', u.getRoles()
print 'User roles in context:', u.getRolesInContext(context)
print 'Permissions:'
print('Login:', u.getUserName(), login_value.getPath())
print('Is owner:', u.allowed(context,('Owner',)))
print('User roles:', u.getRoles())
print('User roles in context:', u.getRolesInContext(context))
print('Permissions:')
for permission in [
'Access contents information',
'Add portal content',
......@@ -26,25 +26,25 @@ for permission in [
'View',
'Manage portal',
]:
print " ", permission, u.has_permission(permission, context)
print(" ", permission, u.has_permission(permission, context))
print
print()
try:
print "User groups:\n", pformat(sorted(u.getGroups()))
print("User groups:\n", pformat(sorted(u.getGroups())))
except AttributeError:
print 'no getGroups'
print('no getGroups')
print
print 'Local roles on document:\n', pformat(context.get_local_roles())
print()
print('Local roles on document:\n', pformat(context.get_local_roles()))
print '''
print('''
----------------
Security mapping
----------------'''
----------------''')
if u.getId() is not None:
try:
print context.Base_viewSecurityMappingAsUser(u.getId())
print(context.Base_viewSecurityMappingAsUser(u.getId()))
except Unauthorized:
print "user doesn't have permission to security mapping in this context"
print("user doesn't have permission to security mapping in this context")
return printed
......@@ -16,12 +16,12 @@ for method_id, base_category_list in getSecurityCategoryMapping():
security_category_dict.setdefault(tuple(base_category_list), []).extend(
getattr(context, method_id)(base_category_list, login, context, ''))
except Exception: # XXX: it is not possible to log message with traceback from python script
print 'It was not possible to invoke method %s with base_category_list %s'%(method_id, base_category_list)
print('It was not possible to invoke method %s with base_category_list %s'%(method_id, base_category_list))
for base_category_list, category_value_list in security_category_dict.items():
print 'base_category_list:', base_category_list
print('base_category_list: %s' % (base_category_list,))
for category_dict in category_value_list:
print '-> category_dict:', category_dict
print '-->', group_id_list_generator(category_order=base_category_list,
**category_dict)
print('-> category_dict: %s' % category_dict)
print('--> %s' % group_id_list_generator(category_order=base_category_list,
**category_dict))
return printed
......@@ -20,7 +20,7 @@ if context.getPortalType() == 'Alarm':
else:
active_process = context.portal_activities.newActiveProcess().getPath()
ERP5Site_checkDataWithScript = context.portal_activities.ERP5Site_checkDataWithScript
print 'Results will be saved to %s' % active_process
print('Results will be saved to %s' % active_process)
checkTopLevel()
ERP5Site_checkDataWithScript(
......
for builder in sorted(context.getPortalObject().portal_deliveries.contentValues(),
key=lambda x:x.getTitle()):
print builder.getId()
print " Title: %s" % (builder.getTitle())
print " Simulation Select Method: %s" % (builder.getSimulationSelectMethodId())
print " Delivery Select Method: %s" % (builder.getDeliverySelectMethodId())
print " After Generation Script: %s" % (builder.getDeliveryAfterGenerationScriptId())
print
print(builder.getId())
print(" Title: %s" % (builder.getTitle()))
print(" Simulation Select Method: %s" % (builder.getSimulationSelectMethodId()))
print(" Delivery Select Method: %s" % (builder.getDeliverySelectMethodId()))
print(" After Generation Script: %s" % (builder.getDeliveryAfterGenerationScriptId()))
print()
for mg in sorted(builder.contentValues(), key=lambda x:x.getTitle()):
print builder.getId()
print " ", "\n ".join([x for x in (
print(builder.getId())
print(" ", "\n ".join([x for x in (
"Id: %s" % mg.getId(),
"Title: %s" % mg.getTitle(),
"Type: %s" % mg.getPortalType(),
......@@ -17,7 +17,7 @@ for builder in sorted(context.getPortalObject().portal_deliveries.contentValues(
"Tested Properties: %r" % mg.getTestedPropertyList(),
"Update Always: %r" % mg.isUpdateAlways(),
)])
print
)]))
print()
return printed
......@@ -4,6 +4,6 @@ for business_template in sorted(context.getPortalObject().portal_templates.conte
key=lambda x:x.getTitle()):
if business_template.getInstallationState() == 'installed' and \
business_template.getTitle() not in ignore_business_template_list:
print business_template.getTitle()
print(business_template.getTitle())
return printed
for builder in sorted(context.getPortalObject().portal_orders.contentValues(),
key=lambda x:x.getTitle()):
print builder.getId()
print " Title: %s" % (builder.getTitle())
print " Simulation Select Method: %s" % (builder.getSimulationSelectMethodId())
print " Delivery Select Method: %s" % (builder.getDeliverySelectMethodId())
print " After Generation Script: %s" % (builder.getDeliveryAfterGenerationScriptId())
print " Delivery Module Before Building Script: %s" % (builder.getDeliveryModuleBeforeBuildingScriptId())
print
print(builder.getId())
print(" Title: %s" % (builder.getTitle()))
print(" Simulation Select Method: %s" % (builder.getSimulationSelectMethodId()))
print(" Delivery Select Method: %s" % (builder.getDeliverySelectMethodId()))
print(" After Generation Script: %s" % (builder.getDeliveryAfterGenerationScriptId()))
print(" Delivery Module Before Building Script: %s" % (builder.getDeliveryModuleBeforeBuildingScriptId()))
print()
for mg in sorted(builder.contentValues(), key=lambda x:x.getTitle()):
print builder.getId()
print " ", "\n ".join([x for x in (
print(builder.getId())
print(" ", "\n ".join([x for x in (
"Id: %s" % mg.getId(),
"Title: %s" % mg.getTitle(),
"Type: %s" % mg.getPortalType(),
......@@ -18,7 +18,7 @@ for builder in sorted(context.getPortalObject().portal_orders.contentValues(),
"Tested Properties: %r" % mg.getTestedPropertyList(),
"Update Always: %r" % mg.isUpdateAlways(),
)])
print
)]))
print()
return printed
......@@ -37,12 +37,12 @@ for skin_folder in portal.portal_skins.objectValues('Folder'):
for skin in skin_folder.objectValues():
if skin.getId() in ignore_skin_list:
continue
print getSkinHash(skin, skin_folder)
print(getSkinHash(skin, skin_folder))
if include_workflow_scripts:
for workflow in portal.portal_workflow.objectValues():
for skin in workflow.scripts.objectValues():
print getSkinHash(skin, workflow)
print(getSkinHash(skin, workflow))
container.REQUEST.RESPONSE.setHeader('content-type', 'text/plain')
return '\n'.join(sorted(printed.splitlines()))
for ti in sorted(context.getPortalObject().portal_types.contentValues(), key=lambda x:x.getId()):
for ai in sorted(ti.contentValues(portal_type='Action Information'), key=lambda x:x.getReference()):
print ti.getId()
print " ", "\n ".join([x for x in (
print(ti.getId())
print(" ", "\n ".join([x for x in (
"Reference: %s" % ai.getReference(),
"Title: %s" % ai.getTitle(),
"Action: %s" % ai.getActionText(),
......@@ -9,7 +9,7 @@ for ti in sorted(context.getPortalObject().portal_types.contentValues(), key=lam
"Permission: %s" % ai.getActionPermission(),
"Action Type: %s" % ai.getActionType(),
"Visible: %s" % ai.getVisible(),
"Index: %s" % ai.getFloatIndex())])
print
"Index: %s" % ai.getFloatIndex())]))
print()
return printed
for ti in sorted(context.getPortalObject().portal_types.contentValues(), key=lambda x:x.getId()):
print ti.getId()
print " ", "\n ".join([x for x in (
print(ti.getId())
print(" ", "\n ".join([x for x in (
"Short Title: %s" % ti.getShortTitle(),
"Class: %s" % ti.getTypeClass(),
"Init Script: %s" % ti.getTypeInitScriptId(),
......@@ -12,7 +12,7 @@ for ti in sorted(context.getPortalObject().portal_types.contentValues(), key=lam
"Hidden Content Types: %r" % sorted(ti.getTypeHiddenContentTypeList()),
"Searchable Property: %r" % sorted(ti.getSearchableTextPropertyIdList()),
"Searchable Method: %r" % sorted(ti.getSearchableTextMethodIdList()),
)])
print
)]))
print()
return printed
for ti in sorted(context.getPortalObject().portal_types.contentValues(), key=lambda x:x.getId()):
for ri in sorted(ti.contentValues(portal_type='Role Information'), key=lambda x:(x.getTitle(), x.getLocalRoleGroupId(), x.getRoleBaseCategoryScriptId(), x.getRoleBaseCategoryList())):
print ti.getId()
print " ", "\n ".join([x for x in (
print(ti.getId())
print(" ", "\n ".join([x for x in (
"Title: %s" % ri.getTitle(),
"Roles: %r" % ri.getRoleNameList(),
"Condition: %s" % ri.getConditionText(),
"Local Roles Group Id: %s" % ri.getLocalRoleGroupId(),
"Base Categories: %r" % ri.getRoleBaseCategoryList(),
"Base Category Script: %s" % ri.getRoleBaseCategoryScriptId(),
"Categories: %r" % ri.getRoleCategoryList() )])
print
"Categories: %r" % ri.getRoleCategoryList() )]))
print()
return printed
......@@ -6,7 +6,7 @@ for ps in sorted(context.getPortalObject().portal_property_sheets.contentValues(
ps_id = ps.getId()
if ps_id in ignore_property_sheet_list:
continue
print ps.getId()
print(ps.getId())
info_list = ['id', 'portal_type', 'reference']
std_prop_list = ['elementary_type', 'property_default', 'storage_id', 'multivaluated', 'range', 'preference', 'read_permission', 'write_permission', 'translatable', 'translation_domain']
if pd.getPortalType() == 'Standard Property':
......@@ -29,10 +29,10 @@ for ps in sorted(context.getPortalObject().portal_property_sheets.contentValues(
elif pd.getPortalType().endswith('Constraint'):
info_list += [] + [p for p in pd.propertyIds() if p.startswith('message')]
else:
print "(not supported)",pd.getRelativeUrl(), pd.getPortalType()
print("(not supported)",pd.getRelativeUrl(), pd.getPortalType())
print " ", "\n ".join(['%s: %s' % (prop, pd.getProperty(prop)) for prop in sorted(info_list)])
print
print(" ", "\n ".join(['%s: %s' % (prop, pd.getProperty(prop)) for prop in sorted(info_list)]))
print()
return printed
......@@ -2,17 +2,17 @@ for rule in sorted(context.getPortalObject().portal_rules.contentValues(),
key=lambda x:x.getTitle()):
if rule.getValidationState() != 'validated':
continue
print rule.getId()
print " Title: %s" % (rule.getTitle())
print " Trade Phases: %r" % (rule.getTradePhaseList())
print " Test Method Id: %s" % (rule.getTestMethodId())
print " Membership Criteria: %r" % (rule.getMembershipCriterionBaseCategoryList())
print " Membership Criterion Category: %r" % (rule.getMembershipCriterionCategoryList())
print
print(rule.getId())
print(" Title: %s" % (rule.getTitle()))
print(" Trade Phases: %r" % (rule.getTradePhaseList()))
print(" Test Method Id: %s" % (rule.getTestMethodId()))
print(" Membership Criteria: %r" % (rule.getMembershipCriterionBaseCategoryList()))
print(" Membership Criterion Category: %r" % (rule.getMembershipCriterionCategoryList()))
print()
for tester in sorted(rule.contentValues(), key=lambda x:x.getTitle()):
print rule.getId()
print " ", "\n ".join([x for x in (
print(rule.getId())
print(" ", "\n ".join([x for x in (
"Id: %s" % tester.getId(),
"Title: %s" % tester.getTitle(),
"Type: %s" % tester.getPortalType(),
......@@ -25,7 +25,7 @@ for rule in sorted(context.getPortalObject().portal_rules.contentValues(),
(tester.getMembershipCriterionBaseCategoryList()),
"Membership Criterion Category: %r" %
(tester.getMembershipCriterionCategoryList()),
)])
print
)]))
print()
return printed
......@@ -13,5 +13,5 @@ for name, layers in skin_tool.getSkinPaths():
if ignore_skin_folder_list is not None and\
layer in ignore_skin_folder_list:
continue
print '%s,%s' % (name, layer)
print('%s,%s' % (name, layer))
return printed
......@@ -13,6 +13,6 @@ for field_path, field in context.ZopeFind(
relation_setter_id = field.get_value('relation_setter_id')
if relation_setter_id:
print field_path, relation_setter_id
print(field_path, relation_setter_id)
return printed
......@@ -16,6 +16,6 @@ for bt in bt_list:
delete_list.append(bt_id)
break
print 'Deleted id list:%r' % delete_list
print('Deleted id list:%r' % delete_list)
portal_templates.manage_delObjects(delete_list)
return printed
......@@ -37,8 +37,8 @@
<key> <string>tested_property</string> </key>
<value>
<tuple>
<string>start_date</string>
<string>stop_date</string>
<string>start_date</string>
</tuple>
</value>
</item>
......
......@@ -37,8 +37,8 @@
<key> <string>tested_property</string> </key>
<value>
<tuple>
<string>start_date</string>
<string>stop_date</string>
<string>start_date</string>
</tuple>
</value>
</item>
......
......@@ -37,8 +37,8 @@
<key> <string>tested_property</string> </key>
<value>
<tuple>
<string>start_date</string>
<string>stop_date</string>
<string>start_date</string>
</tuple>
</value>
</item>
......
......@@ -37,8 +37,8 @@
<key> <string>tested_property</string> </key>
<value>
<tuple>
<string>start_date</string>
<string>stop_date</string>
<string>start_date</string>
</tuple>
</value>
</item>
......
......@@ -35,7 +35,7 @@
</item>
<item>
<key> <string>acquisition_portal_type</string> </key>
<value> <string>python: list(portal.getPortalAcquisitionMovementTypeList() + portal.getPortalItemTypeList())</string> </value>
<value> <string>python: list(portal.getPortalAcquisitionMovementTypeList() + portal.getPortalSupplyPathTypeList() + portal.getPortalItemTypeList())</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
......
......@@ -37,13 +37,7 @@ class BaseVariantMovementGroup(MovementGroup):
portal_type = 'Base Variant Movement Group'
def _getPropertyDict(self, movement, **kw):
property_dict = {}
category_list = movement.getVariationBaseCategoryList()
if category_list is None:
category_list = []
category_list.sort()
property_dict['_base_category_list'] = category_list
return property_dict
return {'_base_category_list': sorted(movement.getVariationBaseCategoryList() or [])}
def test(self, document, property_dict, **kw):
# This movement group does not affect updating.
......
......@@ -25,6 +25,7 @@
#
##############################################################################
from collections import OrderedDict
from erp5.component.document.PropertyMovementGroup import PropertyMovementGroup
class CategoryMovementGroup(PropertyMovementGroup):
......@@ -43,7 +44,7 @@ class CategoryMovementGroup(PropertyMovementGroup):
portal_type = 'Category Movement Group'
def _getPropertyDict(self, movement, **kw):
property_dict = {}
property_dict = OrderedDict()
getProperty = movement.getProperty
for prop in self.getTestedPropertyList():
list_prop = prop + '_list'
......
......@@ -38,10 +38,7 @@ class CausalityMovementGroup(MovementGroup):
def _getPropertyDict(self, movement, **kw):
property_dict = {}
explanation_relative_url = self._getExplanationRelativeUrl(movement)
property_dict['_explanation'] = explanation_relative_url
return property_dict
return {'_explanation': self._getExplanationRelativeUrl(movement)}
def test(self, movement, property_dict, **kw):
# we don't care the difference of explanation url when updating
......
......@@ -26,6 +26,7 @@
#
##############################################################################
from collections import OrderedDict
from erp5.component.document.MovementGroup import MovementGroup
from DateTime import DateTime
from erp5.component.module.DateUtils import atTheEndOfPeriod
......@@ -45,7 +46,7 @@ class MonthlyRangeMovementGroup(MovementGroup):
def _getPropertyDict(self, movement, **kw):
"""Gather start_date and stop_date, converge them to the end of month.
"""
property_dict = {}
property_dict = OrderedDict()
for property_name in self.getTestedPropertyList() or ('start_date', 'stop_date'):
date = movement.getProperty(property_name, None)
if date is not None:
......
......@@ -25,6 +25,7 @@
#
##############################################################################
from collections import OrderedDict
from erp5.component.document.PropertyMovementGroup import PropertyMovementGroup
from Products.ERP5Type.Utils import UpperCase
......@@ -41,7 +42,7 @@ class ParentDeliveryPropertyMovementGroup(PropertyMovementGroup):
portal_type = 'Parent Delivery Property Movement Group'
def _getPropertyDict(self, movement, **kw):
property_dict = {}
property_dict = OrderedDict()
parent_delivery = self._getParentDelivery(movement)
if parent_delivery is not None:
for prop in self.getTestedPropertyList():
......
......@@ -40,10 +40,7 @@ class ParentExplanationMovementGroup(MovementGroup):
portal_type = 'Parent Explanation Movement Group'
def _getPropertyDict(self, movement, **kw):
property_dict = {}
parent_explanation_value = movement.getParentExplanationValue()
property_dict['parent_explanation_value'] = parent_explanation_value
return property_dict
return {'parent_explanation_value': movement.getParentExplanationValue()}
def test(self, document, property_dict, **kw):
if document.getParentExplanationValue() == \
......
......@@ -26,8 +26,10 @@
#
##############################################################################
from collections import OrderedDict
from erp5.component.document.MovementGroup import MovementGroup
class PropertyMovementGroup(MovementGroup):
"""
The purpose of MovementGroup is to define how movements are grouped,
......@@ -40,7 +42,7 @@ class PropertyMovementGroup(MovementGroup):
portal_type = 'Property Movement Group'
def _getPropertyDict(self, movement, **kw):
property_dict = {}
property_dict = OrderedDict()
getProperty = movement.getProperty
for prop in self.getTestedPropertyList():
property_dict[prop] = getProperty(prop)
......
......@@ -36,7 +36,7 @@ class RequirementMovementGroup(MovementGroup):
portal_type = 'Requirement Movement Group'
def _getPropertyDict(self, movement, **kw):
return {'requirement':self._getRequirementList(movement)}
return {'requirement': self._getRequirementList(movement)}
def test(self, movement, property_dict, **kw):
# We can always update
......
......@@ -39,10 +39,7 @@ class RootAppliedRuleCausalityMovementGroup(MovementGroup):
portal_type = 'Root Applied Rule Causality Movement Group'
def _getPropertyDict(self, movement, **kw):
property_dict = {}
root_causality_value = self._getRootCausalityValue(movement)
property_dict['root_causality_value_list'] = [root_causality_value]
return property_dict
return {'root_causality_value_list': [self._getRootCausalityValue(movement)]}
def test(self, movement, property_dict, **kw):
# We can always update
......
......@@ -33,10 +33,6 @@ class SplitMovementGroup(MovementGroup):
This movement group is used to split all the movements that are aggregated
by the Simulation Select Method.
XXX-Tatuya: However this test() method returns True, so the aggregated
movements can be inserted into existing Delivery/Line/Cell that are aggregated
by the Delivery Select Method. What use case this is applied for?
* Reference:
http://www.erp5.org/HowToConfigureMovementGroup
......@@ -56,7 +52,7 @@ class SplitMovementGroup(MovementGroup):
return {}
def test(self, document, property_dict, **kw):
return True, property_dict
return False, property_dict
def _separate(self, movement_list, **kw):
return [[[movement], {}] for movement in movement_list]
......@@ -37,9 +37,7 @@ class TitleMovementGroup(MovementGroup):
portal_type = 'Title Movement Group'
def _getPropertyDict(self, movement, **kw):
property_dict = {}
property_dict['title'] = self._getTitle(movement)
return property_dict
return {'title': self._getTitle(movement)}
def test(self, document, property_dict, **kw):
# If title is different, we want to update existing document instead
......
......@@ -331,8 +331,6 @@ class BuilderMixin(XMLObject, Amount, Predicate):
# 'variation_category' or 'variation_property' pseudo properties,
# which rely on the resource being set to discover which
# categories/properties to set
# XXX-Leo: in the future: using an ordered_dict would be nice,
# but this would have to be respected on Base._edit()
edit_order = []
property_dict = {'edit_order': edit_order}
for d in property_dict_list:
......
......@@ -30,7 +30,7 @@
##############################################################################
import zope.interface
from AccessControl import ClassSecurityInfo
from AccessControl.AuthEncoding import pw_encrypt, pw_validate
from AuthEncoding.AuthEncoding import pw_encrypt, pw_validate
from Products.ERP5Type.Globals import InitializeClass
from Acquisition import aq_base
from Products.ERP5Type import Permissions
......
......@@ -31,7 +31,7 @@ import zope.interface
from Products.ERP5Type import Permissions
from erp5.component.interface.ILoginAccountProvider import ILoginAccountProvider
from AccessControl.AuthEncoding import pw_validate
from AuthEncoding.AuthEncoding import pw_validate
from AccessControl import ClassSecurityInfo
from Products.ERP5Type.Globals import InitializeClass
......
......@@ -38,7 +38,7 @@
</item>
<item>
<key> <string>message_no_such_property</string> </key>
<value> <string>Reference must be defined</string> </value>
<value> <string>Currency Code must be defined</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......
......@@ -18,6 +18,14 @@
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>constraint_property</string> </key>
<value>
<tuple>
<string>reference</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
......@@ -26,7 +34,7 @@
</item>
<item>
<key> <string>filter_parameter</string> </key>
<value> <string>python: {\'portal_type\': (\'Currency\', ), \'validation_state\': (\'validated\', ),\'reference\': object.getReference()}</string> </value>
<value> <string>python: {\'portal_type\': (\'Currency\', ), \'validation_state\': (\'validated\', ), \'reference\': object.getReference()}</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......@@ -34,7 +42,7 @@
</item>
<item>
<key> <string>message_invalid_attribute_unicity</string> </key>
<value> <string>Another currency with reference ${value} already exists</string> </value>
<value> <string>Another currency with Currency Code ${value} already exists</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......
currency_exchange_type_list = context.portal_categories.currency_exchange_type.getCategoryChildRelativeUrlList()
currency_exchange_type_list = context.portal_categories.currency_exchange_type.getCategoryChildRelativeUrlList(
local_sort_id=("int_index", "title"))
resource_list = ['resource/%s' % context.getParentValue().getRelativeUrl()]
price_currency_list = [context.getPriceCurrency(base=True)]
......
......@@ -8,5 +8,5 @@ context.ERP5Site_checkDataWithScript("Base_migrateToEmbeddedFile",
active_process=active_process.getPath(),
method_kw=dict(force=1))
print "Migration started with process id: %s" %active_process.getPath()
print("Migration started with process id: %s" %active_process.getPath())
return printed
......@@ -5,6 +5,7 @@ notification_message_list = portal.portal_catalog.getDocumentValueList(
reference=reference,
language=language,
strict_language=strict_language,
limit=limit,
**kw
)
if notification_message_list:
......
......@@ -50,7 +50,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>reference, language=None, strict_language=False, validation_state=None, **kw</string> </value>
<value> <string>reference, language=None, strict_language=False, validation_state=None, limit=1, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
return ''.join(random.SystemRandom().sample(string.ascii_letters + string.digits, length))
return ''.join(random.SystemRandom().sample(string.ascii_letters + string.digits + '_-.$%:;!', length))
......@@ -10,7 +10,7 @@
<key> <string>categories</string> </key>
<value>
<tuple>
<string>after_script/portal_workflow/movement_resource_interaction_workflow/script_Movement_copyBaseContributionFromResource</string>
<string>after_script/portal_workflow/movement_resource_interaction_workflow/script_Movement_copyCategoryListFromResource</string>
</tuple>
</value>
</item>
......@@ -22,7 +22,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>interaction_setBaseContribution</string> </value>
<value> <string>interaction_setResource</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......
......@@ -2,6 +2,22 @@ movement = state_change['object']
resource = movement.getResourceValue()
if resource is not None:
# quantity unit can be acquired from resource (see Amount.getQuantityUnit)
# we check that it's really set on the movement.
if movement.hasQuantityUnit():
# if the movement already have a quantity unit which is valid for this resource, don't change it
if movement.getQuantityUnit() not in resource.getQuantityUnitList():
movement.setQuantityUnit(resource.getDefaultQuantityUnit())
else:
# initialise to the default quantity unit
movement.setQuantityUnit(resource.getDefaultQuantityUnit())
# if the movement already have a use which is valid for this resource, don't change it.
# ( unlike quantity unit, use is not acquired )
if movement.getUse() not in resource.getUseList():
# otherwise initialise to the default use
movement.setUse(resource.getDefaultUse())
# We can over-write base contribution list always.
# Because when we change the resource, we need to set all the base contribution into movement.
# Imagine that we buy a product which have complex tax definitions with discounting.
......
......@@ -60,9 +60,15 @@
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>script_Movement_copyQuantityUnitFromResource</string> </value>
<value> <string>script_Movement_copyCategoryListFromResource</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......
movement = state_change['object']
resource = movement.getResourceValue()
if resource is not None:
# quantity unit can be acquired from resource.
# (Amount class has getQuantityUnit method for backward compatibility and it tries to acquire value from resource).
if movement.hasCategory('quantity_unit'):
# if the movement already have a quantity unit which is valid for this resource, don't change it
movement_quantity_unit = movement.getQuantityUnit()
if movement_quantity_unit and movement_quantity_unit in resource.getQuantityUnitList():
return
# otherwise initialise to the default quantity unit
movement.setQuantityUnit(resource.getDefaultQuantityUnit())
movement = state_change['object']
resource = movement.getResourceValue()
if resource is not None:
# if the movement already have a use which is valid for this resource, don't change it
movement_use = movement.getUse()
if movement_use and movement_use in resource.getUseList():
return
# otherwise initialise to the default use
movement.setUse(resource.getDefaultUse())
......@@ -22,7 +22,7 @@ from erp5.component.document.File import File, _MARKER
from erp5.component.module.BTreeData import BTreeData
from ZPublisher.HTTPRequest import FileUpload
from ZPublisher import HTTPRangeSupport
from webdav.common import rfc1123_date
from zope.datetime import rfc1123_date
from mimetools import choose_boundary
from Products.CMFCore.utils import _setCacheHeaders, _ViewEmulator
from DateTime import DateTime
......
from __future__ import print_function
from BTrees.LOBTree import LOBTree
from persistent import Persistent
import itertools
......@@ -314,7 +315,7 @@ class BTreeData(Persistent):
if __name__ == '__main__':
def check(tree, length, read_offset, read_length, data_, keys=None):
print list(tree._tree.items())
print(list(tree._tree.items()))
tree_length = len(tree)
tree_data = tree.read(read_offset, read_length)
tree_iterator_data = ''.join(tree.iterate(read_offset, read_length))
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/object_list</string>
</tuple>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_list</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>view</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>View</string>
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Action Information</string> </value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>View</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/HolidayAcquisitionModule_viewHolidayAcquisitionList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/object_view</string>
</tuple>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_view</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>view</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>View</string>
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Action Information</string> </value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>View</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/HolidayAcquisition_view</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -42,7 +42,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>leaves</string> </value>
<value> <string>holidays</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
......@@ -58,7 +58,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Leaves</string> </value>
<value> <string>Holidays</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
......@@ -75,7 +75,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/Entity_viewLeaveRequestPeriodList</string> </value>
<value> <string>string:${object_url}/Entity_viewHolidaySituation</string> </value>
</item>
</dictionary>
</pickle>
......@@ -88,7 +88,7 @@
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>python:portal.Base_checkPermission(\'leave_request_module\', \'View\')</string> </value>
<value> <string>python:portal.Base_checkPermission(\'leave_request_module\', \'View\') and portal.Base_checkPermission(\'holiday_acquisition_module\', \'View\') </string> </value>
</item>
</dictionary>
</pickle>
......
##############################################################################
#
# Copyright (c) 2007 Nexedi SARL and Contributors. All Rights Reserved.
# Courteaud Romain <romain@nexedi.com>
#
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# garantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from AccessControl import ClassSecurityInfo
from Products.ERP5Type import Permissions
from erp5.component.document.Event import Event
from Products.ZSQLCatalog.SQLCatalog import NegatedQuery, SimpleQuery
class HolidayAcquisition(Event):
meta_type = 'ERP5 Holiday Acquisition'
portal_type = 'Holiday Acquisition'
# Declarative security
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
security.declareProtected(Permissions.AccessContentsInformation,
'getInventoriatedQuantity')
def getInventoriatedQuantity(self, default=None, *args, **kw):
default_quantity = self.getQuantity()
if self.getProperty('is_total_holiday', False):
remaining_quantity = self.getPortalObject().portal_simulation.getInventory(
portal_type=("Holiday Acquisition", "Leave Request Period"),
node_uid= self.getDestinationUid(),
at_date = self.getStartDate(),
simulation_state = 'confirmed',
uid = NegatedQuery(SimpleQuery(uid=self.getUid())))
return default_quantity - remaining_quantity
else:
return default_quantity
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Document Component" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>HolidayAcquisition</string> </value>
</item>
<item>
<key> <string>default_source_reference</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document.erp5.HolidayAcquisition</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Document Component</string> </value>
</item>
<item>
<key> <string>sid</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content_error_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>erp5</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_log</string> </key>
<value>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>validate</string> </value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>validated</string> </value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<module>
<id>holiday_acquisition_module</id>
<permission_list>
<permission type='tuple'>
<name>Access Transient Objects</name>
<role>Assignee</role>
<role>Assignor</role>
<role>Associate</role>
<role>Auditor</role>
<role>Author</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>Access contents information</name>
<role>Assignee</role>
<role>Assignor</role>
<role>Associate</role>
<role>Auditor</role>
<role>Author</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>Access session data</name>
<role>Assignee</role>
<role>Assignor</role>
<role>Associate</role>
<role>Auditor</role>
<role>Author</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>Add portal content</name>
<role>Assignor</role>
<role>Author</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>Add portal folders</name>
<role>Assignor</role>
<role>Author</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>Change local roles</name>
<role>Assignor</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>Copy or Move</name>
<role>Assignee</role>
<role>Assignor</role>
<role>Associate</role>
<role>Auditor</role>
<role>Author</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>Delete objects</name>
<role>Assignor</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>List folder contents</name>
<role>Assignee</role>
<role>Assignor</role>
<role>Associate</role>
<role>Auditor</role>
<role>Author</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>Modify portal content</name>
<role>Assignor</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>View</name>
<role>Assignee</role>
<role>Assignor</role>
<role>Associate</role>
<role>Auditor</role>
<role>Manager</role>
</permission>
<permission type='tuple'>
<name>View History</name>
<role>Assignee</role>
<role>Assignor</role>
<role>Associate</role>
<role>Auditor</role>
<role>Author</role>
<role>Manager</role>
</permission>
</permission_list>
<portal_type>Holiday Acquisition Module</portal_type>
<title>Holiday Acquisitions</title>
</module>
\ No newline at end of file
......@@ -11,6 +11,9 @@
<portal_type id="Group Presence Period">
<item>Calendar Exception</item>
</portal_type>
<portal_type id="Holiday Acquisition Module">
<item>Holiday Acquisition</item>
</portal_type>
<portal_type id="Leave Request">
<item>Leave Request Period</item>
</portal_type>
......
......@@ -5,6 +5,9 @@
<portal_type id="Group Calendar Module">
<item>business_application</item>
</portal_type>
<portal_type id="Holiday Acquisition Module">
<item>business_application</item>
</portal_type>
<portal_type id="Leave Request Module">
<item>business_application</item>
</portal_type>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Base Type" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_property_domain_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>content_icon</string> </key>
<value> <string>folder_icon.gif</string> </value>
</item>
<item>
<key> <string>factory</string> </key>
<value> <string>addFolder</string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<tuple>
<string>module</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Holiday Acquisition Module</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Base Type</string> </value>
</item>
<item>
<key> <string>type_class</string> </key>
<value> <string>Folder</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>short_title</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>domain_name</string> </key>
<value> <string>erp5_ui</string> </value>
</item>
<item>
<key> <string>property_name</string> </key>
<value> <string>short_title</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>domain_name</string> </key>
<value> <string>erp5_ui</string> </value>
</item>
<item>
<key> <string>property_name</string> </key>
<value> <string>title</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Base Type" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>acquire_local_roles</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>content_icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>factory</string> </key>
<value> <string>addXMLObject</string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<tuple>
<string>event</string>
<string>delivery</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Holiday Acquisition</string> </value>
</item>
<item>
<key> <string>init_script</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>permission</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Base Type</string> </value>
</item>
<item>
<key> <string>type_class</string> </key>
<value> <string>HolidayAcquisition</string> </value>
</item>
<item>
<key> <string>type_interface</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -27,7 +27,7 @@
</item>
<item>
<key> <string>acquire_local_roles</string> </key>
<value> <int>1</int> </value>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>content_icon</string> </key>
......@@ -39,7 +39,9 @@
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>factory</string> </key>
......@@ -63,11 +65,15 @@
</item>
<item>
<key> <string>init_script</string> </key>
<value> <string></string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>permission</string> </key>
<value> <string></string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
......@@ -77,6 +83,12 @@
<key> <string>type_class</string> </key>
<value> <string>Folder</string> </value>
</item>
<item>
<key> <string>type_interface</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
......
......@@ -15,6 +15,10 @@
<type>Group Presence Period</type>
<workflow>edit_workflow, group_calendar_interaction_workflow</workflow>
</chain>
<chain>
<type>Holiday Acquisition</type>
<workflow>edit_workflow, holiday_acquisition_workflow</workflow>
</chain>
<chain>
<type>Leave Request</type>
<workflow>edit_workflow, leave_request_interaction_workflow, leave_request_workflow</workflow>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Property Sheet" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>LeaveRequestPeriodConstraint</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Property Sheet</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Property Existence Constraint" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>constraint_property</string> </key>
<value>
<tuple>
<string>quantity</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Property quantity must be defined</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>quantity_existence_constraint</string> </value>
</item>
<item>
<key> <string>message_no_such_property</string> </key>
<value> <string>Quantity must be defined in lines</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Property Existence Constraint</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
kw = {}
kw["node_uid"]=context.getUid()
kw["portal_type"]="Leave Request Period"
#raise ValueError("%s" % kw)
return context.getPortalObject().portal_simulation.getInventoryList(**kw)
......@@ -93,8 +93,9 @@
<key> <string>hidden</string> </key>
<value>
<list>
<string>listbox_date</string>
<string>listbox_running_total_price</string>
<string>listbox_start_date</string>
<string>listbox_stop_date</string>
<string>listbox_quantity</string>
</list>
</value>
</item>
......@@ -103,6 +104,7 @@
<value>
<list>
<string>my_title</string>
<string>my_holiday_acquired_per_month</string>
</list>
</value>
</item>
......@@ -120,7 +122,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Entity_viewLeaveRequestPeriodList</string> </value>
<value> <string>Entity_viewHolidaySituation</string> </value>
</item>
<item>
<key> <string>method</string> </key>
......
......@@ -13,12 +13,15 @@
<string>all_columns</string>
<string>columns</string>
<string>domain_tree</string>
<string>editable</string>
<string>editable_columns</string>
<string>enabled</string>
<string>list_method</string>
<string>portal_types</string>
<string>selection_name</string>
<string>sort</string>
<string>sort_columns</string>
<string>stat_columns</string>
<string>stat_method</string>
<string>title</string>
<string>url_columns</string>
</list>
......@@ -74,10 +77,20 @@
<key> <string>domain_tree</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable_columns</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
......@@ -92,12 +105,6 @@
</item>
<item>
<key> <string>portal_types</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>selection_name</string> </key>
<value> <string></string> </value>
</item>
<item>
......@@ -108,6 +115,14 @@
<key> <string>sort_columns</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>stat_columns</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>stat_method</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
......@@ -150,7 +165,7 @@
<value>
<list>
<tuple>
<string>stop_date</string>
<string>start_date</string>
<string>Start Date</string>
</tuple>
<tuple>
......@@ -158,17 +173,17 @@
<string>Stop Date</string>
</tuple>
<tuple>
<string>Movement_getExplanationTranslatedPortalType</string>
<string>resource_title</string>
<string>Type</string>
</tuple>
<tuple>
<string>getTranslatedSimulationStateTitle</string>
<string>State</string>
</tuple>
<tuple>
<string>quantity</string>
<string>Quantity</string>
</tuple>
<tuple>
<string>getTranslatedSimulationStateTitle</string>
<string>State</string>
</tuple>
</list>
</value>
</item>
......@@ -176,6 +191,10 @@
<key> <string>domain_tree</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>editable_columns</string> </key>
<value>
......@@ -194,6 +213,10 @@
<list/>
</value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_view_mode_listbox</string> </value>
......@@ -222,20 +245,12 @@
<key> <string>read_only</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>selection_name</string> </key>
<value> <string>entity_leave_period_selection</string> </value>
</item>
<item>
<key> <string>sort</string> </key>
<value>
<list>
<tuple>
<string>stock.start_date</string>
<string>ASC</string>
</tuple>
<tuple>
<string>stock.uid</string>
<string>stock.date</string>
<string>ASC</string>
</tuple>
</list>
......@@ -252,13 +267,30 @@
</list>
</value>
</item>
<item>
<key> <string>stat_columns</string> </key>
<value>
<list>
<tuple>
<string>quantity</string>
<string>Person_getTotalHolidayRemaining</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>stat_method</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Transactions Related to this Entity</string> </value>
<value> <string>Holiday History</string> </value>
</item>
<item>
<key> <string>url_columns</string> </key>
......@@ -292,7 +324,7 @@
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python:[(x, x) for x in here.getPortalAccountingTransactionTypeList()]</string> </value>
<value> <string>here/getDestination</string> </value>
</item>
</dictionary>
</pickle>
......@@ -318,7 +350,20 @@
<dictionary>
<item>
<key> <string>method_name</string> </key>
<value> <string>Entity_getLeaveRequestPeriodList</string> </value>
<value> <string>Person_getHolidayHistoryList</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="Method" module="Products.Formulator.MethodField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>method_name</string> </key>
<value> <string>Person_getHolidayHistoryList</string> </value>
</item>
</dictionary>
</pickle>
......
......@@ -8,7 +8,7 @@
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_date</string> </value>
<value> <string>listbox_stop_date</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>Base_doSelect</string> </value>
</item>
<item>
<key> <string>action_title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list>
<string>listbox</string>
</list>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list>
<string>listbox_delivery_stop_date</string>
</list>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>HolidayAcquisitionModule_viewHolidayAcquisitionList</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>HolidayAcquisitionModule_viewHolidayAcquisitionList</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>ERP5 Form</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_list</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Holiday Acquisitions</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>all_columns</string>
<string>columns</string>
<string>portal_types</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>listbox</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>all_columns</string> </key>
<value>
<list>
<tuple>
<string>owner_title</string>
<string>Owner</string>
</tuple>
<tuple>
<string>creation_date</string>
<string>Creation Date</string>
</tuple>
<tuple>
<string>modification_date</string>
<string>Modification Date</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>all_editable_columns</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>columns</string> </key>
<value>
<list>
<tuple>
<string>title</string>
<string>Title</string>
</tuple>
<tuple>
<string>destination_title</string>
<string>Person</string>
</tuple>
<tuple>
<string>delivery.stop_date</string>
<string>Date</string>
</tuple>
<tuple>
<string>stock.quantity</string>
<string>Quantity</string>
</tuple>
<tuple>
<string>description</string>
<string>Description</string>
</tuple>
<tuple>
<string>translated_simulation_state_title</string>
<string>State</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_list_mode_listbox</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>portal_types</string> </key>
<value>
<list>
<tuple>
<string>Holiday Acquisition</string>
<string>Holiday Acquisition</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Holiday Acquisitions</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>required</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>listbox_delivery_stop_date</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_date_time_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Stop Date</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment