From 479e75015d37999852a8fd47235ffe31a04b4676 Mon Sep 17 00:00:00 2001 From: Sebastien Robin <seb@nexedi.com> Date: Fri, 12 Sep 2008 14:02:50 +0000 Subject: [PATCH] 2008-09-12 Seb * Added per month per worker quantity summary * added simulation state dialog parameter * added from_date dialog parameter * added at_date dialog parameter git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@23590 20353a03-c40f-0410-a6d1-a30d3c3de9de --- .../Project_generateMonthDomain.xml | 15 ++-- .../Project_getMonthlyObjectList.xml | 56 +++++------- .../Project_printAsODSMonthly.xml | 77 +++++++++------- .../Project_viewODSMonthlyReport.xml | 18 ++-- ...roject_viewODSMonthlyReportPrintDialog.xml | 19 ++-- .../your_at_date.xml | 87 +++++++++++++++++++ .../your_from_date.xml | 87 +++++++++++++++++++ ...language.xml => your_simulation_state.xml} | 6 +- bt5/erp5_project/bt/revision | 2 +- 9 files changed, 262 insertions(+), 105 deletions(-) create mode 100644 bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_at_date.xml create mode 100644 bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_from_date.xml rename bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/{your_target_language.xml => your_simulation_state.xml} (92%) 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 4c2a10d976..4e1cb380a7 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 @@ -117,9 +117,6 @@ else:\n object_url_dict[\'/\'.join(splitted_object_url[0:x+1])] = 1\n for parent_category in parent_category_list:\n parent_category = \'/\'.join(parent_category.split(\'/\')[1:])\n - context.log(\'string_index\', getattr(parent, \'string_index\'))\n - context.log(\'parent_category\', parent_category)\n - context.log(\'object_sub_dict\', object_sub_dict)\n if object_url_dict.has_key(parent_category):\n category_child_list = context.restrictedTraverse(parent_category).contentValues(portal_type=project_line_portal_type)\n for category_child in category_child_list:\n @@ -132,15 +129,17 @@ for category in category_list:\n string_index = getattr(category, \'string_index\', None)\n if string_index is None:\n string_index = getattr(parent, \'string_index\')\n + domain_kw = {}\n + if depth >= 1:\n + domain_kw[\'membership_criterion_base_category\'] = (\'source_project\', )\n + domain_kw[\'membership_criterion_category\'] = (\'source_project/\' + category.getRelativeUrl(),)\n domain = parent.generateTempDomain(id = \'%s_%s\' % (depth, i))\n domain.edit(title = category.getTitle(),\n domain_generator_method_id = script.id,\n criterion_property_list = [\'string_index\'] ,\n string_index = string_index,\n - membership_criterion_base_category = (\'source_project\', ),\n - membership_criterion_category = (\'source_project/\' + category.getRelativeUrl(),),\n - domain_generator_method_id = script.id,\n - uid = category.getUid())\n + uid = category.getUid(),\n + **domain_kw)\n domain.setCriterion(\'string_index\', identity=string_index)\n domain_list.append(domain)\n i += 1\n @@ -229,7 +228,9 @@ return domain_list\n <string>category_child</string> <string>category</string> <string>string_index</string> + <string>domain_kw</string> <string>domain</string> + <string>_apply_</string> <string>script</string> </tuple> </value> 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 4998419cc5..43ecbea529 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 @@ -9,22 +9,10 @@ </pickle> <pickle> <dictionary> - <item> - <key> <string>Python_magic</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>Script_magic</string> </key> <value> <int>3</int> </value> </item> - <item> - <key> <string>__ac_local_roles__</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>_bind_names</string> </key> <value> @@ -70,16 +58,25 @@ \n object_domain = selection_report.asDomainItemDict()[\'project_report_monthly_domain\']\n object_dict = context.object_dict\n +summary_dict = context.summary_dict\n \n +context.log(\'object_domain.showDict\', object_domain.showDict())\n current_criterion = object_domain.getCriterionList()\n date = current_criterion[0].identity\n -returned_object = object_dict.get(date,None)\n result_list = []\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 +if len(object_domain.getMembershipCriterionBaseCategoryList())==0:\n + # First level, so level of 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 \n +context.log(\'result_list\', [x.showDict() for x in result_list])\n return result_list\n </string> </value> </item> @@ -89,18 +86,6 @@ return result_list\n <none/> </value> </item> - <item> - <key> <string>_filepath</string> </key> - <value> - <none/> - </value> - </item> - <item> - <key> <string>_owner</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>_params</string> </key> <value> <string>selection_report=None, selection=None, selection_domain=None, report_url=None, **kw</string> </value> @@ -139,14 +124,19 @@ return result_list\n <string>object_domain</string> <string>context</string> <string>object_dict</string> + <string>summary_dict</string> <string>current_criterion</string> <string>date</string> + <string>result_list</string> + <string>len</string> <string>None</string> <string>returned_object</string> - <string>result_list</string> <string>_getiter_</string> <string>k</string> <string>v</string> + <string>append</string> + <string>$append0</string> + <string>x</string> </tuple> </value> </item> @@ -170,12 +160,6 @@ return result_list\n <key> <string>id</string> </key> <value> <string>Project_getMonthlyObjectList</string> </value> </item> - <item> - <key> <string>uid</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>warnings</string> </key> <value> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_printAsODSMonthly.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_printAsODSMonthly.xml index cdd84c2ebe..49cf2902ca 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_printAsODSMonthly.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_printAsODSMonthly.xml @@ -9,22 +9,10 @@ </pickle> <pickle> <dictionary> - <item> - <key> <string>Python_magic</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>Script_magic</string> </key> <value> <int>3</int> </value> </item> - <item> - <key> <string>__ac_local_roles__</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>_bind_names</string> </key> <value> @@ -67,6 +55,7 @@ <key> <string>_body</string> </key> <value> <string encoding="cdata"><![CDATA[ +from Products.ZSQLCatalog.SQLCatalog import Query\n request = context.REQUEST\n start_date = context.getStartDate()\n stop_date = context.getStopDate()\n @@ -80,6 +69,17 @@ worker_column_list = []\n source_project_uid_list = [x.uid for x in context.portal_catalog(\n relative_url=\'%s%%\' % context.getRelativeUrl())]\n \n +\n +sql_kw = {}\n +if kw.has_key(\'from_date\') and kw[\'from_date\'] is not None:\n + query_kw = {\'delivery.start_date\' : kw[\'from_date\'],\n + \'range\' : \'min\'}\n + sql_kw[\'delivery.start_date\'] = Query(**query_kw)\n +if kw.has_key(\'at_date\') and kw[\'at_date\'] is not None:\n + query_kw = {\'delivery.stop_date\' : kw[\'at_date\'],\n + \'range\' : \'ngt\'}\n + sql_kw[\'delivery.stop_date\'] = Query(**query_kw)\n +\n # Make sure to not include "confirmed tasks" in any case, because in\n # this case we must take task reports\n if kw.has_key(\'simulation_state\') and len(kw[\'simulation_state\']) > 0 :\n @@ -95,18 +95,20 @@ task_list = [x.getObject() for x in \\\n portal_type=\'Task\',\n source_project_uid = source_project_uid_list,\n simulation_state = task_simulation_state,\n - )]\n + **sql_kw)]\n task_list.extend([x.getObject() for x in \\\n context.portal_catalog(\n portal_type=\'Task Report\',\n source_project_uid = source_project_uid_list,\n simulation_state = task_report_simulation_state,\n - )])\n + **sql_kw)])\n \n task_line_list = []\n for task in task_list:\n task_line_list.extend(task.objectValues(portal_type=(\'Task Line\', \'Task Report Line\')))\n \n +monthly_worker_quantity_dict = {} # Used to get quantity per month and per worker\n +\n \n for task_line in task_line_list:\n # initialize some variables\n @@ -146,23 +148,37 @@ for task_line in task_line_list:\n timekeeper = start_date_task\n while timekeeper <= stop_date_task :\n next_timekeeper = getNextMonthStart(timekeeper)\n - quantity_dict = object_dict.setdefault("%s-%s" % ( timekeeper.year(), timekeeper.month()), {})\n + string_index = "%s-%s" % ( timekeeper.year(), timekeeper.month())\n + quantity_dict = object_dict.setdefault(string_index, {})\n + \n + worker_quantity_dict = monthly_worker_quantity_dict.setdefault(string_index, {})\n + \n if not quantity_dict.has_key(project_relative_url):\n temp_object = context.newContent(portal_type = \'Project Line\',\n temp_object=1,\n - string_index = "%s-%s" % (timekeeper.year() , timekeeper.month()),\n + string_index = string_index,\n category_list = [\'source_project/%s\' % project_relative_url])\n quantity_dict[project_relative_url] = temp_object\n current_temp_object = quantity_dict[project_relative_url]\n current_month_quantity = (min(next_timekeeper,stop_date_task+1) - timekeeper )/ diff_day * quantity\n -\n object_quantity = current_month_quantity + current_temp_object.getProperty(source, 0)\n + worker_quantity_dict[source] = worker_quantity_dict.get(source, 0) + current_month_quantity\n current_temp_object.setProperty(source, object_quantity)\n timekeeper = next_timekeeper\n \n +# Now build temp objects for quantity per month and per worker\n +summary_dict = {}\n +for string_index, worker_quantity_dict in monthly_worker_quantity_dict.items():\n + temp_object = context.newContent(portal_type = \'Project Line\',\n + temp_object=1,\n + string_index = string_index)\n + summary_dict[string_index] = temp_object\n + for source, quantity in worker_quantity_dict.items():\n + temp_object.setProperty(source, quantity)\n \n column_list.extend(worker_column_list)\n context = context.asContext(object_dict = object_dict,\n + summary_dict = summary_dict,\n column_list = column_list,)\n \n selection_name = \'project_monthly_report_selection\'\n @@ -179,12 +195,6 @@ return context.Project_viewODSMonthlyReport()\n <none/> </value> </item> - <item> - <key> <string>_filepath</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>_params</string> </key> <value> <string>**kw</string> </value> @@ -214,6 +224,8 @@ return context.Project_viewODSMonthlyReport()\n <value> <tuple> <string>kw</string> + <string>Products.ZSQLCatalog.SQLCatalog</string> + <string>Query</string> <string>_getattr_</string> <string>context</string> <string>request</string> @@ -227,14 +239,19 @@ return context.Project_viewODSMonthlyReport()\n <string>_getiter_</string> <string>x</string> <string>source_project_uid_list</string> - <string>len</string> + <string>sql_kw</string> <string>_getitem_</string> + <string>None</string> + <string>query_kw</string> + <string>_apply_</string> + <string>_write_</string> + <string>len</string> <string>task_simulation_state</string> <string>task_report_simulation_state</string> - <string>None</string> <string>task_list</string> <string>task_line_list</string> <string>task</string> + <string>monthly_worker_quantity_dict</string> <string>task_line</string> <string>source</string> <string>source_title</string> @@ -244,7 +261,6 @@ return context.Project_viewODSMonthlyReport()\n <string>month_start_date</string> <string>date_string</string> <string>current_date</string> - <string>_write_</string> <string>_inplacevar_</string> <string>current_column</string> <string>project</string> @@ -254,12 +270,15 @@ return context.Project_viewODSMonthlyReport()\n <string>getNextMonthStart</string> <string>timekeeper</string> <string>next_timekeeper</string> + <string>string_index</string> <string>quantity_dict</string> + <string>worker_quantity_dict</string> <string>temp_object</string> <string>current_temp_object</string> <string>min</string> <string>current_month_quantity</string> <string>object_quantity</string> + <string>summary_dict</string> <string>selection_name</string> </tuple> </value> @@ -279,12 +298,6 @@ return context.Project_viewODSMonthlyReport()\n <key> <string>id</string> </key> <value> <string>Project_printAsODSMonthly</string> </value> </item> - <item> - <key> <string>uid</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>warnings</string> </key> <value> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReport.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReport.xml index f130de70d9..553c1057ff 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReport.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReport.xml @@ -9,12 +9,6 @@ </pickle> <pickle> <dictionary> - <item> - <key> <string>__ac_local_roles__</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>_bind_names</string> </key> <value> @@ -81,7 +75,7 @@ <value> <dictionary> <item> - <key> <string>bottom</string> </key> + <key> <string>bottom</string> </key> <value> <list> <string>listbox</string> @@ -89,25 +83,25 @@ </value> </item> <item> - <key> <string>center</string> </key> + <key> <string>center</string> </key> <value> <list/> </value> </item> <item> - <key> <string>hidden</string> </key> + <key> <string>hidden</string> </key> <value> <list/> </value> </item> <item> - <key> <string>left</string> </key> + <key> <string>left</string> </key> <value> <list/> </value> </item> <item> - <key> <string>right</string> </key> + <key> <string>right</string> </key> <value> <list/> </value> @@ -129,7 +123,7 @@ </item> <item> <key> <string>pt</string> </key> - <value> <string>form_dialog</string> </value> + <value> <string>form_view_dialog</string> </value> </item> <item> <key> <string>row_length</string> </key> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog.xml index 5ca48a04e2..fa7f8c2cfb 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog.xml @@ -9,12 +9,6 @@ </pickle> <pickle> <dictionary> - <item> - <key> <string>__ac_local_roles__</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>_bind_names</string> </key> <value> @@ -42,12 +36,6 @@ <tuple/> </value> </item> - <item> - <key> <string>_owner</string> </key> - <value> - <none/> - </value> - </item> <item> <key> <string>action</string> </key> <value> <string>Project_printAsODSMonthly</string> </value> @@ -87,7 +75,6 @@ <key> <string>left</string> </key> <value> <list> - <string>your_target_language</string> <string>your_report_depth</string> </list> </value> @@ -95,7 +82,11 @@ <item> <key> <string>right</string> </key> <value> - <list/> + <list> + <string>your_simulation_state</string> + <string>your_from_date</string> + <string>your_at_date</string> + </list> </value> </item> </dictionary> diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_at_date.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_at_date.xml new file mode 100644 index 0000000000..1f57c22347 --- /dev/null +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_at_date.xml @@ -0,0 +1,87 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + <tuple/> + </tuple> + </pickle> + <pickle> + <dictionary> + <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>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/Project_viewODSMonthlyReportPrintDialog/your_from_date.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_from_date.xml new file mode 100644 index 0000000000..223ae4f111 --- /dev/null +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_from_date.xml @@ -0,0 +1,87 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <tuple> + <global name="ProxyField" module="Products.ERP5Form.ProxyField"/> + <tuple/> + </tuple> + </pickle> + <pickle> + <dictionary> + <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>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/Project_viewODSMonthlyReportPrintDialog/your_target_language.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_simulation_state.xml similarity index 92% rename from bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_target_language.xml rename to bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_simulation_state.xml index 6760d967c7..8e9630237a 100644 --- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_target_language.xml +++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReportPrintDialog/your_simulation_state.xml @@ -17,7 +17,7 @@ </item> <item> <key> <string>id</string> </key> - <value> <string>your_target_language</string> </value> + <value> <string>your_simulation_state</string> </value> </item> <item> <key> <string>message_values</string> </key> @@ -74,11 +74,11 @@ <dictionary> <item> <key> <string>field_id</string> </key> - <value> <string>your_target_language</string> </value> + <value> <string>your_simulation_state</string> </value> </item> <item> <key> <string>form_id</string> </key> - <value> <string>Base_viewDialogFieldLibrary</string> </value> + <value> <string>Project_viewDialogFieldLibrary</string> </value> </item> <item> <key> <string>target</string> </key> diff --git a/bt5/erp5_project/bt/revision b/bt5/erp5_project/bt/revision index d63356f400..5203768bd5 100644 --- a/bt5/erp5_project/bt/revision +++ b/bt5/erp5_project/bt/revision @@ -1 +1 @@ -596 \ No newline at end of file +597 \ No newline at end of file -- 2.30.9