From 8eaf6e968029dd95a0f83d70f862cf76538a04ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com> Date: Fri, 9 Mar 2012 10:48:10 +0100 Subject: [PATCH] Simplify and optimise conditions. --- .../vifib_slap/Person_updateOpenOrder.xml | 92 ++++++++++--------- master/bt5/vifib_slap/bt/revision | 2 +- 2 files changed, 49 insertions(+), 45 deletions(-) diff --git a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_updateOpenOrder.xml b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_updateOpenOrder.xml index a2799f636..81cfa4d29 100644 --- a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_updateOpenOrder.xml +++ b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Person_updateOpenOrder.xml @@ -54,6 +54,12 @@ from DateTime import DateTime\n \n +tag = \'%s_updateOpenOrder\' % person.getUid()\n +kw = {\'activate_kw\': {\'tag\': tag}}\n +if portal.portal_activities.countMessageWithTag(tag) > 0:\n + # nothing to do\n + return\n +\n if remove_id_list is None:\n remove_id_list = []\n \n @@ -65,53 +71,51 @@ previous_open_sale_order = portal.portal_catalog.getResultValue(\n validation_state="validated")\n \n now = DateTime()\n -tag = \'%s_updateOpenOrder\' % person.getUid()\n -kw = {\'activate_kw\': {\'tag\': tag}}\n -if portal.portal_activities.countMessageWithTag(tag) == 0:\n - open_sale_order = None\n - if previous_open_sale_order is None:\n - open_sale_order = portal.open_sale_order_module.newContent(\n - source=\'organisation_module/vifib_internet\',\n - source_section=\'organisation_module/vifib_internet\',\n - destination_section=person.getRelativeUrl(),\n - destination_decision=person.getRelativeUrl(),\n - destination=person.getRelativeUrl(),\n - price_currency=\'currency_module/EUR\',\n - specialise=\'sale_trade_condition_module/vifib_trade_condition\',\n - title="ViFiB Open Order",\n - **kw)\n - for remove_id in remove_id_list:\n - if open_sale_order is None:\n - open_sale_order = previous_open_sale_order.Base_createCloneDocument(batch_mode=1)\n - open_sale_order.deleteContent(remove_id)\n - if add_kw is not None:\n - add_tag = add_kw.pop(\'tag\', None)\n - add_kw.update(kw)\n +\n +open_sale_order = None\n +if previous_open_sale_order is None:\n + open_sale_order = portal.open_sale_order_module.newContent(\n + source=\'organisation_module/vifib_internet\',\n + source_section=\'organisation_module/vifib_internet\',\n + destination_section=person.getRelativeUrl(),\n + destination_decision=person.getRelativeUrl(),\n + destination=person.getRelativeUrl(),\n + price_currency=\'currency_module/EUR\',\n + specialise=\'sale_trade_condition_module/vifib_trade_condition\',\n + title="ViFiB Open Order",\n + **kw)\n +for remove_id in remove_id_list:\n + if open_sale_order is None:\n + open_sale_order = previous_open_sale_order.Base_createCloneDocument(batch_mode=1)\n + open_sale_order.deleteContent(remove_id)\n +if add_kw is not None:\n + add_tag = add_kw.pop(\'tag\', None)\n + add_kw.update(kw)\n + if open_sale_order is None:\n + open_sale_order = previous_open_sale_order.Base_createCloneDocument(batch_mode=1)\n + open_sale_order.newContent(**add_kw)\n + if add_tag is not None:\n + # lock by passed tag\n + open_sale_order.activate(tag=add_tag, after_tag=kw[\'activate_kw\'][\'tag\']).getId()\n +if stop_date is not None:\n + # check if needed to update\n + need_update = False\n + for line in previous_open_sale_order.contentValues(portal_type=\'Open Sale Order Line\'):\n + if line.getStopDate() < stop_date:\n + need_update = True\n + break\n + if need_update:\n if open_sale_order is None:\n open_sale_order = previous_open_sale_order.Base_createCloneDocument(batch_mode=1)\n - open_sale_order.newContent(**add_kw)\n - if add_tag is not None:\n - # lock by passed tag\n - open_sale_order.activate(tag=add_tag, after_tag=kw[\'activate_kw\'][\'tag\']).getId()\n - if stop_date is not None:\n - # check if needed to update\n - need_update = False\n - for line in previous_open_sale_order.contentValues(portal_type=\'Open Sale Order Line\'):\n + for line in open_sale_order.contentValues(portal_type=\'Open Sale Order Line\'):\n if line.getStopDate() < stop_date:\n - need_update = True\n - break\n - if need_update:\n - if open_sale_order is None:\n - open_sale_order = previous_open_sale_order.Base_createCloneDocument(batch_mode=1)\n - for line in open_sale_order.contentValues(portal_type=\'Open Sale Order Line\'):\n - if line.getStopDate() < stop_date:\n - line.setStopDate(stop_date, **kw)\n - if previous_open_sale_order is not None and open_sale_order is not None:\n - previous_open_sale_order.setExpirationDate(now, **kw)\n - if open_sale_order is not None:\n - open_sale_order.setEffectiveDate(now, **kw)\n - open_sale_order.order(**kw)\n - open_sale_order.validate(**kw)\n + line.setStopDate(stop_date, **kw)\n +if previous_open_sale_order is not None and open_sale_order is not None:\n + previous_open_sale_order.setExpirationDate(now, **kw)\n +if open_sale_order is not None:\n + open_sale_order.setEffectiveDate(now, **kw)\n + open_sale_order.order(**kw)\n + open_sale_order.validate(**kw)\n ]]></string> </value> diff --git a/master/bt5/vifib_slap/bt/revision b/master/bt5/vifib_slap/bt/revision index 8ec9b982c..236c7c706 100644 --- a/master/bt5/vifib_slap/bt/revision +++ b/master/bt5/vifib_slap/bt/revision @@ -1 +1 @@ -622 \ No newline at end of file +623 \ No newline at end of file -- 2.30.9