From 5b15b0f9d51c3a1c19cf0790e0cd6b259eec36fa Mon Sep 17 00:00:00 2001 From: Sebastien Robin <seb@nexedi.com> Date: Wed, 23 Feb 2011 16:43:19 +0000 Subject: [PATCH] Improve the monthly report : - display a summary of time spend for the full period in another listbox - add report a project module level in order to display results for many projects at a time git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@43626 20353a03-c40f-0410-a6d1-a30d3c3de9de --- .../worker_monthly_report.xml | 85 +++ ...Module_viewODSMonthlyReportPrintDialog.xml | 136 +++++ .../your_at_date.xml | 96 +++ .../your_from_date.xml | 96 +++ .../your_report_depth.xml | 252 ++++++++ .../your_simulation_state.xml | 90 +++ .../your_worker_title_list.xml | 298 +++++++++ .../Project_generateMonthDomain.xml | 60 +- .../Project_getMonthlyObjectList.xml | 16 +- .../Project_getMonthlyReportContext.xml | 8 +- .../Project_getMonthlyReportSectionList.xml | 88 ++- .../erp5_project/Project_init.xml | 2 +- .../Project_viewMonthlySummaryReportData.xml | 148 +++++ .../listbox.xml | 570 ++++++++++++++++++ bt5/erp5_project/bt/revision | 2 +- bt5/erp5_project/bt/template_action_path_list | 1 + 16 files changed, 1894 insertions(+), 54 deletions(-) create mode 100644 bt5/erp5_project/ActionTemplateItem/portal_types/Project%20Module/worker_monthly_report.xml create mode 100644 bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog.xml create mode 100644 bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_at_date.xml create mode 100644 bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_from_date.xml create mode 100644 bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_report_depth.xml create mode 100644 bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_simulation_state.xml create mode 100644 bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_worker_title_list.xml create mode 100644 bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewMonthlySummaryReportData.xml create mode 100644 bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewMonthlySummaryReportData/listbox.xml diff --git a/bt5/erp5_project/ActionTemplateItem/portal_types/Project%20Module/worker_monthly_report.xml b/bt5/erp5_project/ActionTemplateItem/portal_types/Project%20Module/worker_monthly_report.xml new file mode 100644 index 0000000000..469c92a92e --- /dev/null +++ b/bt5/erp5_project/ActionTemplateItem/portal_types/Project%20Module/worker_monthly_report.xml @@ -0,0 +1,85 @@ +<?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_report</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_report</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>worker_monthly_report</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Action Information</string> </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>1.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Worker Monthly Report</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}/ProjectModule_viewODSMonthlyReportPrintDialog</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog.xml new file mode 100644 index 0000000000..fa64e36055 --- /dev/null +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog.xml @@ -0,0 +1,136 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ERP5Form" module="Products.ERP5Form.Form"/> + </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>Project_viewMonthlyReport</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> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>left</string> </key> + <value> + <list> + <string>your_report_depth</string> + <string>your_worker_title_list</string> + </list> + </value> + </item> + <item> + <key> <string>right</string> </key> + <value> + <list> + <string>your_simulation_state</string> + <string>your_from_date</string> + <string>your_at_date</string> + </list> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ProjectModule_viewODSMonthlyReportPrintDialog</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>Project_viewODSMonthlyPrintDialog</string> </value> + </item> + <item> + <key> <string>pt</string> </key> + <value> <string>form_dialog</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>Monthly Report</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> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_at_date.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_at_date.xml new file mode 100644 index 0000000000..61b4ae9195 --- /dev/null +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_at_date.xml @@ -0,0 +1,96 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list> + <string>required</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>your_at_date</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <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>your_at_date</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Project_viewDialogFieldLibrary</string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_from_date.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_from_date.xml new file mode 100644 index 0000000000..004b7e776b --- /dev/null +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_from_date.xml @@ -0,0 +1,96 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>delegated_list</string> </key> + <value> + <list> + <string>required</string> + </list> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>your_from_date</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>field_id</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string></string> </value> + </item> + <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>your_from_date</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Project_viewDialogFieldLibrary</string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_report_depth.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_report_depth.xml new file mode 100644 index 0000000000..76019272a7 --- /dev/null +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_report_depth.xml @@ -0,0 +1,252 @@ +<?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>your_report_depth</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>5</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>Report Depth</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_simulation_state.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_simulation_state.xml new file mode 100644 index 0000000000..35246b8c2f --- /dev/null +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_simulation_state.xml @@ -0,0 +1,90 @@ +<?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/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>your_simulation_state</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>your_simulation_state</string> </value> + </item> + <item> + <key> <string>form_id</string> </key> + <value> <string>Project_viewDialogFieldLibrary</string> </value> + </item> + <item> + <key> <string>target</string> </key> + <value> <string>Click to edit the target</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_worker_title_list.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_worker_title_list.xml new file mode 100644 index 0000000000..abd34548f8 --- /dev/null +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/ProjectModule_viewODSMonthlyReportPrintDialog/your_worker_title_list.xml @@ -0,0 +1,298 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="LinesField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>your_worker_title_list</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>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>view_separator</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> <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>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>view_separator</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></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> + <list/> + </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>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>1</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Workers</string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>view_separator</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +<br /> + +]]></string> </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> +</ZopeData> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_generateMonthDomain.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_generateMonthDomain.xml index ec7482bbab..26eaf74447 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_generateMonthDomain.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_generateMonthDomain.xml @@ -76,32 +76,38 @@ if depth == 0:\n current_month = None\n # We must initialize from_date at the beginning of the month\n current_date = from_date\n - month_dict = request.form.get(\'month_dict\', None)\n - if month_dict is None:\n - month_dict = {}\n - current_date_year = current_date.year()\n - current_date_month = current_date.month()\n - at_date_year = at_date.year()\n - at_date_month = at_date.month()\n - while True:\n - month_dict[(current_date_year, current_date_month)] = 1\n - if current_date_year == at_date_year and current_date_month == at_date_month:\n - break\n - current_date_month += 1\n - if current_date_month == 13:\n - current_date_month = 0\n - current_date_year += 1\n - request.form[\'month_dict\'] = month_dict\n -\n - category_list = []\n - i = 1\n - month_dict_list = month_dict.keys()\n - month_dict_list.sort()\n - for year, month in month_dict_list:\n - category_list.append(here.getObject().asContext(title="%s - %s" % (year, month),\n - string_index="%s-%s" % (year, month),\n + is_total = here.is_total\n + if is_total:\n + category_list.append(here.getObject().asContext(title=here.full_date_string,\n + string_index=here.full_date_string,\n ))\n - i += 1\n + else:\n + month_dict = request.form.get(\'month_dict\', None)\n + if month_dict is None:\n + month_dict = {}\n + current_date_year = current_date.year()\n + current_date_month = current_date.month()\n + at_date_year = at_date.year()\n + at_date_month = at_date.month()\n + while True:\n + month_dict[(current_date_year, current_date_month)] = 1\n + if current_date_year == at_date_year and current_date_month == at_date_month:\n + break\n + current_date_month += 1\n + if current_date_month == 13:\n + current_date_month = 0\n + current_date_year += 1\n + request.form[\'month_dict\'] = month_dict\n +\n + category_list = []\n + #i = 1\n + month_dict_list = month_dict.keys()\n + month_dict_list.sort()\n + for year, month in month_dict_list:\n + category_list.append(here.getObject().asContext(title="%s - %s" % (year, month),\n + string_index="%s-%s" % (year, month),\n + ))\n + #i += 1\n \n else:\n object_dict = here.object_dict\n @@ -110,8 +116,8 @@ else:\n object_url_dict = {}\n project_to_display_dict = here.monthly_project_to_display_dict.get(string_index, {})\n if depth == 1:\n - category_list = [x for x in here.project_list \n - if project_to_display_dict.has_key(x.getRelativeUrl())]\n + category_list = [here.project_dict[x] for x in project_to_display_dict.keys() if\n + here.project_dict.has_key(x)]\n else:\n parent_category_list = parent.getMembershipCriterionCategoryList()\n category_list = []\n diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyObjectList.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyObjectList.xml index 2717423d19..af28de7a86 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyObjectList.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyObjectList.xml @@ -61,16 +61,24 @@ current_criterion = object_domain.getCriterionList()\n date = current_criterion[0].identity\n result_list = []\n if len(object_domain.getMembershipCriterionBaseCategoryList())==0:\n - # First level, so level of month\n + # First level, so level of month, we display summary of total\n + # quantity per worker for the full month\n returned_object = summary_dict.get(date, None)\n if returned_object is not None:\n result_list.append(returned_object)\n else:\n returned_object = object_dict.get(date, None)\n if returned_object is not None:\n - for k,v in returned_object.items():\n - if object_domain.test(v, strict_membership=1):\n - result_list.append(v)\n + # optimisation, in this report we have exactly one temp object at most\n + # matching our domain, and we have already a dict with nice keys, so\n + # there is no need to parse all temp objects\n + membership_criterion_category_list = object_domain.getMembershipCriterionCategoryList()\n + assert len(membership_criterion_category_list) == 1\n + membership_criterion_category = membership_criterion_category_list[0]\n + assert membership_criterion_category.startswith(\'source_project/\')\n + project_relative_url = membership_criterion_category[len(\'source_project/\'):]\n + if returned_object.has_key(project_relative_url):\n + result_list.append(returned_object[project_relative_url])\n return result_list\n </string> </value> </item> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyReportContext.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyReportContext.xml index 132cb21aaa..5ab5c88d86 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyReportContext.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyReportContext.xml @@ -53,15 +53,17 @@ <value> <string>context = context.asContext(object_dict=object_dict,\n summary_dict=summary_dict,\n column_list=column_list,\n - project_list=project_list,\n - monthly_project_to_display_dict=monthly_project_to_display_dict)\n + project_dict=project_dict,\n + monthly_project_to_display_dict=monthly_project_to_display_dict,\n + is_total=is_total,\n + full_date_string=full_date_string)\n \n return context\n </string> </value> </item> <item> <key> <string>_params</string> </key> - <value> <string>object_dict, summary_dict, column_list, project_list, monthly_project_to_display_dict,**kw</string> </value> + <value> <string>object_dict, summary_dict, column_list, project_dict, monthly_project_to_display_dict,is_total, full_date_string,**kw</string> </value> </item> <item> <key> <string>id</string> </key> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyReportSectionList.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyReportSectionList.xml index 7d7ef075a7..c222154481 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyReportSectionList.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_getMonthlyReportSectionList.xml @@ -55,8 +55,10 @@ from Products.ZSQLCatalog.SQLCatalog import Query\n request = context.REQUEST\n \n -object_dict = {} # it contains required temp object to display the report\n -total_object_dict = {}\n +object_dict = {} # it contains required temp object to display the listbox\n + # with the amount of time per worker/month/project line\n +total_object_dict = {} # this is for listbox with amount of time\n + # per worker/project line\n \n column_list= []\n worker_column_list = []\n @@ -82,6 +84,8 @@ if at_date is None:\n at_date = context.getStopDate()\n request.set(\'at_date\',at_date)\n simulation_state = request.get(\'simulation_state\', None)\n +full_date_string = "%s-%s -> %s-%s" % (from_date.year(), from_date.month(),\n + at_date.year(), at_date.month())\n \n \n \n @@ -93,13 +97,39 @@ result_list = portal.portal_simulation.getInventoryList(\n at_date=at_date, **inventory_kw)\n \n monthly_worker_quantity_dict = {} # Used to get quantity per month and per worker\n + # and per project line\n monthly_project_to_display_dict = {} # Used to get project urls to display per month\n # in the report tree\n +total_project_to_display_dict = {} # Used to get project urls to display in the summary\n +total_worker_quantity_dict = {} # Used to get quantity per project line and per worker for\n + # the full period\n +full_date_total_worker_quantity_dict = \\\n + total_worker_quantity_dict.setdefault(full_date_string, {})\n +full_date_total_object_dict = total_object_dict.setdefault(full_date_string, {})\n +full_date_total_project_to_display_dict = \\\n + total_project_to_display_dict.setdefault(full_date_string, {})\n +\n \n source_uid_dict = {}\n project_uid_dict = {}\n project_relative_url_dict = {}\n \n +def fillDictWithParentAndChildRelativeUrls(my_dict, document_url):\n + if my_dict.get(document_url) is None:\n + splitted_document_url = document_url.split(\'/\')\n + for x in xrange(0, len(splitted_document_url)):\n + my_dict[\'/\'.join(splitted_document_url[0:x+1])] = 1\n +\n +\n +def getNextMonthStart(date):\n + """\n + return the next month date of the param date\n + """\n + if date.month()==12:\n + return DateTime(date.year()+1, date.month(), 1)\n + else:\n + return DateTime(date.year(), date.month()+1, 1)\n +\n for task_line in result_list:\n # initialize some variables\n source_uid = task_line.node_uid\n @@ -135,17 +165,23 @@ for task_line in result_list:\n project_relative_url_dict[\'/\'.join(project_value.getRelativeUrl().split(\'/\')[0:2])] = 1\n quantity = - task_line.inventory\n project_relative_url = project_dict[\'relative_url\']\n + full_date_total_worker_quantity_dict[source_relative_url] = \\\n + full_date_total_worker_quantity_dict.get(source_relative_url, 0) + quantity\n + if not full_date_total_object_dict.has_key(project_relative_url):\n + temp_object = temp_object_container.newContent(portal_type = \'Project Line\',\n + temp_object=1,\n + string_index = full_date_string,\n + category_list = [\'source_project/%s\' % project_relative_url])\n + full_date_total_object_dict[project_relative_url] = temp_object\n + current_temp_object = full_date_total_object_dict[project_relative_url]\n + object_quantity = quantity + current_temp_object.getProperty(source_relative_url, 0)\n + current_temp_object.setProperty(source_relative_url, object_quantity)\n +\n # diff in day between the begin and the end of the task\n diff_day = stop_date_task - start_date_task + 1\n \n - def getNextMonthStart(date):\n - """\n - return the next month date of the param date\n - """\n - if date.month()==12:\n - return DateTime(date.year()+1, date.month(), 1)\n - else:\n - return DateTime(date.year(), date.month()+1, 1)\n + fillDictWithParentAndChildRelativeUrls(full_date_total_project_to_display_dict, \n + project_relative_url)\n \n timekeeper = start_date_task\n while timekeeper <= stop_date_task :\n @@ -155,10 +191,7 @@ for task_line in result_list:\n \n worker_quantity_dict = monthly_worker_quantity_dict.setdefault(string_index, {})\n project_to_display_dict = monthly_project_to_display_dict.setdefault(string_index, {})\n - if project_to_display_dict.get(project_relative_url, None) is None:\n - splitted_project_url = project_relative_url.split(\'/\')\n - for x in xrange(0, len(splitted_project_url)):\n - project_to_display_dict[\'/\'.join(splitted_project_url[0:x+1])] = 1\n + fillDictWithParentAndChildRelativeUrls(project_to_display_dict, project_relative_url)\n \n if not quantity_dict.has_key(project_relative_url):\n temp_object = temp_object_container.newContent(portal_type = \'Project Line\',\n @@ -183,6 +216,16 @@ for string_index, worker_quantity_dict in monthly_worker_quantity_dict.items():\ for source_relative_url, quantity in worker_quantity_dict.items():\n temp_object.setProperty(source_relative_url, quantity)\n \n +# Now build temp objects for quantity per worker\n +total_summary_dict = {}\n +for string_index, worker_quantity_dict in total_worker_quantity_dict.items():\n + temp_object = temp_object_container.newContent(portal_type = \'Project Line\',\n + temp_object=1,\n + string_index = string_index)\n + total_summary_dict[string_index] = temp_object\n + for source_relative_url, quantity in worker_quantity_dict.items():\n + temp_object.setProperty(source_relative_url, quantity)\n +\n column_list.extend(worker_column_list)\n \n selection_name = \'project_monthly_report_selection\'\n @@ -193,11 +236,11 @@ result = []\n from Products.ERP5Form.Report import ReportSection\n param_dict = {}\n \n -project_list = []\n +project_dict = {}\n for project_relative_url in project_relative_url_dict.keys():\n - project_list.append(portal.restrictedTraverse(project_relative_url))\n -param_list = [object_dict, summary_dict, column_list, project_list,\n - monthly_project_to_display_dict]\n + project_dict[project_relative_url] = portal.restrictedTraverse(project_relative_url)\n +param_list = [object_dict, summary_dict, column_list, project_dict,\n + monthly_project_to_display_dict, False, full_date_string]\n \n result.append(ReportSection(\n path=context.getPhysicalPath(),\n @@ -205,6 +248,15 @@ result.append(ReportSection(\n method_id=\'Project_getMonthlyReportContext\',\n listbox_display_mode=\'ReportTreeMode\',\n form_id=\'Project_viewMonthlyReportData\'))\n +\n +param_list = [total_object_dict, total_summary_dict, column_list, project_dict,\n + total_project_to_display_dict, True, full_date_string]\n +result.append(ReportSection(\n + path=context.getPhysicalPath(),\n + param_list=param_list,\n + method_id=\'Project_getMonthlyReportContext\',\n + listbox_display_mode=\'ReportTreeMode\',\n + form_id=\'Project_viewMonthlySummaryReportData\'))\n return result\n diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_init.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_init.xml index 3e93551cfa..038b14c7ad 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_init.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_init.xml @@ -52,7 +52,7 @@ <key> <string>_body</string> </key> <value> <string>"""Initialize an unique codification on project, because projects are often used as security group.\n """\n -codification = context.getPortalObject().portal_ids.generateNewId(id_group=\'project.codification\', id_generator=\'uid\', default=1)\n +codification = context.getPortalObject().portal_ids.generateNewLengthId(id_group=\'project.codification\', default=1)\n context.setCodification(\'PROJ-%s\' % codification)\n </string> </value> </item> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewMonthlySummaryReportData.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewMonthlySummaryReportData.xml new file mode 100644 index 0000000000..ba2b4820e5 --- /dev/null +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewMonthlySummaryReportData.xml @@ -0,0 +1,148 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ERP5Form" module="Products.ERP5Form.Form"/> + </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>Project_getObjectDateDict</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>edit_order</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>left</string> + <string>right</string> + <string>center</string> + <string>bottom</string> + <string>hidden</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>bottom</string> </key> + <value> + <list> + <string>listbox</string> + </list> + </value> + </item> + <item> + <key> <string>center</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>left</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>right</string> </key> + <value> + <list/> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Project_viewMonthlySummaryReportData</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>Project_viewMonthlyReport</string> </value> + </item> + <item> + <key> <string>pt</string> </key> + <value> <string>form_dialog</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>Monthly Report</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> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewMonthlySummaryReportData/listbox.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewMonthlySummaryReportData/listbox.xml new file mode 100644 index 0000000000..698c0cc2da --- /dev/null +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewMonthlySummaryReportData/listbox.xml @@ -0,0 +1,570 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ListBox" module="Products.ERP5Form.ListBox"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>listbox</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>all_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>anchor</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>count_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_attributes</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>lines</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>meta_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>page_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>select</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>url_columns</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>all_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>anchor</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>columns</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>count_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_attributes</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>lines</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>meta_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>page_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>select</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>url_columns</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>all_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>anchor</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>columns</string> </key> + <value> + <list> + <tuple> + <string>title</string> + <string>Title</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>count_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_display_style</string> </key> + <value> <string>table</string> </value> + </item> + <item> + <key> <string>default_params</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_style_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>domain_root_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>domain_tree</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>editable_columns</string> </key> + <value> + <list/> + </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>global_attributes</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>global_search_column</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>hide_rows_on_no_search_criterion</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>lines</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>list_action</string> </key> + <value> <string>list</string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>meta_types</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>page_navigation_template</string> </key> + <value> <string>ListBox_viewSliderPageNavigationRenderer</string> </value> + </item> + <item> + <key> <string>page_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> + <list> + <tuple> + <string>Task</string> + <string>Task</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>report_root_list</string> </key> + <value> + <list> + <tuple> + <string>project_report_monthly_domain</string> + <string>Month</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>report_tree</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>row_css_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>search_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>select</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string>project_monthly_report_selection</string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>sort_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>stat_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>stat_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>style_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Monthly Summary Report</string> </value> + </item> + <item> + <key> <string>untranslatable_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>url_columns</string> </key> + <value> + <list/> + </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <tuple> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + <tuple/> + </tuple> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>python: here.column_list</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="Method" module="Products.Formulator.MethodField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>method_name</string> </key> + <value> <string>Project_getMonthlyObjectList</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_project/bt/revision b/bt5/erp5_project/bt/revision index 2975e638ba..4d5b34789e 100644 --- a/bt5/erp5_project/bt/revision +++ b/bt5/erp5_project/bt/revision @@ -1 +1 @@ -788 \ No newline at end of file +793 \ No newline at end of file diff --git a/bt5/erp5_project/bt/template_action_path_list b/bt5/erp5_project/bt/template_action_path_list index 985fbbd079..1ca68ea4ac 100644 --- a/bt5/erp5_project/bt/template_action_path_list +++ b/bt5/erp5_project/bt/template_action_path_list @@ -17,6 +17,7 @@ Project Milestone | create_new_file Project Milestone | document_list Project Milestone | view Project Module | view +Project Module | worker_monthly_report Project | add_task_related Project | bug_list Project | content -- 2.30.9