[Erp5-report] r28178 - in /erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_p...

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Jul 24 18:00:29 CEST 2009


Author: seb
Date: Fri Jul 24 18:00:28 2009
New Revision: 28178

URL: http://svn.erp5.org?rev=28178&view=rev
Log:
2009-07-24 Seb
* Make the monthly report going aroung 2 times faster by caching some parts of the domain tree
* Use getInventory API for search task lines, we still get objects in the zodb in order to
get properties like start_date and stop_date
* Use ERP5Report in order to have a report similar to other ones and ERP5 and make it
more appropriate for unit test

Removed:
    erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_printAsODSMonthly.xml
    erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReport/
    erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReport.xml

Removed: erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_printAsODSMonthly.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_printAsODSMonthly.xml?rev=28177&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_printAsODSMonthly.xml [utf8] (original)
+++ erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_printAsODSMonthly.xml (removed)
@@ -1,329 +1,0 @@
-<?xml version="1.0"?>
-<ZopeData>
-  <record id="1" aka="AAAAAAAAAAE=">
-    <pickle>
-      <tuple>
-        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
-        <tuple/>
-      </tuple>
-    </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>_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
-\n
-object_dict = {}\n
-\n
-column_list= []\n
-worker_column_list = []\n
-\n
-# find all Tasks\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 from_date is not None:\n
-  query_kw = {\'delivery.start_date\' : from_date,\n
-              \'range\' : \'min\'}\n
-  sql_kw[\'delivery.start_date\'] = Query(**query_kw)\n
-if at_date is not None:\n
-  query_kw = {\'delivery.stop_date\' : 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
-ignore_task = 0\n
-if simulation_state is not None and len(simulation_state) > 0 :\n
-  task_simulation_state = [x for x in simulation_state if x != \'confirmed\']\n
-  if len(task_simulation_state) == 0:\n
-    ignore_task = 1\n
-  task_report_simulation_state = simulation_state\n
-else:\n
-  task_simulation_state = context.getPortalDraftOrderStateList() + \\\n
-                          context.getPortalPlannedOrderStateList()\n
-  task_report_simulation_state = None\n
-\n
-task_list = []\n
-if not ignore_task:\n
-  task_list = [x.getObject() for x in \\\n
-    context.portal_catalog(\n
-                           portal_type=\'Task\',\n
-                           source_project_uid = source_project_uid_list,\n
-                           simulation_state = task_simulation_state,\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
-                         **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
-  source = task_line.getSource()\n
-  if source is None:\n
-    # This should not happens, so display an error message\n
-    raise ValueError, context.Base_translateString(\\\n
-        "This task should have a source : ${task_relative_url}",\n
-        mapping = {\'task_relative_url\': task_line.getRelativeUrl()})\n
-  source_title = task_line.getSourceTitle()\n
-  start_date_task = task_line.getStartDate()\n
-  stop_date_task = task_line.getStopDate()\n
-  year_start_date = start_date_task.year()\n
-  month_start_date = start_date_task.month()\n
-  date_string = "%s-%s" % (year_start_date, month_start_date)\n
-  current_date = start_date_task\n
-  # We must initialize start_date at the beginning of the month\n
-  while current_date <= stop_date_task:\n
-    if date_string not in object_dict:\n
-      object_dict[date_string]={}\n
-    current_date += 1\n
-\n
-  # create a list with people who works on the task\n
-  current_column = (source, task_line.getSourceTitle())\n
-  if current_column not in worker_column_list:\n
-    worker_column_list.append(current_column)\n
-  project = task_line.getSourceProjectValue()\n
-  quantity = task_line.getQuantity()\n
-  project_relative_url = project.getRelativeUrl()\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
-\n
-  timekeeper = start_date_task\n
-  while timekeeper <= stop_date_task :\n
-    next_timekeeper = getNextMonthStart(timekeeper)\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 = 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
-    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
-context.portal_selections.setListboxDisplayMode(request, \'ReportTreeMode\',\n
-                                              selection_name=selection_name)\n
-return context.Project_viewODSMonthlyReport()\n
-
-
-]]></string> </value>
-        </item>
-        <item>
-            <key> <string>_code</string> </key>
-            <value>
-              <none/>
-            </value>
-        </item>
-        <item>
-            <key> <string>_params</string> </key>
-            <value> <string>from_date=None, at_date=None, simulation_state=None, **kw</string> </value>
-        </item>
-        <item>
-            <key> <string>errors</string> </key>
-            <value>
-              <tuple/>
-            </value>
-        </item>
-        <item>
-            <key> <string>func_code</string> </key>
-            <value>
-              <object>
-                <klass>
-                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
-                </klass>
-                <tuple/>
-                <state>
-                  <dictionary>
-                    <item>
-                        <key> <string>co_argcount</string> </key>
-                        <value> <int>3</int> </value>
-                    </item>
-                    <item>
-                        <key> <string>co_varnames</string> </key>
-                        <value>
-                          <tuple>
-                            <string>from_date</string>
-                            <string>at_date</string>
-                            <string>simulation_state</string>
-                            <string>kw</string>
-                            <string>Products.ZSQLCatalog.SQLCatalog</string>
-                            <string>Query</string>
-                            <string>_getattr_</string>
-                            <string>context</string>
-                            <string>request</string>
-                            <string>start_date</string>
-                            <string>stop_date</string>
-                            <string>object_dict</string>
-                            <string>column_list</string>
-                            <string>worker_column_list</string>
-                            <string>append</string>
-                            <string>$append0</string>
-                            <string>_getiter_</string>
-                            <string>x</string>
-                            <string>source_project_uid_list</string>
-                            <string>sql_kw</string>
-                            <string>None</string>
-                            <string>query_kw</string>
-                            <string>_apply_</string>
-                            <string>_write_</string>
-                            <string>ignore_task</string>
-                            <string>len</string>
-                            <string>task_simulation_state</string>
-                            <string>task_report_simulation_state</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>ValueError</string>
-                            <string>source_title</string>
-                            <string>start_date_task</string>
-                            <string>stop_date_task</string>
-                            <string>year_start_date</string>
-                            <string>month_start_date</string>
-                            <string>date_string</string>
-                            <string>current_date</string>
-                            <string>_inplacevar_</string>
-                            <string>current_column</string>
-                            <string>project</string>
-                            <string>quantity</string>
-                            <string>project_relative_url</string>
-                            <string>diff_day</string>
-                            <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>_getitem_</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>
-                    </item>
-                  </dictionary>
-                </state>
-              </object>
-            </value>
-        </item>
-        <item>
-            <key> <string>func_defaults</string> </key>
-            <value>
-              <tuple>
-                <none/>
-                <none/>
-                <none/>
-              </tuple>
-            </value>
-        </item>
-        <item>
-            <key> <string>id</string> </key>
-            <value> <string>Project_printAsODSMonthly</string> </value>
-        </item>
-        <item>
-            <key> <string>warnings</string> </key>
-            <value>
-              <tuple/>
-            </value>
-        </item>
-      </dictionary>
-    </pickle>
-  </record>
-</ZopeData>

Removed: erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReport.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReport.xml?rev=28177&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReport.xml [utf8] (original)
+++ erp5/trunk/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/Project_viewODSMonthlyReport.xml (removed)
@@ -1,151 +1,0 @@
-<?xml version="1.0"?>
-<ZopeData>
-  <record id="1" aka="AAAAAAAAAAE=">
-    <pickle>
-      <tuple>
-        <global name="ERP5Form" module="Products.ERP5Form.Form"/>
-        <tuple/>
-      </tuple>
-    </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_viewODSMonthlyReport</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>




More information about the Erp5-report mailing list