Commit 6a4aed6e authored by Antoine Catton's avatar Antoine Catton

Restore Person_requestSoftwareInstance script from master.

parent a828e2de
...@@ -75,146 +75,147 @@ if is_slave == True:\n ...@@ -75,146 +75,147 @@ if is_slave == True:\n
else:\n else:\n
software_instance_portal_type = "Software Instance"\n software_instance_portal_type = "Software Instance"\n
\n \n
tag = "%s_%s_inProgress" % (person.getUid(),\n tag = "%s_%s_inProgress" % (person.getUid(), \n
software_title)\n software_title)\n
\n \n
# Check if it already exists\n # Check if it already exists\n
cleanup_resource = portal.portal_preferences.getPreferredInstanceCleanupResource()\n cleanup_resource = portal.portal_preferences.getPreferredInstanceCleanupResource()\n
request_software_instance = None\n request_software_instance = None\n
request_hosting_subscription = None\n for si in portal.portal_catalog(\n
for hs in portal.portal_catalog(\n portal_type=software_instance_portal_type,\n
portal_type=hosting_subscription_portal_type,\n
title=software_title,\n title=software_title,\n
):\n ):\n
si_list = hs.portal_catalog(portal_type=software_instance_portal_type,\n try:\n
title=software_title, root_uid=hs.getUid())\n cleanup_delivery_line = si.Item_getInstancePackingListLine(cleanup_resource)\n
if len(si_list) == 0:\n except ValueError:\n
request_hosting_subscription = hs\n request_software_instance = si\n
for si in si_list:\n break\n
try:\n else:\n
cleanup_delivery_line = si.Item_getInstancePackingListLine(cleanup_resource)\n if cleanup_delivery_line.getSimulationState() != \'delivered\':\n
except ValueError:\n request_software_instance = si\n
request_hosting_subscription = hs\n
break\n break\n
else:\n
if cleanup_delivery_line.getSimulationState() != \'delivered\':\n
request_hosting_subscription = hs\n
break\n
\n \n
if (portal.portal_activities.countMessageWithTag(tag) > 0):\n if (request_software_instance is None):\n
# The software instance is already under creation but can not be fetched from catalog\n
# As it is not possible to fetch informations, it is better to raise an error\n
raise NotImplementedError(tag)\n
\n
if request_hosting_subscription is None:\n
hosting_subscription_reference = "HOSTSUBS-%s" % context.getPortalObject().portal_ids\\\n hosting_subscription_reference = "HOSTSUBS-%s" % context.getPortalObject().portal_ids\\\n
.generateNewId(id_group=\'slap_hosting_subscription_reference\', id_generator=\'uid\')\n .generateNewId(id_group=\'slap_hosting_subscription_reference\', id_generator=\'uid\')\n
setup_service_relative_url = portal.portal_preferences.getPreferredInstanceSetupResource()\n if (portal.portal_activities.countMessageWithTag(tag) > 0):\n
# The software instance is already under creation but can not be fetched from catalog\n
# As it is not possible to fetch informations, it is better to raise an error\n
raise NotImplementedError(tag)\n
else:\n
\n \n
subscription = portal.getDefaultModule(portal_type=hosting_subscription_portal_type).newContent(\n setup_service_relative_url = portal.portal_preferences.getPreferredInstanceSetupResource()\n
portal_type=hosting_subscription_portal_type,\n software_instance = portal.getDefaultModule(portal_type=software_instance_portal_type).newContent(\n
reference=hosting_subscription_reference,\n portal_type=software_instance_portal_type,\n
title=software_title,\n source_reference=software_type,\n
activate_kw={\'tag\': tag},\n title=software_title,\n
source_reference=software_type,\n text_content=instance_xml,\n
text_content=instance_xml,\n sla_xml=sla_xml,\n
sla_xml=sla_xml,\n activate_kw={\'tag\': tag},\n
periodicity_hour_list=[0],\n **portal.Base_getNewSoftwareInstanceCoordinate()\n
periodicity_minute_list=[0],\n )\n
periodicity_month_day=[1],\n software_instance.portal_workflow.doActionFor(software_instance, \'validate_action\')\n
root_state=state,\n subscription = portal.getDefaultModule(portal_type=hosting_subscription_portal_type).newContent(\n
root_software_release_url=software_release_url_string,\n portal_type=hosting_subscription_portal_type,\n
root_slave=is_slave,\n reference=hosting_subscription_reference,\n
)\n title=software_title,\n
subscription.portal_workflow.doActionFor(subscription, \'validate_action\')\n periodicity_hour_list=[0],\n
software_instance = subscription.HostingSubscription_requestRootSoftwareInstance(tag, person_request=True)\n periodicity_minute_list=[0],\n
periodicity_month_day=[1],\n
activate_kw={\'tag\': tag},\n
)\n
subscription.portal_workflow.doActionFor(subscription, \'validate_action\')\n
if state == \'started\':\n
software_instance.startRequested()\n
elif state == \'stopped\':\n
software_instance.stopRequested()\n
\n \n
software_release_document = context.portal_catalog.getResultValue(\n software_release_document = context.portal_catalog.getResultValue(\n
portal_type=\'Software Release\',\n portal_type=\'Software Release\',\n
url_string=software_release_url_string)\n url_string=software_release_url_string)\n
\n \n
sale_order = portal.getDefaultModule(portal_type=sale_order_portal_type).newContent(\n sale_order = portal.getDefaultModule(portal_type=sale_order_portal_type).newContent(\n
portal_type=sale_order_portal_type,\n portal_type=sale_order_portal_type,\n
destination_value=person,\n destination_value=person,\n
destination_section_value=person,\n destination_section_value=person,\n
destination_decision_value=person,\n destination_decision_value=person,\n
start_date=DateTime(),\n start_date=DateTime(),\n
received_date=DateTime(),\n received_date=DateTime(),\n
# XXX Hardcoded values\n # XXX Hardcoded values\n
source="organisation_module/vifib_internet",\n source="organisation_module/vifib_internet",\n
source_section="organisation_module/vifib_internet",\n source_section="organisation_module/vifib_internet",\n
quantity_unit="unit/piece",\n quantity_unit="unit/piece",\n
price_currency="currency_module/EUR",\n price_currency="currency_module/EUR",\n
activate_kw={\'tag\': tag},\n activate_kw={\'tag\': tag},\n
)\n )\n
sale_order_line = sale_order.newContent(\n sale_order_line = sale_order.newContent(\n
portal_type=sale_order_line_portal_type,\n portal_type=sale_order_line_portal_type,\n
resource=setup_service_relative_url,\n resource=setup_service_relative_url,\n
quantity=1,\n quantity=1,\n
price=0,\n price=0,\n
aggregate_value_list=[software_instance, subscription, software_release_document],\n aggregate_value_list=[software_instance, subscription, software_release_document],\n
activate_kw={\'tag\': tag},\n activate_kw={\'tag\': tag},\n
)\n )\n
portal.portal_workflow.doActionFor(sale_order, "order_action")\n portal.portal_workflow.doActionFor(sale_order, "order_action")\n
\n \n
# Update Open Order\n # Update Open Order\n
# does this order have a client-specific Open Order\n # does this order have a client-specific Open Order\n
open_order = portal.portal_catalog.getResultValue(\n open_order = portal.portal_catalog.getResultValue(\n
default_destination_section_uid=person.getUid(),\n default_destination_section_uid=person.getUid(),\n
portal_type="Open Sale Order",\n portal_type="Open Sale Order",\n
validation_state="validated")\n validation_state="validated")\n
if open_order is None:\n if open_order is None:\n
person_slap_interface_state = person.getSlapState()\n person_slap_interface_state = person.getSlapState()\n
if person_slap_interface_state == \'open_order_created\':\n if person_slap_interface_state == \'open_order_created\':\n
open_order_url = context.portal_workflow.getInfoFor(\n open_order_url = context.portal_workflow.getInfoFor(\n
ob=person, name=\'open_order_url\',\n ob=person, name=\'open_order_url\',\n
wf_id=\'person_slap_interface_workflow\')\n wf_id=\'person_slap_interface_workflow\')\n
open_order = portal.restrictedTraverse(open_order_url)\n open_order = portal.restrictedTraverse(open_order_url)\n
pass\n else:\n
else:\n raise ValueError(\'Person has no open order created\')\n
raise ValueError(\'Person has no open order created\')\n
\n \n
now = DateTime()\n now = DateTime()\n
start_date = getClosestDate(target_date=now, precision=\'day\', before=1)\n start_date = getClosestDate(target_date=now, precision=\'day\', before=1)\n
# 12 months of subscription by default\n # 12 months of subscription by default\n
stop_date = addToDate(getClosestDate(target_date=now, precision=\'month\', before=1), year=1)\n stop_date = addToDate(getClosestDate(target_date=now, precision=\'month\', before=1), year=1)\n
\n \n
subscription_service_relative_url = portal.portal_preferences.getPreferredInstanceSubscriptionResource()\n subscription_service_relative_url = portal.portal_preferences.getPreferredInstanceSubscriptionResource()\n
open_order.newContent(\n open_order.newContent(\n
portal_type="Open Sale Order Line",\n portal_type="Open Sale Order Line",\n
title=software_title,\n title=software_title,\n
aggregate_value=subscription,\n aggregate_value=subscription,\n
start_date=start_date,\n start_date=start_date,\n
stop_date=stop_date,\n stop_date=stop_date,\n
quantity=1,\n quantity=1,\n
quantity_unit="unit/piece",\n quantity_unit="unit/piece",\n
price=1,\n price=1,\n
price_currency="currency_module/EUR",\n price_currency="currency_module/EUR",\n
specialise=sale_order.getSpecialise(portal_type="Sale Trade Condition"),\n specialise=sale_order.getSpecialise(portal_type="Sale Trade Condition"),\n
# XXX Hardcoded values\\n\n # XXX Hardcoded values\\n\n
resource=subscription_service_relative_url,\n resource=subscription_service_relative_url,\n
destination_value=person,\n destination_value=person,\n
destination_section_value=person,\n destination_section_value=person,\n
source="organisation_module/vifib_internet",\n source="organisation_module/vifib_internet",\n
source_section="organisation_module/vifib_internet",\n source_section="organisation_module/vifib_internet",\n
activate_kw={\'tag\': tag},\n activate_kw={\'tag\': tag},\n
)\n )\n
\n \n
# Find Computer partition\n # Find Computer partition\n
# XXX Link subscript to open order\n # XXX Link subscript to open order\n
else:\n else:\n
# Update existing software instance\n # Update existing software instance\n
request_hosting_subscription.edit(\n request_software_instance.edit(\n
text_content=instance_xml,\n text_content=instance_xml,\n
source_reference=software_type,\n source_reference=software_type,\n
sla_xml=sla_xml,\n sla_xml=sla_xml,\n
root_state=state,\n
software_release_url=software_release_url_string,\n
root_slave=is_slave,\n
activate_kw={\'tag\': tag},\n activate_kw={\'tag\': tag},\n
)\n )\n
requested_software_instance = request_hosting_subscription\\\n if state == \'started\':\n
.HostingSubscription_requestRootSoftwareInstance(tag)\n request_software_instance.startRequested()\n
request_software_instance.activate(after_tag=tag).requestStartComputerPartition()\n
elif state == \'stopped\':\n
request_software_instance.stopRequested()\n
request_software_instance.activate(after_tag=tag).requestStopComputerPartition()\n
]]></string> </value> ]]></string> </value>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment