Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
7
Merge Requests
7
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
Jérome Perrin
erp5
Commits
39f2137b
Commit
39f2137b
authored
Jun 09, 2020
by
Jérome Perrin
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feat/update_erp5' into fix/web-page-implicit-successor-getDocumentValue
parents
a64ceb40
e4879505
Changes
110
Show whitespace changes
Inline
Side-by-side
Showing
110 changed files
with
3561 additions
and
986 deletions
+3561
-986
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance.py
...accounting/AccountModule_getAccountListForTrialBalance.py
+4
-1
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountStatementReportSectionList.py
...ing/AccountModule_getAccountStatementReportSectionList.py
+2
-0
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAnalyticColumnList.py
...ns/erp5_accounting/AccountModule_getAnalyticColumnList.py
+3
-0
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getTrialBalanceReportSectionList.py
...ounting/AccountModule_getTrialBalanceReportSectionList.py
+3
-0
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Movement_getSpecificReferenceOrExplanationReference.py
...ng/Movement_getSpecificReferenceOrExplanationReference.py
+20
-0
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Movement_getSpecificReferenceOrExplanationReference.xml
...g/Movement_getSpecificReferenceOrExplanationReference.xml
+62
-0
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/account_workflow/transitions/delete.xml
...m/portal_workflow/account_workflow/transitions/delete.xml
+5
-18
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/account_workflow/transitions/invalidate.xml
...rtal_workflow/account_workflow/transitions/invalidate.xml
+1
-19
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/account_workflow/transitions/validate.xml
...portal_workflow/account_workflow/transitions/validate.xml
+1
-18
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/auto_plan.xml
...al_workflow/accounting_workflow/transitions/auto_plan.xml
+1
-18
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/cancel.xml
...ortal_workflow/accounting_workflow/transitions/cancel.xml
+5
-20
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/cancel_accounting_action.xml
...ounting_workflow/transitions/cancel_accounting_action.xml
+5
-19
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/confirm.xml
...rtal_workflow/accounting_workflow/transitions/confirm.xml
+1
-18
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/delete.xml
...ortal_workflow/accounting_workflow/transitions/delete.xml
+5
-18
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/deliver.xml
...rtal_workflow/accounting_workflow/transitions/deliver.xml
+5
-18
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/plan.xml
.../portal_workflow/accounting_workflow/transitions/plan.xml
+1
-18
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/restart.xml
...rtal_workflow/accounting_workflow/transitions/restart.xml
+5
-19
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/start.xml
...portal_workflow/accounting_workflow/transitions/start.xml
+1
-18
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/stop.xml
.../portal_workflow/accounting_workflow/transitions/stop.xml
+5
-19
bt5/erp5_bank_reconciliation/CatalogRelatedKeyTemplateItem/related_key_list.xml
...iation/CatalogRelatedKeyTemplateItem/related_key_list.xml
+0
-4
bt5/erp5_bank_reconciliation/WorkflowTemplateItem/portal_workflow/bank_reconciliation_validation_workflow/transitions/cancel.xml
...reconciliation_validation_workflow/transitions/cancel.xml
+1
-20
bt5/erp5_bank_reconciliation/WorkflowTemplateItem/portal_workflow/bank_reconciliation_validation_workflow/transitions/close.xml
..._reconciliation_validation_workflow/transitions/close.xml
+1
-20
bt5/erp5_bank_reconciliation/WorkflowTemplateItem/portal_workflow/bank_reconciliation_validation_workflow/transitions/delete.xml
...reconciliation_validation_workflow/transitions/delete.xml
+5
-20
bt5/erp5_bank_reconciliation/WorkflowTemplateItem/portal_workflow/bank_reconciliation_validation_workflow/transitions/open.xml
...k_reconciliation_validation_workflow/transitions/open.xml
+1
-20
bt5/erp5_bank_reconciliation/bt/template_catalog_related_key_list
..._bank_reconciliation/bt/template_catalog_related_key_list
+0
-2
bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Image.py
...mentTemplateItem/portal_components/document.erp5.Image.py
+1
-1
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/conversion_failed.xml
...cessing_status_workflow/transitions/conversion_failed.xml
+5
-18
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/convert_file.xml
...w/processing_status_workflow/transitions/convert_file.xml
+5
-18
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/detect_uploaded_file.xml
...sing_status_workflow/transitions/detect_uploaded_file.xml
+4
-8
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/process_conversion_failed.xml
...status_workflow/transitions/process_conversion_failed.xml
+5
-18
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/update_file_metadata.xml
...sing_status_workflow/transitions/update_file_metadata.xml
+5
-18
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/upload_file.xml
...ow/processing_status_workflow/transitions/upload_file.xml
+5
-18
bt5/erp5_budget/ActionTemplateItem/portal_types/Time%20Budget%20Variation/view.xml
...plateItem/portal_types/Time%20Budget%20Variation/view.xml
+81
-0
bt5/erp5_budget/DocumentTemplateItem/portal_components/document.erp5.BudgetCell.py
...emplateItem/portal_components/document.erp5.BudgetCell.py
+6
-0
bt5/erp5_budget/DocumentTemplateItem/portal_components/document.erp5.BudgetLine.py
...emplateItem/portal_components/document.erp5.BudgetLine.py
+3
-2
bt5/erp5_budget/DocumentTemplateItem/portal_components/document.erp5.TimeBudgetVariation.py
...em/portal_components/document.erp5.TimeBudgetVariation.py
+233
-0
bt5/erp5_budget/DocumentTemplateItem/portal_components/document.erp5.TimeBudgetVariation.xml
...m/portal_components/document.erp5.TimeBudgetVariation.xml
+123
-0
bt5/erp5_budget/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
...eAllowedContentTypeTemplateItem/allowed_content_types.xml
+1
-0
bt5/erp5_budget/PortalTypeTemplateItem/portal_types/Time%20Budget%20Variation.xml
...peTemplateItem/portal_types/Time%20Budget%20Variation.xml
+139
-0
bt5/erp5_budget/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
...rtalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
+4
-0
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view.xml
...tem/portal_skins/erp5_budget/TimeBudgetVariation_view.xml
+159
-0
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_budget_variation.xml
...5_budget/TimeBudgetVariation_view/my_budget_variation.xml
+96
-0
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_int_index.xml
...ins/erp5_budget/TimeBudgetVariation_view/my_int_index.xml
+252
-0
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_interpolation_method.xml
...dget/TimeBudgetVariation_view/my_interpolation_method.xml
+279
-0
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_time_sequence_select_method_id.xml
...udgetVariation_view/my_time_sequence_select_method_id.xml
+264
-0
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_title.xml
...l_skins/erp5_budget/TimeBudgetVariation_view/my_title.xml
+260
-0
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_translated_portal_type.xml
...et/TimeBudgetVariation_view/my_translated_portal_type.xml
+260
-0
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_variation_base_category.xml
...t/TimeBudgetVariation_view/my_variation_base_category.xml
+126
-0
bt5/erp5_budget/bt/template_action_path_list
bt5/erp5_budget/bt/template_action_path_list
+1
-0
bt5/erp5_budget/bt/template_document_id_list
bt5/erp5_budget/bt/template_document_id_list
+2
-1
bt5/erp5_budget/bt/template_portal_type_allowed_content_type_list
..._budget/bt/template_portal_type_allowed_content_type_list
+1
-0
bt5/erp5_budget/bt/template_portal_type_id_list
bt5/erp5_budget/bt/template_portal_type_id_list
+1
-0
bt5/erp5_budget/bt/template_portal_type_workflow_chain_list
bt5/erp5_budget/bt/template_portal_type_workflow_chain_list
+1
-0
bt5/erp5_core_proxy_field_legacy/SkinTemplateItem/portal_skins/erp5_core_proxy_field_legacy/Base_viewFieldLibrary/my_date.xml
...core_proxy_field_legacy/Base_viewFieldLibrary/my_date.xml
+1
-1
bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testInteractionWorkflow.py
...em/portal_components/test.erp5.testInteractionWorkflow.py
+13
-0
bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/transitions/accept.xml
...low/credential_validation_workflow/transitions/accept.xml
+5
-18
bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/transitions/reject.xml
...low/credential_validation_workflow/transitions/reject.xml
+5
-18
bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/transitions/submit.xml
...low/credential_validation_workflow/transitions/submit.xml
+5
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/accept.xml
...flow/document_publication_workflow/transitions/accept.xml
+5
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/archive.xml
...low/document_publication_workflow/transitions/archive.xml
+5
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/assign.xml
...flow/document_publication_workflow/transitions/assign.xml
+5
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/cancel.xml
...flow/document_publication_workflow/transitions/cancel.xml
+5
-20
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/delete.xml
...flow/document_publication_workflow/transitions/delete.xml
+5
-20
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/hide.xml
...rkflow/document_publication_workflow/transitions/hide.xml
+5
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/publish.xml
...low/document_publication_workflow/transitions/publish.xml
+1
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/publish_alive.xml
...cument_publication_workflow/transitions/publish_alive.xml
+1
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/reject.xml
...flow/document_publication_workflow/transitions/reject.xml
+5
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/release.xml
...low/document_publication_workflow/transitions/release.xml
+1
-19
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/release_alive.xml
...cument_publication_workflow/transitions/release_alive.xml
+1
-19
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/request.xml
...low/document_publication_workflow/transitions/request.xml
+5
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/share.xml
...kflow/document_publication_workflow/transitions/share.xml
+1
-19
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/share_alive.xml
...document_publication_workflow/transitions/share_alive.xml
+1
-19
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/split.xml
...kflow/document_publication_workflow/transitions/split.xml
+5
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/submit.xml
...flow/document_publication_workflow/transitions/submit.xml
+5
-18
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/translate.xml
...w/document_publication_workflow/transitions/translate.xml
+5
-18
bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_convertToBaseFormatAndDiscoverMetadata.xml
...stion/Document_convertToBaseFormatAndDiscoverMetadata.xml
+8
-0
bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_getPropertyDictFromContent.xml
...ns/erp5_ingestion/Document_getPropertyDictFromContent.xml
+8
-0
product/ERP5/Document/Amount.py
product/ERP5/Document/Amount.py
+1
-0
product/ERP5/__init__.py
product/ERP5/__init__.py
+16
-0
product/ERP5/bootstrap/erp5_core/DocumentTemplateItem/portal_components/document.erp5.Movement.py
...tTemplateItem/portal_components/document.erp5.Movement.py
+1
-0
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewFieldLibrary/my_date_time_field.xml
...ns/erp5_core/Base_viewFieldLibrary/my_date_time_field.xml
+1
-1
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewFieldLibrary/my_list_mode_listbox_creation_date.xml
...e_viewFieldLibrary/my_list_mode_listbox_creation_date.xml
+32
-0
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewFieldLibrary/my_view_mode_listbox_creation_date.xml
...e_viewFieldLibrary/my_view_mode_listbox_creation_date.xml
+32
-0
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewWorkflowActionDialog.xml
.../portal_skins/erp5_core/Base_viewWorkflowActionDialog.xml
+1
-0
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewWorkflowActionDialog/your_comment.xml
.../erp5_core/Base_viewWorkflowActionDialog/your_comment.xml
+17
-8
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewWorkflowActionDialog/your_warning.xml
.../erp5_core/Base_viewWorkflowActionDialog/your_warning.xml
+307
-0
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewWorkflowHistory/listbox_time.xml
...skins/erp5_core/Base_viewWorkflowHistory/listbox_time.xml
+37
-1
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Preference_viewHtmlStyle.xml
...eItem/portal_skins/erp5_core/Preference_viewHtmlStyle.xml
+1
-0
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Preference_viewHtmlStyle/my_preferred_time_zone.xml
..._core/Preference_viewHtmlStyle/my_preferred_time_zone.xml
+0
-0
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.sql
...tem/portal_skins/erp5_core/Resource_zGetInventoryList.sql
+77
-2
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml
...tem/portal_skins/erp5_core/Resource_zGetInventoryList.xml
+2
-1
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/SystemPreference_view.xml
...lateItem/portal_skins/erp5_core/SystemPreference_view.xml
+0
-1
product/ERP5/bootstrap/erp5_core/ToolComponentTemplateItem/portal_components/tool.erp5.SimulationTool.py
...emplateItem/portal_components/tool.erp5.SimulationTool.py
+14
-2
product/ERP5/bootstrap/erp5_core/WorkflowTemplateItem/portal_workflow/edit_workflow/transitions/edit.xml
...teItem/portal_workflow/edit_workflow/transitions/edit.xml
+8
-21
product/ERP5/bootstrap/erp5_core/WorkflowTemplateItem/portal_workflow/edit_workflow/transitions/edit_action.xml
...portal_workflow/edit_workflow/transitions/edit_action.xml
+5
-18
product/ERP5/bootstrap/erp5_core/WorkflowTemplateItem/portal_workflow/validation_workflow/transitions/delete.xml
...ortal_workflow/validation_workflow/transitions/delete.xml
+1
-18
product/ERP5/bootstrap/erp5_core/WorkflowTemplateItem/portal_workflow/validation_workflow/transitions/invalidate.xml
...l_workflow/validation_workflow/transitions/invalidate.xml
+1
-18
product/ERP5/bootstrap/erp5_core/WorkflowTemplateItem/portal_workflow/validation_workflow/transitions/validate.xml
...tal_workflow/validation_workflow/transitions/validate.xml
+1
-18
product/ERP5/tests/testInventoryAPI.py
product/ERP5/tests/testInventoryAPI.py
+226
-0
product/ERP5/tests/testSecurity.py
product/ERP5/tests/testSecurity.py
+3
-2
product/ERP5Type/Accessor/Constant.py
product/ERP5Type/Accessor/Constant.py
+2
-2
product/ERP5Type/Base.py
product/ERP5Type/Base.py
+2
-1
product/ERP5Type/dynamic/lazy_class.py
product/ERP5Type/dynamic/lazy_class.py
+28
-6
product/ERP5Type/dynamic/portal_type_class.py
product/ERP5Type/dynamic/portal_type_class.py
+47
-27
product/ERP5Type/patches/DateTimePatch.py
product/ERP5Type/patches/DateTimePatch.py
+20
-0
product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py
product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py
+77
-25
product/ERP5Type/tests/ERP5TypeTestCase.py
product/ERP5Type/tests/ERP5TypeTestCase.py
+1
-15
product/ERP5Type/tests/testERP5Type.py
product/ERP5Type/tests/testERP5Type.py
+9
-1
product/Formulator/Widget.py
product/Formulator/Widget.py
+17
-0
product/ZSQLCatalog/SearchKey/DateTimeKey.py
product/ZSQLCatalog/SearchKey/DateTimeKey.py
+3
-0
No files found.
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountListForTrialBalance.py
View file @
39f2137b
...
...
@@ -685,6 +685,9 @@ for key, data in line_per_account.iteritems():
sort_key
=
(
node_string_index
,
node_title
,
mirror_section_title
)
analytic_dict
=
{}
for
analytic
,
uid
in
zip
(
group_analytic
,
analytic_key_list
):
if
analytic
==
'string_index'
:
title
=
uid
else
:
title
=
getAnalyticTitleFromUid
(
uid
)
analytic_dict
[
analytic
]
=
title
if
analytic
==
'section_uid'
:
...
...
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAccountStatementReportSectionList.py
View file @
39f2137b
...
...
@@ -100,6 +100,8 @@ request.set('analytic_column_list', analytic_column_list) # for Movement_getExpl
selection_columns
=
(
(
'date'
,
'Operation Date'
),
(
'Movement_getSpecificReference'
,
'Transaction Reference'
),
# XXX Movement_getSpecificReferenceOrExplanationReference is custom code
(
'Movement_getSpecificReferenceOrExplanationReference'
,
'Document Reference'
),
(
'mirror_section_title'
,
'Third Party'
),
(
'Movement_getExplanationTitleAndAnalytics'
,
'Title
\
n
Reference and Analytics'
if
analytic_column_list
else
'Title
\
n
Reference'
),
)
...
...
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getAnalyticColumnList.py
View file @
39f2137b
...
...
@@ -49,4 +49,7 @@ for base_category in \
title
=
portal
.
portal_categories
.
restrictedTraverse
(
base_category
).
getTitle
()
analytic_column_list
+=
((
'%s_translated_title'
%
base_category
,
title
),)
# XXX should be based on some preference !
analytic_column_list
+=
((
'string_index'
,
'Donor Analytic Code'
),)
return
analytic_column_list
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getTrialBalanceReportSectionList.py
View file @
39f2137b
...
...
@@ -71,6 +71,9 @@ for analytic in group_analytic:
elif
analytic
==
'section'
:
extra_columns
+=
((
'section_uid'
,
'Section'
),
(
'Movement_getSectionPriceCurrency'
,
'Accounting Currency'
))
group_analytic_uid
+=
(
'section_uid'
,)
elif
analytic
==
'string_index'
:
extra_columns
+=
((
'string_index'
,
'Donor Analytic Code'
),)
group_analytic_uid
+=
(
'string_index'
,)
else
:
for
analytic_column
in
possible_analytic_column_list
:
if
analytic_column
[
0
]
==
analytic
:
...
...
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Movement_getSpecificReferenceOrExplanationReference.py
0 → 100644
View file @
39f2137b
"""Return the "donor" code of the movement, or the explanation reference.
This script is custom code.
"""
movement
=
brain
.
getObject
()
if
not
(
movement
.
hasSourceReference
()
or
movement
.
hasDestinationReference
()):
return
movement
.
getExplanationValue
().
getReference
()
if
brain
.
section_uid
!=
brain
.
mirror_section_uid
:
if
movement
.
getSourceSectionUid
()
==
brain
.
section_uid
:
return
movement
.
getSourceReference
()
return
movement
.
getDestinationReference
()
# If we have a movement which exists for both section uid and mirror section uid,
# we can only guess what reference should be used.
if
round
(
brain
.
total_quantity
-
movement
.
getQuantity
(),
5
)
==
0
:
return
movement
.
getDestinationReference
()
return
delivery
.
getSourceReference
()
bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/Movement_getSpecificReferenceOrExplanationReference.xml
0 → 100644
View file @
39f2137b
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"PythonScript"
module=
"Products.PythonScripts.PythonScript"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
Script_magic
</string>
</key>
<value>
<int>
3
</int>
</value>
</item>
<item>
<key>
<string>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
name_container
</string>
</key>
<value>
<string>
container
</string>
</value>
</item>
<item>
<key>
<string>
name_context
</string>
</key>
<value>
<string>
context
</string>
</value>
</item>
<item>
<key>
<string>
name_m_self
</string>
</key>
<value>
<string>
script
</string>
</value>
</item>
<item>
<key>
<string>
name_subpath
</string>
</key>
<value>
<string>
traverse_subpath
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
brain, selection=None, **kwd
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Movement_getSpecificReferenceOrExplanationReference
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/account_workflow/transitions/delete.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/account_workflow/transitions/invalidate.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,22 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/account_workflow/transitions/validate.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/auto_plan.xml
View file @
39f2137b
...
...
@@ -29,7 +29,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +55,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/cancel.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,23 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Assignee
</string>
<string>
Associate
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/cancel_accounting_action.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string>
Cancel Transaction
</string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,22 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/confirm.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/delete.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/deliver.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/plan.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/restart.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,22 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/start.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/transitions/stop.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,22 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Assignee
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_bank_reconciliation/CatalogRelatedKeyTemplateItem/related_key_list.xml
deleted
100644 → 0
View file @
a64ceb40
<key_list>
<key>
aggregate_bank_reconciliation_date | category,catalog,delivery/stop_date/z_related_aggregate_bank_reconciliation
</key>
<key>
aggregate_bank_reconciliation_uid | category,catalog/uid/z_related_aggregate_bank_reconciliation
</key>
</key_list>
\ No newline at end of file
bt5/erp5_bank_reconciliation/WorkflowTemplateItem/portal_workflow/bank_reconciliation_validation_workflow/transitions/cancel.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,23 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_bank_reconciliation/WorkflowTemplateItem/portal_workflow/bank_reconciliation_validation_workflow/transitions/close.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,23 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_bank_reconciliation/WorkflowTemplateItem/portal_workflow/bank_reconciliation_validation_workflow/transitions/delete.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,23 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_bank_reconciliation/WorkflowTemplateItem/portal_workflow/bank_reconciliation_validation_workflow/transitions/open.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,23 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignee
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_bank_reconciliation/bt/template_catalog_related_key_list
deleted
100644 → 0
View file @
a64ceb40
aggregate_bank_reconciliation_uid | category,catalog/uid/z_related_aggregate_bank_reconciliation
aggregate_bank_reconciliation_date | category,catalog,delivery/stop_date/z_related_aggregate_bank_reconciliation
\ No newline at end of file
bt5/erp5_base/DocumentTemplateItem/portal_components/document.erp5.Image.py
View file @
39f2137b
...
...
@@ -340,7 +340,7 @@ class Image(TextConvertableMixin, File, OFSImage):
"""Resize and resample photo."""
icc_profile
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'..'
,
'misc'
,
'sRGB.icc'
)
parameter_list
=
[
'convert'
,
'-colorspace'
,
'sRGB'
,
'-depth'
,
'8'
,
parameter_list
=
[
'
/usr/bin/timeout'
,
'10'
,
'
convert'
,
'-colorspace'
,
'sRGB'
,
'-depth'
,
'8'
,
'-profile'
,
icc_profile
]
if
crop
:
parameter_list
+=
'-thumbnail'
,
'%sx%s^'
%
(
width
,
height
),
\
...
...
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/conversion_failed.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/convert_file.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/detect_uploaded_file.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -67,14 +71,6 @@
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Access contents information
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
...
...
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/process_conversion_failed.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/update_file_metadata.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_base/WorkflowTemplateItem/portal_workflow/processing_status_workflow/transitions/upload_file.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/ActionTemplateItem/portal_types/Time%20Budget%20Variation/view.xml
0 → 100644
View file @
39f2137b
<?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>
<none/>
</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>
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}/TimeBudgetVariation_view
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/DocumentTemplateItem/portal_components/document.erp5.BudgetCell.py
View file @
39f2137b
...
...
@@ -78,6 +78,12 @@ class BudgetCell(Predicate, MetaNode, Movement):
"Did not find title script for portal type: %r"
%
self
.
getPortalType
())
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'hasCellContent'
)
def
hasCellContent
(
self
,
base_id
=
'cell'
):
"""Budget Cells do not contain cells.
"""
return
False
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'getCurrentInventory'
)
def
getCurrentInventory
(
self
,
at_date
=
None
,
**
kw
):
""" Returns current inventory.
...
...
bt5/erp5_budget/DocumentTemplateItem/portal_components/document.erp5.BudgetLine.py
View file @
39f2137b
...
...
@@ -156,8 +156,9 @@ class BudgetLine(Predicate, XMLMatrix, VariatedMixin):
cell_key
=
budget_model
.
_getCellKeyFromInventoryListBrain
(
brain
,
self
,
cell_key_cache
=
cell_key_cache
)
# XXX total_quantity or total_price ??
if
cell_key
in
budget_dict
or
brain
.
total_price
is
not
None
:
previous_value
=
budget_dict
.
get
(
cell_key
,
0
)
budget_dict
[
cell_key
]
=
previous_value
+
brain
.
total_price
*
sign
budget_dict
[
cell_key
]
=
previous_value
+
(
brain
.
total_price
or
0
)
*
sign
return
budget_dict
...
...
bt5/erp5_budget/DocumentTemplateItem/portal_components/document.erp5.TimeBudgetVariation.py
0 → 100644
View file @
39f2137b
##############################################################################
#
# Copyright (c) 2008 Nexedi SA and Contributors. All Rights Reserved.
#
# 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
AccessControl.ZopeGuards
import
guarded_getattr
from
Products.ERP5Type
import
Permissions
,
PropertySheet
from
erp5.component.document.BudgetVariation
import
BudgetVariation
class
TimeBudgetVariation
(
BudgetVariation
):
""" A budget variation for time
A script will return the list of possible time frames. ?
Monthly / Quarterly or script ?
This only makes sense as a cell variation, because:
- budget level always have start_date / stop_date
- we do not have a UI to dynamically generate field
Inventory Axis is not configurable, it is always "time". Note that
we could also want to configure by mirror date, but this is not implemented for now.
Enable time interpolation ?
"""
# Default Properties
property_sheets
=
(
PropertySheet
.
Base
,
PropertySheet
.
XMLObject
,
PropertySheet
.
SimpleItem
,
PropertySheet
.
SortIndex
,
PropertySheet
.
Path
,
PropertySheet
.
Predicate
,
PropertySheet
.
BudgetVariation
)
# CMF Type Definition
meta_type
=
'ERP5 Time Budget Variation'
portal_type
=
'Time Budget Variation'
add_permission
=
Permissions
.
AddPortalContent
# Declarative security
security
=
ClassSecurityInfo
()
security
.
declareObjectProtected
(
Permissions
.
AccessContentsInformation
)
# zope.interface.implements(BudgetVariation, )
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'asBudgetPredicate'
)
def
asBudgetPredicate
(
self
):
"""This budget variation in a predicate
"""
return
NotImplemented
def
_getTimeSequenceList
(
self
,
context
):
time_sequence_select_method_id
=
self
.
getProperty
(
'time_sequence_select_method_id'
)
if
time_sequence_select_method_id
:
return
guarded_getattr
(
context
,
time_sequence_select_method_id
)()
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'getCellRangeForBudgetLine'
)
def
getCellRangeForBudgetLine
(
self
,
budget_line
,
matrixbox
=
0
):
"""The cell range added by this variation
"""
base_category
=
self
.
getProperty
(
'variation_base_category'
)
prefix
=
''
if
base_category
:
prefix
=
'%s/'
%
base_category
sequence_item_list
=
[
(
'%s%s'
%
(
prefix
,
sequence
.
getRelativeUrl
()),
sequence
.
getTranslatedTitle
())
for
sequence
in
self
.
_getTimeSequenceList
(
budget_line
)
]
variation_category_list
=
budget_line
.
getVariationCategoryList
()
if
matrixbox
:
return
[[
i
for
i
in
sequence_item_list
if
i
[
0
]
in
variation_category_list
]]
return
[[
i
[
0
]
for
i
in
sequence_item_list
if
i
[
0
]
in
variation_category_list
]]
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'getConsumptionCellRangeForBudgetLine'
)
def
getConsumptionCellRangeForBudgetLine
(
self
,
budget_line
,
matrixbox
=
0
,
engaged_budget
=
False
):
"""The cell range added by this variation for consumption
"""
return
self
.
getCellRangeForBudgetLine
(
budget_line
,
matrixbox
=
matrixbox
)
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'getInventoryQueryDict'
)
def
getInventoryQueryDict
(
self
,
budget_cell
):
""" Query dict to pass to simulation query
"""
if
not
self
.
isMemberOf
(
'budget_variation/budget_cell'
):
raise
NotImplementedError
(
"Only budget_cell budget variation is supported"
)
base_category
=
self
.
getProperty
(
'variation_base_category'
)
prefix
=
''
if
base_category
:
prefix
=
'%s/'
%
base_category
sequence_list
=
[
{
'relative_url'
:
'%s%s'
%
(
prefix
,
sequence
.
getRelativeUrl
()),
'from_date'
:
sequence
.
from_date
,
'at_date'
:
sequence
.
at_date
}
for
sequence
in
self
.
_getTimeSequenceList
(
budget_cell
.
getParentValue
())
]
self
.
log
(
"getInventoryQueryDict on"
,
(
budget_cell
,
budget_cell
.
getMembershipCriterionCategoryList
()))
for
membership_criterion
in
budget_cell
.
getMembershipCriterionCategoryList
():
self
.
log
(
" "
,
membership_criterion
)
if
membership_criterion
.
startswith
(
prefix
):
for
sequence
in
sequence_list
:
if
sequence
[
'relative_url'
]
==
membership_criterion
:
self
.
log
(
"getInventoryQueryDict on"
,
(
budget_cell
,
sequence
))
return
{
'from_date'
:
sequence
[
'from_date'
],
'at_date'
:
sequence
[
'at_date'
],
}
return
{}
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'getInventoryListQueryDict'
)
def
getInventoryListQueryDict
(
self
,
budget_line
):
"""Returns the query dict to pass to simulation query for a budget line
"""
if
not
self
.
isMemberOf
(
'budget_variation/budget_cell'
):
raise
NotImplementedError
(
"Only budget_cell budget variation is supported"
)
query_dict
=
{}
base_category
=
self
.
getProperty
(
'variation_base_category'
)
prefix
=
''
if
base_category
:
prefix
=
'%s/'
%
base_category
# XXX direct properties ... use domain instead ?
sequence_list
=
[
{
'slot_key'
:
'%s%s'
%
(
prefix
,
sequence
.
getRelativeUrl
()),
'from_date'
:
sequence
.
from_date
,
'at_date'
:
sequence
.
at_date
}
for
sequence
in
self
.
_getTimeSequenceList
(
budget_line
)
]
query_dict
=
dict
(
group_by_time_interval_list
=
sequence_list
,
#interpolation_method=self.getProperty('#interpolation_method'), # TODO
group_by_resource
=
False
,
# XXX I should not have to pass this.
#group_by=['time_interval_index'], # XXX and certainly not this
)
return
query_dict
def
_getCellKeyFromInventoryListBrain
(
self
,
brain
,
budget_line
,
cell_key_cache
=
None
):
"""Compute key from inventory brain, with support for virtual nodes.
"""
prefix
=
''
base_category
=
self
.
getProperty
(
'variation_base_category'
)
if
base_category
:
prefix
=
'%s/'
%
base_category
# TODO: if we use sequence key in group_by_time_interval_list we can maybe simplify this ?
sequence_cache_key
=
"sequence_key_list(%s, %s)"
%
(
self
.
getPath
(),
budget_line
.
getPath
())
sequence_key_list
=
cell_key_cache
.
get
(
sequence_cache_key
)
if
sequence_key_list
is
None
:
sequence_key_list
=
[
'%s%s'
%
(
prefix
,
sequence
.
getRelativeUrl
())
for
sequence
in
self
.
_getTimeSequenceList
(
budget_line
)
]
cell_key_cache
[
sequence_cache_key
]
=
sequence_key_list
key
=
sequence_key_list
[
brain
.
time_interval_index
]
return
key
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'getBudgetLineVariationRangeCategoryList'
)
def
getBudgetLineVariationRangeCategoryList
(
self
,
budget_line
):
"""Returns the Variation Range Category List that can be applied to this
budget line.
"""
base_category
=
self
.
getProperty
(
'variation_base_category'
)
prefix
=
''
if
base_category
:
prefix
=
'%s/'
%
base_category
return
[
(
sequence
.
getTranslatedTitle
(),
'%s%s'
%
(
prefix
,
sequence
.
getRelativeUrl
()))
for
sequence
in
self
.
_getTimeSequenceList
(
budget_line
)
]
security
.
declareProtected
(
Permissions
.
AccessContentsInformation
,
'getBudgetVariationRangeCategoryList'
)
def
getBudgetVariationRangeCategoryList
(
self
,
budget
):
"""Returns the Variation Range Category List that can be applied to this
budget.
"""
raise
NotImplementedError
(
"Only budget_cell budget variation is supported"
)
security
.
declareProtected
(
Permissions
.
ModifyPortalContent
,
'initializeBudgetLine'
)
def
initializeBudgetLine
(
self
,
budget_line
):
"""Initialize a budget line
"""
budget_line_variation_category_list
=
\
list
(
budget_line
.
getVariationBaseCategoryList
()
or
[])
budget_line_membership_criterion_base_category_list
=
\
list
(
budget_line
.
getMembershipCriterionBaseCategoryList
()
or
[])
base_category
=
self
.
getProperty
(
'variation_base_category'
)
if
base_category
:
budget_line_variation_category_list
.
append
(
base_category
)
budget_line
.
setVariationBaseCategoryList
(
budget_line_variation_category_list
)
if
self
.
isMemberOf
(
'budget_variation/budget_line'
):
budget_line_membership_criterion_base_category_list
.
append
(
base_category
)
budget_line
.
setMembershipCriterionBaseCategoryList
(
budget_line_membership_criterion_base_category_list
)
security
.
declareProtected
(
Permissions
.
ModifyPortalContent
,
'initializeBudget'
)
def
initializeBudget
(
self
,
budget
):
"""Initialize a budget.
"""
raise
ValueError
(
'TimeBudgetVariation are not applicable on budget'
)
bt5/erp5_budget/DocumentTemplateItem/portal_components/document.erp5.TimeBudgetVariation.xml
0 → 100644
View file @
39f2137b
<?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>
TimeBudgetVariation
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
document.erp5.TimeBudgetVariation
</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.patches.WorkflowTool"
/>
</pickle>
<pickle>
<tuple>
<none/>
<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>
</tuple>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
View file @
39f2137b
...
...
@@ -9,6 +9,7 @@
<portal_type
id=
"Budget Model"
>
<item>
Category Budget Variation
</item>
<item>
Node Budget Variation
</item>
<item>
Time Budget Variation
</item>
</portal_type>
<portal_type
id=
"Budget Model Module"
>
<item>
Budget Model
</item>
...
...
bt5/erp5_budget/PortalTypeTemplateItem/portal_types/Time%20Budget%20Variation.xml
0 → 100644
View file @
39f2137b
<?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>
<dictionary>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
acquire_local_roles
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
content_icon
</string>
</key>
<value>
<string>
document_icon.gif
</string>
</value>
</item>
<item>
<key>
<string>
content_meta_type
</string>
</key>
<value>
<string>
ERP5 Node Budget Variation
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
factory
</string>
</key>
<value>
<string>
addNodeBudgetVariation
</string>
</value>
</item>
<item>
<key>
<string>
filter_content_types
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
group_list
</string>
</key>
<value>
<tuple>
<string>
budget_variation
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Time Budget Variation
</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>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
type_class
</string>
</key>
<value>
<string>
TimeBudgetVariation
</string>
</value>
</item>
<item>
<key>
<string>
type_interface
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
type_mixin
</string>
</key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TranslationInformation"
module=
"Products.ERP5Type.TranslationProviderBase"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
domain_name
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
property_name
</string>
</key>
<value>
<string>
short_title
</string>
</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>
<none/>
</value>
</item>
<item>
<key>
<string>
property_name
</string>
</key>
<value>
<string>
title
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
View file @
39f2137b
...
...
@@ -35,6 +35,10 @@
<type>
Node Budget Variation
</type>
<workflow>
edit_workflow
</workflow>
</chain>
<chain>
<type>
Time Budget Variation
</type>
<workflow>
edit_workflow
</workflow>
</chain>
<chain>
<type>
Transaction Quantity Value Feasability Constraint
</type>
<workflow>
dynamic_class_generation_interaction_workflow
</workflow>
...
...
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view.xml
0 → 100644
View file @
39f2137b
<?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>
_bind_names
</string>
</key>
<value>
<object>
<klass>
<global
name=
"NameAssignments"
module=
"Shared.DC.Scripts.Bindings"
/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key>
<string>
_asgns
</string>
</key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
Base_edit
</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>
multipart/form-data
</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/>
</value>
</item>
<item>
<key>
<string>
center
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
left
</string>
</key>
<value>
<list>
<string>
my_title
</string>
<string>
my_int_index
</string>
<string>
my_translated_portal_type
</string>
<string>
my_budget_variation
</string>
<string>
my_variation_base_category
</string>
<string>
my_time_sequence_select_method_id
</string>
</list>
</value>
</item>
<item>
<key>
<string>
right
</string>
</key>
<value>
<list>
<string>
my_interpolation_method
</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
TimeBudgetVariation_view
</string>
</value>
</item>
<item>
<key>
<string>
method
</string>
</key>
<value>
<string>
POST
</string>
</value>
</item>
<item>
<key>
<string>
name
</string>
</key>
<value>
<string>
TimeBudgetVariation_view
</string>
</value>
</item>
<item>
<key>
<string>
pt
</string>
</key>
<value>
<string>
form_view
</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>
Time Budget Variation
</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>
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_budget_variation.xml
0 → 100644
View file @
39f2137b
<?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>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_budget_variation
</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>
field_id
</string>
</key>
<value>
<string>
my_category
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</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>
Budget Variation
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_int_index.xml
0 → 100644
View file @
39f2137b
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"IntegerField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_int_index
</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>
<item>
<key>
<string>
integer_out_of_range
</string>
</key>
<value>
<string>
The integer you entered was out of range.
</string>
</value>
</item>
<item>
<key>
<string>
not_integer
</string>
</key>
<value>
<string>
You did not enter an integer.
</string>
</value>
</item>
<item>
<key>
<string>
required_not_found
</string>
</key>
<value>
<string>
Input is required but no input given.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
end
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
start
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
end
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
start
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<int>
20
</int>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
end
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
start
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Index
</string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_interpolation_method.xml
0 → 100644
View file @
39f2137b
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ListField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_interpolation_method
</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>
<item>
<key>
<string>
required_not_found
</string>
</key>
<value>
<string>
Input is required but no input given.
</string>
</value>
</item>
<item>
<key>
<string>
unknown_selection
</string>
</key>
<value>
<string>
You selected an item that was not in the list.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra_item
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
first_item
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
size
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra_item
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
first_item
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
size
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string>
default
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra_item
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
first_item
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<list>
<tuple>
<string>
No Interpolation
</string>
<string>
default
</string>
</tuple>
<tuple>
<string>
Linear Interpolation
</string>
<string>
linear
</string>
</tuple>
<tuple>
<string>
Only Movements Fully Contained in TimeFrame
</string>
<string>
only_fully_contained_movement
</string>
</tuple>
<tuple>
<string>
All Movements Intersecting with TimeFrame
</string>
<string>
all_movement_intersecting_with_timeframe
</string>
</tuple>
</list>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
size
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Interpolation Method
</string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_time_sequence_select_method_id.xml
0 → 100644
View file @
39f2137b
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"StringField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_time_sequence_select_method_id
</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>
<item>
<key>
<string>
required_not_found
</string>
</key>
<value>
<string>
Input is required but no input given.
</string>
</value>
</item>
<item>
<key>
<string>
too_long
</string>
</key>
<value>
<string>
Too much input was given.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
Name of a script or a method that should return a list of time sequences.
</string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<int>
20
</int>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
input_type
</string>
</key>
<value>
<string>
text
</string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Select Method ID
</string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_title.xml
0 → 100644
View file @
39f2137b
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"StringField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_title
</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>
<item>
<key>
<string>
required_not_found
</string>
</key>
<value>
<string>
Input is required but no input given.
</string>
</value>
</item>
<item>
<key>
<string>
too_long
</string>
</key>
<value>
<string>
Too much input was given.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<int>
20
</int>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Title
</string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_translated_portal_type.xml
0 → 100644
View file @
39f2137b
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"StringField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_translated_portal_type
</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>
<item>
<key>
<string>
required_not_found
</string>
</key>
<value>
<string>
Input is required but no input given.
</string>
</value>
</item>
<item>
<key>
<string>
too_long
</string>
</key>
<value>
<string>
Too much input was given.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_maxwidth
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
display_width
</string>
</key>
<value>
<int>
20
</int>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Type
</string>
</value>
</item>
<item>
<key>
<string>
truncate
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/SkinTemplateItem/portal_skins/erp5_budget/TimeBudgetVariation_view/my_variation_base_category.xml
0 → 100644
View file @
39f2137b
<?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>
items
</string>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_variation_base_category
</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>
items
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</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_category
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
items
</string>
</key>
<value>
<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>
Base Category
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: [(\'\', \'\')] + [(\'%s - %s\' % (x.getId(), x.getTranslatedTitle()), x.getRelativeUrl()) for x in context.portal_categories.contentValues(sort_on=(\'id\', ))]
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_budget/bt/template_action_path_list
View file @
39f2137b
...
...
@@ -21,6 +21,7 @@ Budget | transfer_line_list_view
Budget | view
Category Budget Variation | view
Node Budget Variation | view
Time Budget Variation | view
Transaction Quantity Value Feasability Constraint | predicate
Transaction Quantity Value Feasability Constraint | view
Transaction Quantity Value Validity Constraint | predicate
...
...
bt5/erp5_budget/bt/template_document_id_list
View file @
39f2137b
...
...
@@ -10,3 +10,4 @@ document.erp5.CategoryBudgetVariation
document.erp5.NodeBudgetVariation
document.erp5.TransactionQuantityValueFeasabilityConstraint
document.erp5.TransactionQuantityValueValidityConstraint
document.erp5.TimeBudgetVariation
\ No newline at end of file
bt5/erp5_budget/bt/template_portal_type_allowed_content_type_list
View file @
39f2137b
...
...
@@ -2,6 +2,7 @@ Budget Line | Budget Cell
Budget Model Module | Budget Model
Budget Model | Category Budget Variation
Budget Model | Node Budget Variation
Budget Model | Time Budget Variation
Budget Module | Budget
Budget Transaction Module | Budget Transaction
Budget Transfer | Budget Transfer Line
...
...
bt5/erp5_budget/bt/template_portal_type_id_list
View file @
39f2137b
...
...
@@ -10,5 +10,6 @@ Budget Transfer
Budget Transfer Line
Category Budget Variation
Node Budget Variation
Time Budget Variation
Transaction Quantity Value Feasability Constraint
Transaction Quantity Value Validity Constraint
\ No newline at end of file
bt5/erp5_budget/bt/template_portal_type_workflow_chain_list
View file @
39f2137b
...
...
@@ -13,5 +13,6 @@ Budget | budget_workflow
Budget | edit_workflow
Category Budget Variation | edit_workflow
Node Budget Variation | edit_workflow
Time Budget Variation | edit_workflow
Transaction Quantity Value Feasability Constraint | dynamic_class_generation_interaction_workflow
Transaction Quantity Value Validity Constraint | dynamic_class_generation_interaction_workflow
\ No newline at end of file
bt5/erp5_core_proxy_field_legacy/SkinTemplateItem/portal_skins/erp5_core_proxy_field_legacy/Base_viewFieldLibrary/my_date.xml
View file @
39f2137b
...
...
@@ -271,7 +271,7 @@
</item>
<item>
<key>
<string>
default_timezone
</string>
</key>
<value>
<string>
GMT
</string>
</value>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
...
...
bt5/erp5_core_test/TestTemplateItem/portal_components/test.erp5.testInteractionWorkflow.py
View file @
39f2137b
...
...
@@ -28,6 +28,7 @@
##############################################################################
import
unittest
import
httplib
import
transaction
from
Products.ERP5Type.tests.ERP5TypeTestCase
import
ERP5TypeTestCase
...
...
@@ -612,6 +613,18 @@ context.setTitle('Bar')
# two calls: one to _setProperty, and one to _setDescription
self
.
assertEqual
(
len
(
call_list
),
6
)
def
test_interaction_workflow_methods_are_published
(
self
):
"""Wrapping a publishable method in an interaction workflow does not prevent its publication.
"""
self
.
assertIsNotNone
(
self
.
organisation
.
getTitle
.
__doc__
)
self
.
createInteractionWorkflow
()
self
.
interaction
.
setProperties
(
'default'
,
method_id
=
'getTitle'
)
self
.
assertIsNotNone
(
self
.
organisation
.
getTitle
.
__doc__
)
self
.
organisation
.
setTitle
(
self
.
id
())
ret
=
self
.
publish
(
'%s/getTitle'
%
self
.
organisation
.
getPath
(),
basic
=
'ERP5TypeTestCase:'
)
self
.
assertEqual
(
httplib
.
OK
,
ret
.
getStatus
())
self
.
assertEqual
(
self
.
id
(),
ret
.
getBody
())
def
test_security
(
self
):
# wrapping a method in an interaction workflow adds a default security to
...
...
bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/transitions/accept.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/transitions/reject.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_credential/WorkflowTemplateItem/portal_workflow/credential_validation_workflow/transitions/submit.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/accept.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/archive.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/assign.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/cancel.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,23 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Owner
</string>
<string>
Assignee
</string>
<string>
Assignor
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/delete.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,23 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Owner
</string>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/hide.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/publish.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/publish_alive.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/reject.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/release.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,22 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Associate
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/release_alive.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,22 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Associate
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/request.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/share.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,22 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Associate
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/share_alive.xml
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -59,22 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
roles
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Associate
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/split.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/submit.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_dms/WorkflowTemplateItem/portal_workflow/document_publication_workflow/transitions/translate.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_convertToBaseFormatAndDiscoverMetadata.xml
View file @
39f2137b
...
...
@@ -52,6 +52,14 @@
<key>
<string>
_params
</string>
</key>
<value>
<string>
filename=None, user_login=None, input_parameter_dict=None
</string>
</value>
</item>
<item>
<key>
<string>
_proxy_roles
</string>
</key>
<value>
<tuple>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Document_convertToBaseFormatAndDiscoverMetadata
</string>
</value>
...
...
bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_getPropertyDictFromContent.xml
View file @
39f2137b
...
...
@@ -52,6 +52,14 @@
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
_proxy_roles
</string>
</key>
<value>
<tuple>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Document_getPropertyDictFromContent
</string>
</value>
...
...
product/ERP5/Document/Amount.py
View file @
39f2137b
...
...
@@ -384,6 +384,7 @@ class Amount(Base, VariatedMixin):
# Stop any recursive call to this method. This happens when a Path
# does not have base unit price locally, so it looks it up, and
# each path of a predicate list does the same again.
return
0.01
# feature disabled
tv
=
getTransactionalVariable
()
key
=
'_getBaseUnitPrice'
if
key
in
tv
:
...
...
product/ERP5/__init__.py
View file @
39f2137b
...
...
@@ -98,3 +98,19 @@ def initialize( context ):
# backward compatibility names
XML
=
None
UI
=
None
# pyPdf has been replaced by pyPdf2, but there was https://nexedi.erp5.net/bug_module/20141204-33F729
try
:
import
pyPdf
except
ImportError
:
class
pyPdfGeneric
:
class
NameObject
(
str
):
pass
# XXX Seems both generic and Generic existed.
sys
.
modules
[
'pyPdf.Generic'
]
=
pyPdfGeneric
sys
.
modules
[
'pyPdf.generic'
]
=
pyPdfGeneric
sys
.
modules
[
'pyPdf'
]
=
pyPdfGeneric
# XXX previous version of this patch made that some documents have an instance of Products.ERP5.NameObject
NameObject
=
pyPdfGeneric
.
NameObject
product/ERP5/bootstrap/erp5_core/DocumentTemplateItem/portal_components/document.erp5.Movement.py
View file @
39f2137b
...
...
@@ -275,6 +275,7 @@ class Movement(XMLObject, Amount, CompositionMixin, AmountGeneratorMixin):
def
_getBaseUnitPrice
(
self
,
context
):
# Override Amount._getBaseUnitPrice to use Movement's
# getPriceCalculationOperandDict instead of Resource's.
return
0.01
# feature disabled
operand_dict
=
context
.
getPriceCalculationOperandDict
(
context
=
context
)
if
operand_dict
is
not
None
:
base_unit_price
=
operand_dict
.
get
(
'base_unit_price'
,
None
)
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewFieldLibrary/my_date_time_field.xml
View file @
39f2137b
...
...
@@ -287,7 +287,7 @@
</item>
<item>
<key>
<string>
default_timezone
</string>
</key>
<value>
<string>
GMT
</string>
</value>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewFieldLibrary/my_list_mode_listbox_creation_date.xml
View file @
39f2137b
...
...
@@ -11,6 +11,7 @@
<value>
<list>
<string>
date_only
</string>
<string>
default_timezone
</string>
<string>
editable
</string>
</list>
</value>
...
...
@@ -53,6 +54,20 @@
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
date_only
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default_timezone
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -76,6 +91,10 @@
<key>
<string>
date_only
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
default_timezone
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
0
</int>
</value>
...
...
@@ -98,4 +117,17 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
preferences/getPreferredTimeZone
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewFieldLibrary/my_view_mode_listbox_creation_date.xml
View file @
39f2137b
...
...
@@ -11,6 +11,7 @@
<value>
<list>
<string>
date_only
</string>
<string>
default_timezone
</string>
<string>
editable
</string>
</list>
</value>
...
...
@@ -53,6 +54,20 @@
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
date_only
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default_timezone
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -76,6 +91,10 @@
<key>
<string>
date_only
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
default_timezone
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
0
</int>
</value>
...
...
@@ -98,4 +117,17 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
preferences/getPreferredTimeZone
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewWorkflowActionDialog.xml
View file @
39f2137b
...
...
@@ -61,6 +61,7 @@
<key>
<string>
left
</string>
</key>
<value>
<list>
<string>
your_warning
</string>
<string>
your_comment
</string>
<string>
your_workflow_action
</string>
</list>
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewWorkflowActionDialog/your_comment.xml
View file @
39f2137b
...
...
@@ -176,7 +176,9 @@
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
...
...
@@ -281,13 +283,7 @@
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<tuple>
<tuple>
<string>
Products.Formulator.TALESField
</string>
<string>
TALESMethod
</string>
</tuple>
<none/>
</tuple>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
...
...
@@ -298,4 +294,17 @@
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: request.get(\'workflow_action\', request.get(\'field_your_workflow_action\')) in (\'cancel_action\', \'cancel_accounting_action\')
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewWorkflowActionDialog/your_warning.xml
0 → 100644
View file @
39f2137b
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"EditorField"
module=
"Products.ERP5Form.EditorField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_warning
</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>
<item>
<key>
<string>
line_too_long
</string>
</key>
<value>
<string>
A line was too long.
</string>
</value>
</item>
<item>
<key>
<string>
required_not_found
</string>
</key>
<value>
<string>
Input is required but no input given.
</string>
</value>
</item>
<item>
<key>
<string>
too_long
</string>
</key>
<value>
<string>
You entered too many characters.
</string>
</value>
</item>
<item>
<key>
<string>
too_many_lines
</string>
</key>
<value>
<string>
You entered too many lines.
</string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
height
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_linelength
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_lines
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
text_editor
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
height
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_linelength
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_lines
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
text_editor
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
alternate_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
css_class
</string>
</key>
<value>
<string>
hidden_label
</string>
</value>
</item>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
enabled
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
external_validator
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
extra
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
height
</string>
</key>
<value>
<int>
5
</int>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_linelength
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_lines
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
text_editor
</string>
</key>
<value>
<string>
text_area
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Warning
</string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<int>
40
</int>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
context/Base_viewWorkflowDialogWarningRenderer
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_viewWorkflowHistory/listbox_time.xml
View file @
39f2137b
...
...
@@ -10,9 +10,10 @@
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
<string>
date_only
</string>
<string>
default_timezone
</string>
<string>
editable
</string>
<string>
title
</string>
</list>
</value>
</item>
...
...
@@ -54,6 +55,20 @@
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
date_only
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
default_timezone
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -66,6 +81,10 @@
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
...
...
@@ -77,6 +96,10 @@
<key>
<string>
date_only
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
default_timezone
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
editable
</string>
</key>
<value>
<int>
0
</int>
</value>
...
...
@@ -103,4 +126,17 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TALESMethod"
module=
"Products.Formulator.TALESField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
preferences/getPreferredTimeZone
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Preference_viewHtmlStyle.xml
View file @
39f2137b
...
...
@@ -79,6 +79,7 @@
<value>
<list>
<string>
my_preferred_date_order
</string>
<string>
my_preferred_time_zone
</string>
<string>
my_preferred_html_style_unsaved_form_warning
</string>
<string>
my_preferred_html_style_developper_mode
</string>
<string>
my_preferred_html_style_contextual_help
</string>
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/
SystemPreference_view
/my_preferred_time_zone.xml
→
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/
Preference_viewHtmlStyle
/my_preferred_time_zone.xml
View file @
39f2137b
File moved
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.sql
View file @
39f2137b
<
dtml
-
if
group_by_time_interval_list
>
SELECT
slots
.
time_interval_index
,
q
.
*
FROM
(
</
dtml
-
if
>
SELECT
<
dtml
-
if
expr
=
"precision is not None"
>
SUM
(
ROUND
(
<
dtml
-
var
stock_table_id
>
.
quantity
...
...
@@ -10,7 +13,8 @@ SELECT
<
dtml
-
if
transformed_uid
>
*
transformation
.
quantity
</
dtml
-
if
>
,
<
dtml
-
var
precision
>
))
AS
converted_quantity
,
</
dtml
-
if
>
IFNULL
(
SUM
(
ROUND
(
<
dtml
-
var
stock_table_id
>
.
total_price
,
<
dtml
-
var
precision
>
)),
0
)
AS
total_price
IFNULL
(
SUM
(
ROUND
(
<
dtml
-
var
stock_table_id
>
.
total_price
,
<
dtml
-
var
precision
>
)),
0
)
AS
total_price
,
IFNULL
(
SUM
(
ROUND
(
<
dtml
-
var
stock_table_id
>
.
mirror_total_price
,
<
dtml
-
var
precision
>
)),
0
)
AS
mirror_total_price
<
dtml
-
else
>
SUM
(
<
dtml
-
var
stock_table_id
>
.
quantity
<
dtml
-
if
transformed_uid
>
*
transformation
.
quantity
</
dtml
-
if
>
)
AS
inventory
,
SUM
(
<
dtml
-
var
stock_table_id
>
.
quantity
<
dtml
-
if
transformed_uid
>
*
transformation
.
quantity
</
dtml
-
if
>
)
AS
total_quantity
,
...
...
@@ -20,7 +24,8 @@ SELECT
<
dtml
-
if
transformed_uid
>
*
transformation
.
quantity
</
dtml
-
if
>
),
12
)
AS
converted_quantity
,
</
dtml
-
if
>
IFNULL
(
SUM
(
<
dtml
-
var
stock_table_id
>
.
total_price
),
0
)
AS
total_price
IFNULL
(
SUM
(
<
dtml
-
var
stock_table_id
>
.
total_price
),
0
)
AS
total_price
,
IFNULL
(
SUM
(
<
dtml
-
var
stock_table_id
>
.
mirror_total_price
),
0
)
AS
mirror_total_price
</
dtml
-
if
>
<
dtml
-
if
inventory_list
>
,
...
...
@@ -56,6 +61,8 @@ SELECT
COUNT
(
DISTINCT
<
dtml
-
var
stock_table_id
>
.
uid
)
AS
stock_uid
,
MAX
(
<
dtml
-
var
stock_table_id
>
.
date
)
AS
date
</
dtml
-
if
>
<
dtml
-
if
group_by_time_interval_list
>
,
time_interval_index
as
_time_interval_index
</
dtml
-
if
>
<
dtml
-
if
select_expression
>
,
<
dtml
-
var
select_expression
></
dtml
-
if
>
FROM
...
...
@@ -69,6 +76,55 @@ FROM
</
dtml
-
if
>
</
dtml
-
in
>
,
<
dtml
-
var
stock_table_id
>
<
dtml
-
if
group_by_time_interval_list
>
RIGHT
JOIN
(
<
dtml
-
in
prefix
=
"time_interval"
expr
=
"_.list(_.enumerate(group_by_time_interval_list))"
>
SELECT
<
dtml
-
sqlvar
expr
=
"time_interval_key"
type
=
"int"
>
time_interval_index
,
<
dtml
-
sqlvar
expr
=
"time_interval_item.get('from_date')"
type
=
"datetime"
optional
>
time_interval_from_date
,
<
dtml
-
sqlvar
expr
=
"time_interval_item.get('at_date')"
type
=
"datetime"
optional
>
time_interval_at_date
,
<
dtml
-
sqlvar
expr
=
"time_interval_item.get('to_date')"
type
=
"datetime"
optional
>
time_interval_to_date
<
dtml
-
unless
time_interval_end
>
UNION
ALL
</
dtml
-
unless
>
</
dtml
-
in
>
)
slots
ON
<
dtml
-
if
group_by_time_interval_list
>
(
(
time_interval_from_date
is
not
null
AND
(
time_interval_at_date
is
not
null
AND
`stock`
.
`date`
>=
time_interval_from_date
AND
`stock`
.
`date`
<=
time_interval_at_date
)
OR
(
(
time_interval_to_date
is
not
null
AND
`stock`
.
`date`
>=
time_interval_from_date
AND
`stock`
.
`date`
<
time_interval_to_date
)
OR
(
`stock`
.
`date`
>=
time_interval_from_date
AND
time_interval_at_date
is
null
AND
time_interval_to_date
is
null
)
)
)
OR
(
time_interval_from_date
is
null
AND
(
(
time_interval_at_date
is
not
null
AND
(
`stock`
.
`date`
<=
time_interval_at_date
)
)
OR
`stock`
.
`date`
<
time_interval_to_date
)
)
)
<
dtml
-
else
>
(
(
time_interval_from_date
is
null
OR
stock
.
date
>=
time_interval_from_date
)
AND
(
time_interval_at_date
is
null
OR
stock
.
date
<=
time_interval_at_date
)
AND
(
time_interval_to_date
is
null
OR
stock
.
date
<
time_interval_to_date
)
)
</
dtml
-
if
>
</
dtml
-
if
>
</
dtml
-
if
>
<
dtml
-
if
quantity_unit_uid
>
<
dtml
-
comment
>
XXX
quantity
unit
conversion
will
not
work
when
using
implict_join
=
False
</
dtml
-
comment
>
LEFT
JOIN
quantity_unit_conversion
ON
...
...
@@ -116,9 +172,28 @@ WHERE
<
dtml
-
if
group_by_expression
>
GROUP
BY
<
dtml
-
if
transformed_uid
>
transformation
.
transformed_uid
,
</
dtml
-
if
>
<
dtml
-
if
group_by_time_interval_list
>
time_interval_index
,
</
dtml
-
if
>
<
dtml
-
var
group_by_expression
>
</
dtml
-
if
>
<
dtml
-
if
order_by_expression
>
ORDER
BY
<
dtml
-
var
order_by_expression
>
<
dtml
-
else
>
<
dtml
-
if
group_by_time_interval_list
>
ORDER
BY
time_interval_index
</
dtml
-
if
>
</
dtml
-
if
>
<
dtml
-
if
group_by_time_interval_list
>
)
q
RIGHT
JOIN
(
<
dtml
-
in
prefix
=
"time_interval"
expr
=
"_.list(_.enumerate(group_by_time_interval_list))"
>
SELECT
<
dtml
-
sqlvar
expr
=
"time_interval_key"
type
=
"int"
>
time_interval_index
,
<
dtml
-
sqlvar
expr
=
"time_interval_item.get('from_date')"
type
=
"datetime"
optional
>
time_interval_from_date
,
<
dtml
-
sqlvar
expr
=
"time_interval_item.get('at_date')"
type
=
"datetime"
optional
>
time_interval_at_date
,
<
dtml
-
sqlvar
expr
=
"time_interval_item.get('to_date')"
type
=
"datetime"
optional
>
time_interval_to_date
<
dtml
-
unless
time_interval_end
>
UNION
ALL
</
dtml
-
unless
>
</
dtml
-
in
>
)
slots
ON
(
q
.
_time_interval_index
=
slots
.
time_interval_index
)
</
dtml
-
if
>
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml
View file @
39f2137b
...
...
@@ -46,7 +46,8 @@ convert_quantity_result\n
quantity_unit_uid\n
stock_table_id=stock\n
transformed_uid\n
transformed_variation_text
</string>
</value>
transformed_variation_text\n
group_by_time_interval_list:list
</string>
</value>
</item>
<item>
<key>
<string>
cache_time_
</string>
</key>
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/SystemPreference_view.xml
View file @
39f2137b
...
...
@@ -82,7 +82,6 @@
<value>
<list>
<string>
my_priority
</string>
<string>
my_preferred_time_zone
</string>
<string>
my_preferred_document_conversion_server_url_list
</string>
<string>
my_preferred_document_conversion_server_retry
</string>
<string>
my_preferred_ooodoc_server_timeout
</string>
...
...
product/ERP5/bootstrap/erp5_core/ToolComponentTemplateItem/portal_components/tool.erp5.SimulationTool.py
View file @
39f2137b
...
...
@@ -600,6 +600,7 @@ class SimulationTool(BaseTool):
group_by_function_category
=
0
,
group_by_function_category_strict_membership
=
0
,
group_by_date
=
0
,
group_by_time_interval_list
=
(),
# sort_on
sort_on
=
None
,
group_by
=
None
,
...
...
@@ -981,6 +982,14 @@ class SimulationTool(BaseTool):
new_kw
[
'related_key_select_expression_list'
]
=
\
related_key_select_expression_list
for
slot_index
,
time_sequence
in
enumerate
(
group_by_time_interval_list
):
if
not
(
time_sequence
.
get
(
'from_date'
)
or
time_sequence
.
get
(
'at_date'
)
or
time_sequence
.
get
(
'to_date'
)):
raise
ValueError
(
"Invalid time sequence {slot_index}: {time_sequence!r}"
.
format
(
slot_index
=
slot_index
,
time_sequence
=
time_sequence
,
))
sql_kw
[
'group_by_time_interval_list'
]
=
group_by_time_interval_list
return
sql_kw
,
new_kw
#######################################################
...
...
@@ -1190,6 +1199,7 @@ class SimulationTool(BaseTool):
group_by_section_category
=
0
,
group_by_section_category_strict_membership
=
0
,
group_by_resource
=
None
,
group_by_time_interval_list
=
(),
group_by
=
None
,
**
ignored
):
"""
...
...
@@ -1209,7 +1219,8 @@ class SimulationTool(BaseTool):
group_by_function
or
group_by_mirror_section
or
group_by_payment
or
\
group_by_sub_variation
or
group_by_variation
or
\
group_by_movement
or
group_by_date
or
group_by_section_category
or
\
group_by_section_category_strict_membership
:
group_by_section_category_strict_membership
or
\
group_by_time_interval_list
:
if
group_by_resource
is
None
:
group_by_resource
=
1
new_group_by_dict
[
'group_by_resource'
]
=
group_by_resource
...
...
@@ -1316,7 +1327,8 @@ class SimulationTool(BaseTool):
# Get cached data
if
getattr
(
self
,
"Resource_zGetInventoryCacheResult"
,
None
)
is
not
None
and
\
optimisation__
and
(
not
kw
.
get
(
'from_date'
))
and
\
'transformed_resource'
not
in
kw
:
'transformed_resource'
not
in
kw
\
and
"group_by_time_interval_list"
not
in
kw
:
# Here is the different kind of date
# from_date : >=
# to_date : <
...
...
product/ERP5/bootstrap/erp5_core/WorkflowTemplateItem/portal_workflow/edit_workflow/transitions/edit.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,30 +59,13 @@
<item>
<key>
<string>
var_exprs
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
M
=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
I
=
</string>
</persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
...
...
@@ -91,7 +78,7 @@
<item>
<key>
<string>
comment
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
Q
=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
M
=
</string>
</persistent>
</value>
</item>
</dictionary>
...
...
@@ -100,7 +87,7 @@
</dictionary>
</pickle>
</record>
<record
id=
"
4"
aka=
"AAAAAAAAAAQ
="
>
<record
id=
"
3"
aka=
"AAAAAAAAAAM
="
>
<pickle>
<global
name=
"Expression"
module=
"Products.CMFCore.Expression"
/>
</pickle>
...
...
product/ERP5/bootstrap/erp5_core/WorkflowTemplateItem/portal_workflow/edit_workflow/transitions/edit_action.xml
View file @
39f2137b
...
...
@@ -10,6 +10,10 @@
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_icon
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
...
...
@@ -29,7 +33,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +59,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5/bootstrap/erp5_core/WorkflowTemplateItem/portal_workflow/validation_workflow/transitions/delete.xml
View file @
39f2137b
...
...
@@ -29,7 +29,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +55,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5/bootstrap/erp5_core/WorkflowTemplateItem/portal_workflow/validation_workflow/transitions/invalidate.xml
View file @
39f2137b
...
...
@@ -29,7 +29,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +55,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5/bootstrap/erp5_core/WorkflowTemplateItem/portal_workflow/validation_workflow/transitions/validate.xml
View file @
39f2137b
...
...
@@ -29,7 +29,7 @@
<item>
<key>
<string>
guard
</string>
</key>
<value>
<
persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent
>
<
none/
>
</value>
</item>
<item>
...
...
@@ -55,21 +55,4 @@
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"Guard"
module=
"Products.DCWorkflow.Guard"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
permissions
</string>
</key>
<value>
<tuple>
<string>
Modify portal content
</string>
</tuple>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
product/ERP5/tests/testInventoryAPI.py
View file @
39f2137b
...
...
@@ -1265,6 +1265,232 @@ class TestInventoryList(InventoryAPITestCase):
self
.
assertEqual
([
r
.
inventory
for
r
in
inventory_list
if
r
.
strict_use_uid
==
use
.
use1
.
use12
.
getUid
()],
[
11
])
def
test_group_by_time_interval
(
self
):
getInventoryList
=
self
.
getSimulationTool
().
getInventoryList
# Create 3 groups of movements:
self
.
_makeMovement
(
quantity
=
1
,
start_date
=
DateTime
(
'2016/01/01'
))
self
.
_makeMovement
(
quantity
=
3
,
start_date
=
DateTime
(
'2016/02/01'
))
self
.
_makeMovement
(
quantity
=
5
,
start_date
=
DateTime
(
'2016/02/02'
))
self
.
_makeMovement
(
quantity
=
7
,
start_date
=
DateTime
(
'2016/03/01'
))
# Create "noise" movement that we should not select
self
.
_makeMovement
(
quantity
=
10
,
start_date
=
DateTime
(
'2016/02/01'
),
destination_value
=
self
.
portal
.
organisation_module
.
newContent
())
inventory_list
=
getInventoryList
(
node_uid
=
self
.
node
.
getUid
(),
group_by_time_interval_list
=
[
{
'at_date'
:
DateTime
(
'2016/01/01'
).
latestTime
()
},
{
'from_date'
:
DateTime
(
'2016/02/01'
),
'to_date'
:
DateTime
(
'2016/03/01'
)
},
{
'from_date'
:
DateTime
(
'2016/03/01'
)
},
])
# by default, time sequence are returned sorted by keys.
self
.
assertEqual
(
3
,
len
(
inventory_list
))
self
.
assertEqual
(
1
,
inventory_list
[
0
].
total_quantity
)
self
.
assertEqual
(
0
,
inventory_list
[
0
].
time_interval_index
)
self
.
assertEqual
(
3
+
5
,
inventory_list
[
1
].
total_quantity
)
self
.
assertEqual
(
1
,
inventory_list
[
1
].
time_interval_index
)
self
.
assertEqual
(
7
,
inventory_list
[
2
].
total_quantity
)
self
.
assertEqual
(
2
,
inventory_list
[
2
].
time_interval_index
)
# now using all combinations of from_date, at_date & to_date
inventory_list
=
getInventoryList
(
node_uid
=
self
.
node
.
getUid
(),
group_by_time_interval_list
=
[
{
'at_date'
:
DateTime
(
'2016/01/01'
).
latestTime
()
},
{
'to_date'
:
DateTime
(
'2016/01/02'
)
},
# equivalent to above
{
'from_date'
:
DateTime
(
'2016/02/01'
),
'at_date'
:
DateTime
(
'2016/02/29'
).
latestTime
()
},
{
'from_date'
:
DateTime
(
'2016/02/01'
),
'to_date'
:
DateTime
(
'2016/03/01'
)
},
{
'from_date'
:
DateTime
(
'2016/03/01'
)
},
])
self
.
assertEqual
(
[
1
,
1
,
3
+
5
,
3
+
5
,
7
],
[
brain
.
inventory
for
brain
in
inventory_list
],
)
def
test_group_by_time_interval_empty_slots_are_returned
(
self
):
getInventoryList
=
self
.
getSimulationTool
().
getInventoryList
self
.
_makeMovement
(
title
=
"M1"
,
quantity
=
3
,
start_date
=
DateTime
(
'2016/01/01'
))
self
.
_makeMovement
(
title
=
"M2"
,
quantity
=
5
,
start_date
=
DateTime
(
'2016/02/01'
))
inventory_list
=
getInventoryList
(
node_uid
=
self
.
node
.
getUid
(),
group_by_time_interval_list
=
[
# before M1 -> empty
{
'at_date'
:
DateTime
(
'2001/01/01'
).
latestTime
()
},
{
'to_date'
:
DateTime
(
'2001/01/01'
)
},
{
'from_date'
:
DateTime
(
'1999/01/01'
),
'to_date'
:
DateTime
(
'2001/01/01'
)
},
{
'from_date'
:
DateTime
(
'1999/01/01'
),
'at_date'
:
DateTime
(
'2001/01/01'
)
},
# selecting M1
{
'from_date'
:
DateTime
(
'2016/01/01'
),
'to_date'
:
DateTime
(
'2016/01/02'
)
},
# between M1 & M2 -> empty
{
'from_date'
:
DateTime
(
'2016/01/02'
),
'at_date'
:
DateTime
(
'2001/01/03'
)
},
{
'from_date'
:
DateTime
(
'2016/01/02'
),
'to_date'
:
DateTime
(
'2001/01/03'
)
},
# selecting M2
{
'from_date'
:
DateTime
(
'2016/02/01'
),
'to_date'
:
DateTime
(
'2016/02/03'
)
},
# after M2 -> empty
{
'from_date'
:
DateTime
(
'2016/02/03'
),
'to_date'
:
DateTime
(
'2016/02/04'
)
},
{
'from_date'
:
DateTime
(
'2016/02/03'
),
'at_date'
:
DateTime
(
'2001/02/04'
)
},
{
'from_date'
:
DateTime
(
'2016/02/03'
)
},
])
self
.
assertEqual
(
[
None
,
None
,
None
,
None
,
3
,
None
,
None
,
5
,
None
,
None
,
None
,
],
[
x
.
inventory
for
x
in
inventory_list
],
)
def
test_group_by_time_interval_and_other_group_by
(
self
):
# group_by_time_interval_list can be used with other "group by" parameters
getInventoryList
=
self
.
getSimulationTool
().
getInventoryList
another_resource
=
self
.
_makeResource
()
self
.
_makeMovement
(
title
=
"M1"
,
quantity
=
5
,
start_date
=
DateTime
(
'2016/01/01'
))
self
.
_makeMovement
(
title
=
"M2"
,
quantity
=
7
,
start_date
=
DateTime
(
'2016/01/03'
))
self
.
_makeMovement
(
title
=
"M3"
,
quantity
=
11
,
resource_value
=
another_resource
,
start_date
=
DateTime
(
'2016/01/03'
))
self
.
assertEqual
(
{
(
0
,
self
.
resource
.
uid
):
5
,
(
1
,
self
.
resource
.
uid
):
7
,
(
1
,
another_resource
.
uid
):
11
,
},
{(
brain
.
time_interval_index
,
brain
.
resource_uid
):
brain
.
inventory
for
brain
in
getInventoryList
(
node_uid
=
self
.
node
.
getUid
(),
group_by_resource
=
True
,
group_by_time_interval_list
=
[
{
'at_date'
:
DateTime
(
'2016/01/02'
)
},
{
'from_date'
:
DateTime
(
'2016/01/02'
)
},
])},
)
def
test_group_by_time_interval_invalid_inputs
(
self
):
getInventoryList
=
self
.
getSimulationTool
().
getInventoryList
self
.
_makeMovement
(
title
=
"M1"
,
quantity
=
3
,
start_date
=
DateTime
(
'2016/01/02'
))
# no from_date, at_date or to_date on a slot raise a ValueError
with
self
.
assertRaises
(
ValueError
):
getInventoryList
(
node_uid
=
self
.
node
.
getUid
(),
group_by_time_interval_list
=
[{}],
)
# intervals where start_date > stop_date are valid, but select nothing
self
.
assertEqual
(
{
0
:
None
},
{
brain
.
time_interval_index
:
brain
.
inventory
for
brain
in
getInventoryList
(
node_uid
=
self
.
node
.
getUid
(),
group_by_time_interval_list
=
[{
'from_date'
:
DateTime
(
'2016/01/03'
),
'at_date'
:
DateTime
(
'2016/01/01'
)
}])
},
)
self
.
assertEqual
(
{
0
:
None
},
{
brain
.
time_interval_index
:
brain
.
inventory
for
brain
in
getInventoryList
(
node_uid
=
self
.
node
.
getUid
(),
group_by_time_interval_list
=
[{
'from_date'
:
DateTime
(
'2016/01/03'
),
'to_date'
:
DateTime
(
'2016/01/01'
)
}])
},
)
def
test_OmitInputOmitOutput
(
self
):
getInventoryList
=
self
.
getSimulationTool
().
getInventoryList
self
.
_makeMovement
(
quantity
=
1
,
price
=
1
)
...
...
product/ERP5/tests/testSecurity.py
View file @
39f2137b
...
...
@@ -31,6 +31,7 @@ import unittest
from
types
import
MethodType
from
Acquisition
import
aq_base
from
Products.ERP5Type.tests.ERP5TypeTestCase
import
ERP5TypeTestCase
from
Products.DCWorkflow.Transitions
import
TRIGGER_USER_ACTION
# You can invoke security tests in your favourite collection of business templates
# by using TestSecurityMixin like the following :
...
...
@@ -117,8 +118,8 @@ class TestSecurityMixin(ERP5TypeTestCase):
if
wf
.
__class__
.
__name__
==
'InteractionWorkflowDefinition'
:
continue
for
transition
in
wf
.
transitions
.
objectValues
():
if
getattr
(
transition
,
'trigger_type'
,
1
)
==
0
:
#
Automatic transition without guard is safe
if
getattr
(
transition
,
'trigger_type'
,
-
1
)
!=
TRIGGER_USER_ACTION
:
#
Only user action workflow transitions needs a security definition.
continue
if
getattr
(
transition
,
'guard'
,
None
)
is
None
:
error_list
.
append
(
'%s/transitions/%s'
%
(
wf
.
getId
(),
transition
.
getId
()))
...
...
product/ERP5Type/Accessor/Constant.py
View file @
39f2137b
...
...
@@ -32,7 +32,7 @@ from Accessor import Accessor
# Creation of default constructor
class
func_code
:
pass
class
PropertyGetter
:
class
PropertyGetter
(
object
)
:
"""
This is class is mostly used in order to handle compatibility
issues when we wish to make a property a method. For instance,
...
...
@@ -43,7 +43,7 @@ class PropertyGetter:
func_code
.
co_argcount
=
0
func_defaults
=
()
def
__init__
(
self
,
id
,
value
=
None
):
def
__init__
(
self
,
id
=
None
,
value
=
None
):
self
.
_id
=
id
self
.
__name__
=
id
self
.
value
=
value
...
...
product/ERP5Type/Base.py
View file @
39f2137b
...
...
@@ -165,7 +165,8 @@ class WorkflowMethod(Method):
# This is intentional to prevent methods such as submit, share to
# be called from a URL. If someone can show that this way
# is wrong (ex. for remote operation of a site), let us know.
if
not
method
.
__name__
.
startswith
(
'_'
):
self
.
__doc__
=
method
.
__doc__
if
method
.
__name__
.
startswith
(
'_'
)
or
method
.
__doc__
is
None
:
self
.
__name__
=
method
.
__name__
for
func_id
in
[
'func_code'
,
'func_defaults'
,
'func_dict'
,
'func_doc'
,
'func_globals'
,
'func_name'
]:
setattr
(
self
,
func_id
,
getattr
(
method
,
func_id
,
None
))
...
...
product/ERP5Type/dynamic/lazy_class.py
View file @
39f2137b
...
...
@@ -20,6 +20,26 @@ from accessor_holder import AccessorHolderType
import
persistent_migration
from
ZODB.POSException
import
ConflictError
from
contextlib
import
contextmanager
import
time
import
logging
@
contextmanager
def
_log_time_usage
(
prefix
=
""
):
'''log the time usage in a code block
prefix: the prefix text to show
'''
start
=
time
.
time
()
try
:
yield
finally
:
end
=
time
.
time
()
elapsed_seconds
=
float
(
"%.4f"
%
(
end
-
start
))
if
elapsed_seconds
>
0.5
:
logging
.
critical
(
'%s: elapsed seconds: %s'
,
prefix
,
elapsed_seconds
)
logging
.
info
(
'%s: elapsed seconds: %s'
,
prefix
,
elapsed_seconds
)
class
ERP5BaseBroken
(
Broken
,
ERP5Base
,
PersistentBroken
):
# PersistentBroken can't be reused directly
# because its « layout differs from 'GhostPortalType' »
...
...
@@ -269,6 +289,7 @@ class PortalTypeMetaClass(GhostBaseMetaClass, PropertyHolder):
return
getattr
(
cls
.
__bases__
[
0
],
name
)
if
not
name
.
startswith
(
'__'
)
and
cls
.
__isghost__
:
with
_log_time_usage
(
'loadClass (%s)'
%
cls
):
cls
.
loadClass
()
return
getattr
(
cls
,
name
)
...
...
@@ -297,6 +318,7 @@ class PortalTypeMetaClass(GhostBaseMetaClass, PropertyHolder):
# generate all methods on Base accessor holder, with all methods
# returning False, and redefine on portal types only those returning True,
# aka only those for the group they belong to
if
1
:
#with _log_time_usage("generating isAccessors for %s" % cls):
for
group
in
ERP5TypeInformation
.
defined_group_list
:
value
=
cls
.
__name__
in
site
.
_getPortalGroupedTypeSet
(
group
)
accessor_name
=
'is'
+
UpperCase
(
group
)
+
'Type'
...
...
product/ERP5Type/dynamic/portal_type_class.py
View file @
39f2137b
...
...
@@ -348,6 +348,24 @@ def generatePortalTypeClass(site, portal_type_name):
interface_class_list
,
attribute_dict
)
from
contextlib
import
contextmanager
import
time
import
logging
@
contextmanager
def
_log_time_usage
(
prefix
=
""
):
'''log the time usage in a code block
prefix: the prefix text to show
'''
start
=
time
.
time
()
try
:
yield
finally
:
end
=
time
.
time
()
elapsed_seconds
=
float
(
"%.4f"
%
(
end
-
start
))
logging
.
info
(
'%s: elapsed seconds: %s'
,
prefix
,
elapsed_seconds
)
def
loadTempPortalTypeClass
(
portal_type_name
):
"""
Returns a class suitable for a temporary portal type
...
...
@@ -463,6 +481,8 @@ def synchronizeDynamicModules(context, force=False):
LOG
(
"ERP5Type.dynamic"
,
0
,
"Resetting dynamic classes"
)
try
:
with
_log_time_usage
(
"Resetting dynamic classes"
):
for
_
,
klass
in
inspect
.
getmembers
(
erp5
.
portal_type
,
inspect
.
isclass
):
# Zope Interface is implemented through __implements__,
...
...
product/ERP5Type/patches/DateTimePatch.py
View file @
39f2137b
...
...
@@ -248,6 +248,26 @@ def DateTime_parse(self, st, datefmt=getDefaultDateFormat()):
DateTimeKlass
.
_parse
=
DateTime_parse
def
DateTime_latestTime
(
self
):
"""Return a new DateTime object that represents the latest
possible time (in whole seconds) that still falls within
the current object
\
'
s day, in the object
\
'
s timezone context.
Patched to return a date in the "natural time zone" when called on the day
of DST change.
An example problematic day is 2013/03/31, where DST switched at 2h00
2013/03/31 00:00:00 is GMT+1 but 2013/03/31 23:59:59 is GMT+2
The default behaviour of this method would be to return 2013/03/31 23:59:59
still in GMT+1, which is 22h59 local time.
"""
if
self
.
_hour
==
self
.
_minute
==
self
.
_second
==
0
:
return
self
.
__class__
(
self
.
_year
,
self
.
_month
,
self
.
_day
,
23
,
59
,
59
)
return
self
.
__class__
(
self
.
_year
,
self
.
_month
,
self
.
_day
,
23
,
59
,
59
,
self
.
_tz
)
DateTimeKlass
.
latestTime
=
DateTime_latestTime
if
__name__
==
'__main__'
:
for
i
in
(
'2007/01/02 12:34:56.789'
,
'2007/01/02 12:34:56.789 GMT+0200'
,
...
...
product/ERP5Type/tests/ERP5TypeFunctionalTestCase.py
View file @
39f2137b
...
...
@@ -45,6 +45,7 @@ from selenium import webdriver
from
selenium.webdriver.common.by
import
By
from
selenium.webdriver.support.ui
import
WebDriverWait
from
selenium.webdriver.support
import
expected_conditions
as
EC
from
selenium.webdriver.remote.remote_connection
import
RemoteConnection
# selenium workaround for localhost / 127.0.0.1 resolution
# ------
...
...
@@ -122,7 +123,7 @@ class Xvfb(Process):
with
open
(
os
.
devnull
,
'w'
)
as
null
:
self
.
_exec
(
(
xvfb_bin
,
'-fbdir'
,
self
.
fbdir
,
display
,
'-screen'
,
'0'
,
'
1280x1024
x24'
),
'-screen'
,
'0'
,
'
2560x2048
x24'
),
stdout
=
null
,
stderr
=
null
,
close_fds
=
True
)
# try to check if X screen is available
time
.
sleep
(
5
)
...
...
@@ -163,7 +164,7 @@ class FunctionalTestRunner:
# Such information should be automatically loaded
self
.
user
=
'ERP5TypeTestCase'
self
.
password
=
''
self
.
run_only
=
run_only
self
.
run_only
=
run_only
or
'aact_zuite_debug'
profile_dir
=
os
.
path
.
join
(
self
.
instance_home
,
'profile'
)
self
.
portal
=
portal
...
...
@@ -172,6 +173,8 @@ class FunctionalTestRunner:
return
self
.
portal
.
portal_tests
.
TestTool_getResults
(
self
.
run_only
)
def
_getTestBaseURL
(
self
):
return
'https://[2001:67c:1254:26::5e5f]:8445/erp5/'
# Access the https proxy in front of runUnitTest's zserver
base_url
=
os
.
getenv
(
'zserver_frontend_url'
)
if
base_url
:
...
...
@@ -185,9 +188,11 @@ class FunctionalTestRunner:
)
def
test
(
self
,
debug
=
0
):
xvfb
=
Xvfb
(
self
.
instance_home
)
try
:
xvfb
=
browser
=
None
if
0
:
if
not
(
debug
and
os
.
getenv
(
'DISPLAY'
)):
xvfb
=
Xvfb
(
self
.
instance_home
)
print
(
"
\
n
Set 'erp5_debug_mode' environment variable to 1"
" to use your existing display instead of Xvfb."
)
xvfb
.
run
()
...
...
@@ -196,6 +201,7 @@ class FunctionalTestRunner:
capabilities
[
'marionette'
]
=
True
# Zope is accessed through apache with a certificate not trusted by firefox
capabilities
[
'acceptInsecureCerts'
]
=
True
# Service workers are disabled on Firefox 52 ESR:
# https://bugzilla.mozilla.org/show_bug.cgi?id=1338144
options
=
webdriver
.
FirefoxOptions
()
...
...
@@ -206,6 +212,46 @@ class FunctionalTestRunner:
geckodriver
=
os
.
path
.
join
(
os
.
path
.
dirname
(
firefox_bin
),
'geckodriver'
)
kw
.
update
(
firefox_binary
=
firefox_bin
,
executable_path
=
geckodriver
)
browser
=
webdriver
.
Firefox
(
**
kw
)
else
:
# workaround for https://github.com/SeleniumHQ/selenium/issues/6534
# TODO: version up selenium
if
0
:
executor
=
RemoteConnection
(
'https://selenium:jefmnwhzsral@[2001:67c:1254:26::40e6]:9443/wd/hub'
,
keep_alive
=
True
)
import
urllib3
executor
.
_conn
=
urllib3
.
PoolManager
(
cert_reqs
=
'CERT_NONE'
,
ca_certs
=
None
)
else
:
executor
=
'http://10.0.128.126:4444/wd/hub'
browser
=
webdriver
.
Remote
(
command_executor
=
executor
,
desired_capabilities
=
{
'browserName'
:
'firefox'
,
# or chrome
#'version': '52.9.0esr',
#'version': '68.0.2esr',
'acceptInsecureCerts'
:
True
,
})
# browser.set_window_size()
"""
Editor Delete Cell
Maximize Gadget Editor
Sort in the Editor
Sum Column Updated
Editing Sum Column Updates all Cells ( precision 2 )
"""
"""
Editor Copy and Paste
Adding a New Line
Editor Copy and Paste Using , as Decimal Separator
Editor Delete Cell
Editor Refuses Duplicate Cell Coordinates
Editor Refuses Unknown Dimensions
Maximize Gadget Editor
Sort in the Editor
Sum Column Updated
"""
start_time
=
time
.
time
()
browser
.
get
(
self
.
_getTestBaseURL
()
+
'/login_form'
)
login_field
=
WebDriverWait
(
browser
,
10
).
until
(
...
...
@@ -221,7 +267,9 @@ class FunctionalTestRunner:
WebDriverWait
(
browser
,
10
).
until
(
EC
.
url_changes
(
login_form_url
))
WebDriverWait
(
browser
,
10
).
until
(
EC
.
presence_of_element_located
((
By
.
TAG_NAME
,
'body'
)))
browser
.
get
(
self
.
_getTestURL
())
#browser.set_window_size(1680, 1024)
from
Testing
import
ZopeTestCase
ZopeTestCase
.
_print
(
"using window size: %r
\
n
"
%
(
browser
.
get_window_size
()))
WebDriverWait
(
browser
,
10
).
until
(
EC
.
presence_of_element_located
((
By
.
XPATH
,
'//iframe[@id="testSuiteFrame"]'
)))
...
...
@@ -242,8 +290,10 @@ class FunctionalTestRunner:
).
encode
(
'UTF-8'
),
html_parser
)
browser
.
quit
()
finally
:
if
browser
:
browser
.
quit
()
if
xvfb
:
xvfb
.
quit
()
return
iframe
...
...
@@ -377,6 +427,8 @@ class ERP5TypeFunctionalTestCase(ERP5TypeTestCase):
self
.
logMessage
(
message
%
message_args
)
self
.
logMessage
(
"-"
*
79
)
self
.
logMessage
(
detail
)
with
open
(
'/srv/slapgrid/slappart3/srv/runner/public/func_test.html'
,
'w'
)
as
f
:
f
.
write
(
detail
)
self
.
logMessage
(
"-"
*
79
)
if
failure
or
error
:
self
.
_verboseErrorLog
(
20
)
...
...
product/ERP5Type/tests/ERP5TypeTestCase.py
View file @
39f2137b
...
...
@@ -591,6 +591,7 @@ class ERP5TypeTestCaseMixin(ProcessingNodeTestCase, PortalTestCase):
ERP5Site
.
getBootstrapDirectory
()
bt5_path_list
=
os
.
environ
[
'erp5_tests_bt5_path'
].
split
(
','
)
bt5_path_list
+=
[
os
.
path
.
join
(
path
,
"*"
)
for
path
in
bt5_path_list
]
bt5_path_list
+=
[
'/srv/slapgrid/slappart3/srv/runner/project/aact/bt5/'
]
def
search
(
path
,
template
):
urltype
,
url
=
urllib
.
splittype
(
path
+
'/'
+
template
)
...
...
@@ -1534,21 +1535,6 @@ def optimize():
self
.
_filepath
=
self
.
get_filepath
()
PythonScript
.
_makeFunction
=
_makeFunction
# Do not reindex portal types sub objects by default
# We will probably disable reindexing for other types later
full_indexing_set
=
set
(
os
.
environ
.
get
(
'enable_full_indexing'
,
''
).
split
(
','
))
if
not
'portal_types'
in
full_indexing_set
:
from
Products.ERP5Type.Core.ActionInformation
import
ActionInformation
from
Products.ERP5Type.Core.RoleInformation
import
RoleInformation
ActionInformation
.
isIndexable
=
RoleInformation
.
isIndexable
=
\
ConstantGetter
(
'isIndexable'
,
value
=
False
)
if
not
'portal_property_sheets'
in
full_indexing_set
:
from
Products.ERP5Type.Core.StandardProperty
import
StandardProperty
from
Products.ERP5Type.Core.CategoryProperty
import
CategoryProperty
from
Products.ERP5Type.mixin.constraint
import
ConstraintMixin
StandardProperty
.
isIndexable
=
CategoryProperty
.
isIndexable
=
\
ConstraintMixin
.
isIndexable
=
ConstantGetter
(
'isIndexable'
,
value
=
False
)
optimize
()
@
onsetup
...
...
product/ERP5Type/tests/testERP5Type.py
View file @
39f2137b
...
...
@@ -33,7 +33,7 @@ except ImportError: # BBB: ZODB < 4
import
unittest
import
sys
import
mock
import
httplib
import
transaction
from
random
import
randint
from
unittest
import
expectedFailure
...
...
@@ -3026,6 +3026,14 @@ return True''')
person
.
validate
()
self
.
assertRaises
(
WorkflowException
,
person
.
validate
)
def
test_workflow_transitions_are_not_published
(
self
):
person
=
self
.
getPersonModule
().
newContent
(
portal_type
=
'Person'
)
# workflow methods are not published by zope because they don't have a __doc__ attribute
self
.
assertIsNone
(
person
.
validate
.
__doc__
)
ret
=
self
.
publish
(
'%s/validate'
%
person
.
getPath
(),
basic
=
'ERP5TypeTestCase:'
)
self
.
assertEqual
(
httplib
.
NOT_FOUND
,
ret
.
getStatus
())
self
.
assertEqual
(
'draft'
,
person
.
getValidationState
())
def
test_PropertyConstantGetter
(
self
):
"""
Check the boolean constant getter. Make sure
...
...
product/Formulator/Widget.py
View file @
39f2137b
...
...
@@ -1346,6 +1346,11 @@ class DateTimeWidget(Widget):
description
=
(
"Display timezone"
),
default
=
0
)
default_timezone
=
fields
.
StringField
(
'default_timezone'
,
title
=
"Default timezone"
,
description
=
(
"Convert dates to the given timezone"
),
default
=
''
)
default
=
fields
.
DateTimeField
(
'default'
,
title
=
"Default"
,
description
=
(
"The default datetime."
),
...
...
@@ -1453,6 +1458,7 @@ class DateTimeWidget(Widget):
This only describes the field format settings, not the actual
format of provided value.
query : Passthrough of given value.
timezone: the timezone to consider.
"""
if
not
value
:
return
None
...
...
@@ -1463,11 +1469,17 @@ class DateTimeWidget(Widget):
value
=
value
.
encode
(
field
.
get_form_encoding
())
return
{
'query'
:
value
,
'format'
:
field
.
get_value
(
'date_separator'
).
join
(
input_order
),
'timezone'
:
field
.
get_value
(
'default_timezone'
),
'type'
:
'date'
}
def
render
(
self
,
field
,
key
,
value
,
REQUEST
,
render_prefix
=
None
):
use_ampm
=
field
.
get_value
(
'ampm_time_style'
)
use_timezone
=
field
.
get_value
(
'timezone_style'
)
timezone
=
field
.
get_value
(
'default_timezone'
)
# FIXME: backwards compatibility hack:
if
not
hasattr
(
field
,
'sub_form'
):
from
StandardFields
import
create_datetime_text_sub_form
field
.
sub_form
=
create_datetime_text_sub_form
(
field
)
# Is it still usefull to test the None value,
# as DateTimeField should be considerer as the other field
...
...
@@ -1486,6 +1498,8 @@ class DateTimeWidget(Widget):
ampm
=
None
timezone
=
field
.
get_value
(
"default_timezone"
)
if
isinstance
(
value
,
DateTime
):
if
timezone
:
value
=
value
.
toZone
(
timezone
)
year
=
"%04d"
%
value
.
year
()
month
=
"%02d"
%
value
.
month
()
day
=
"%02d"
%
value
.
day
()
...
...
@@ -1550,6 +1564,9 @@ class DateTimeWidget(Widget):
use_ampm
=
field
.
get_value
(
'ampm_time_style'
)
use_timezone
=
field
.
get_value
(
'timezone_style'
)
default_timezone
=
field
.
get_value
(
'default_timezone'
)
if
default_timezone
:
value
=
value
.
toZone
(
default_timezone
)
year
=
"%04d"
%
value
.
year
()
month
=
"%02d"
%
value
.
month
()
...
...
product/ZSQLCatalog/SearchKey/DateTimeKey.py
View file @
39f2137b
...
...
@@ -58,7 +58,10 @@ def castDate(value, change_timezone=True):
# input.
assert
value
[
'type'
]
==
'date'
format
=
value
.
get
(
'format'
)
timezone
=
value
.
get
(
'timezone'
)
value
=
value
[
'query'
]
if
timezone
:
value
=
"%s %s"
%
(
value
,
timezone
)
if
format
==
'%m/%d/%Y'
:
date_kw
.
pop
(
'datefmt'
)
if
isinstance
(
value
,
DateTime
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment