Commit c61c99b9 authored by Romain Courteaud's avatar Romain Courteaud

slapos_subscription_request: use different trade condition for instance and node

parent a4c3bbb5
...@@ -40,6 +40,7 @@ if item.getPortalType() == 'Instance Tree': ...@@ -40,6 +40,7 @@ if item.getPortalType() == 'Instance Tree':
'software_type/%s' % software_type.getRelativeUrl() 'software_type/%s' % software_type.getRelativeUrl()
] ]
resource_vcl.sort() resource_vcl.sort()
project_value = item.getFollowUpValue(portal_type="Project")
elif item.getPortalType() == 'Compute Node': elif item.getPortalType() == 'Compute Node':
service = portal.restrictedTraverse('service_module/slapos_compute_node_subscription') service = portal.restrictedTraverse('service_module/slapos_compute_node_subscription')
resource_vcl = None resource_vcl = None
...@@ -59,7 +60,7 @@ if source_decision_value is None: ...@@ -59,7 +60,7 @@ if source_decision_value is None:
return return
try: try:
subscription_request = service.Resource_createSubscriptionRequest(source_decision_value, resource_vcl) subscription_request = service.Resource_createSubscriptionRequest(source_decision_value, resource_vcl, project_value)
except AssertionError, error: except AssertionError, error:
storeWorkflowComment(item, str(error)) storeWorkflowComment(item, str(error))
return return
......
...@@ -4,13 +4,20 @@ resource = context ...@@ -4,13 +4,20 @@ resource = context
if subscriber_person_value is None: if subscriber_person_value is None:
raise AssertionError('Can not find a person profile') raise AssertionError('Can not find a person profile')
project_value = None source_project_value = None
destination_project_value = None
if resource.getPortalType() == "Software Product": if resource.getPortalType() == "Software Product":
project_value = resource.getFollowUpValue(portal_type="Project") source_project_value = project_value
elif resource.getPortalType() == "Service": elif resource.getPortalType() == "Service":
if resource.getRelativeUrl() not in ( if resource.getRelativeUrl() == "service_module/slapos_compute_node_subscription":
"service_module/slapos_virtual_master_subscription", if project_value is None:
"service_module/slapos_compute_node_subscription"): raise AssertionError('A project is required for %s %s' % (resource.getRelativeUrl(), project_value))
destination_project_value = project_value
elif resource.getRelativeUrl() == "service_module/slapos_virtual_master_subscription":
if project_value is not None:
raise AssertionError('No project is required for %s %s' % (resource.getRelativeUrl(), project_value))
else:
raise NotImplementedError('Unsupported resource: %s' % resource.getRelativeUrl()) raise NotImplementedError('Unsupported resource: %s' % resource.getRelativeUrl())
else: else:
raise NotImplementedError('Unsupported resource: %s' % resource.getRelativeUrl()) raise NotImplementedError('Unsupported resource: %s' % resource.getRelativeUrl())
...@@ -35,7 +42,8 @@ tmp_sale_order = module.newContent( ...@@ -35,7 +42,8 @@ tmp_sale_order = module.newContent(
destination_value=subscriber_person_value, destination_value=subscriber_person_value,
destination_section=source_section, destination_section=source_section,
#destination_decision_value=source_decision_value, #destination_decision_value=source_decision_value,
destination_project_value=project_value, destination_project_value=destination_project_value,
source_project_value=source_project_value,
ledger_value=portal.portal_categories.ledger.automated, ledger_value=portal.portal_categories.ledger.automated,
# XXX XXX destination_project_value=instance_tree.getFollowUpValue(), # XXX XXX destination_project_value=instance_tree.getFollowUpValue(),
) )
...@@ -62,7 +70,7 @@ else: ...@@ -62,7 +70,7 @@ else:
quantity=1 quantity=1
) )
if 0:# XXX resource_vcl: if variation_category_list:
base_id = 'movement' base_id = 'movement'
cell_key = list(tmp_order_line.getCellKeyList(base_id=base_id))[0] cell_key = list(tmp_order_line.getCellKeyList(base_id=base_id))[0]
tmp_order_cell = tmp_order_line.newCell( tmp_order_cell = tmp_order_line.newCell(
...@@ -90,6 +98,7 @@ subscription_request = portal.subscription_request_module.newContent( ...@@ -90,6 +98,7 @@ subscription_request = portal.subscription_request_module.newContent(
source_value=subscriber_person_value, source_value=subscriber_person_value,
source_section_value=source_section, source_section_value=source_section,
source_decision_value=subscriber_person_value, source_decision_value=subscriber_person_value,
source_project_value=source_project_value,
start_date=now, start_date=now,
effective_date=now, effective_date=now,
resource_value=resource, resource_value=resource,
...@@ -101,6 +110,7 @@ subscription_request = portal.subscription_request_module.newContent( ...@@ -101,6 +110,7 @@ subscription_request = portal.subscription_request_module.newContent(
specialise_value=tmp_sale_order.getSpecialiseValue(), specialise_value=tmp_sale_order.getSpecialiseValue(),
destination=tmp_sale_order.getSource(), destination=tmp_sale_order.getSource(),
destination_section=tmp_sale_order.getSourceSection(), destination_section=tmp_sale_order.getSourceSection(),
destination_project_value=destination_project_value,
price_currency=tmp_sale_order.getPriceCurrency(), price_currency=tmp_sale_order.getPriceCurrency(),
price=price, price=price,
# XXX activate_kw=activate_kw # XXX activate_kw=activate_kw
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string>subscriber_person_value, variation_category_list</string> </value> <value> <string>subscriber_person_value, variation_category_list, project_value</string> </value>
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
......
...@@ -7,7 +7,6 @@ if item is None: ...@@ -7,7 +7,6 @@ if item is None:
customer = subscription_request.getSourceValue() customer = subscription_request.getSourceValue()
if resource.getPortalType() == "Service": if resource.getPortalType() == "Service":
if resource.getRelativeUrl() == "service_module/slapos_virtual_master_subscription": if resource.getRelativeUrl() == "service_module/slapos_virtual_master_subscription":
# create the project # create the project
item = portal.project_module.newContent( item = portal.project_module.newContent(
portal_type='Project', portal_type='Project',
...@@ -30,7 +29,7 @@ if item is None: ...@@ -30,7 +29,7 @@ if item is None:
sale_trade_condition = portal.sale_trade_condition_module.newContent( sale_trade_condition = portal.sale_trade_condition_module.newContent(
portal_type="Sale Trade Condition", portal_type="Sale Trade Condition",
reference='seller_project_%s' % item.getTitle(), reference='node_project_%s' % item.getTitle(),
# XXX hardcoded # XXX hardcoded
specialise="business_process_module/slapos_ultimate_business_process", specialise="business_process_module/slapos_ultimate_business_process",
destination_project_value=item, destination_project_value=item,
...@@ -43,6 +42,23 @@ if item is None: ...@@ -43,6 +42,23 @@ if item is None:
price_currency_value=subscription_request.getPriceCurrencyValue(), price_currency_value=subscription_request.getPriceCurrencyValue(),
#payment_condition_payment_mode='test-%s' % self.generateNewId() #payment_condition_payment_mode='test-%s' % self.generateNewId()
) )
sale_trade_condition.validate()
sale_trade_condition = portal.sale_trade_condition_module.newContent(
portal_type="Sale Trade Condition",
reference='instance_project_%s' % item.getTitle(),
# XXX hardcoded
specialise="business_process_module/slapos_ultimate_business_process",
source_project_value=item,
source_value=subscription_request.getDestinationValue(),
#source_section_value=subscription_request.getDestinationSectionValue(),
#destination_section_value=subscription_request.getDestinationSectionValue(),
#source_section_value=seller_organisation,
#source_payment_value=seller_bank_account,
price_currency_value=subscription_request.getPriceCurrencyValue(),
#payment_condition_payment_mode='test-%s' % self.generateNewId()
)
""" """
sale_trade_condition.newContent( sale_trade_condition.newContent(
portal_type="Trade Model Line", portal_type="Trade Model Line",
......
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