Commit 2e25ded9 authored by Jérome Perrin's avatar Jérome Perrin

Merge remote-tracking branch 'upstream/master' into zope4py2

parents ed656a30 1aff7695
......@@ -29,8 +29,9 @@
import unittest
import pickle
import re
import xml.parsers.pyexpat
import xml.sax
from StringIO import StringIO
from Products.ERP5Type.XMLExportImport import ppml
......@@ -67,12 +68,11 @@ class TestXMLPickle(unittest.TestCase):
F.file = output
F.binary = 1
p=xml.parsers.pyexpat.ParserCreate()
p.CharacterDataHandler=F.handle_data
p.StartElementHandler=F.unknown_starttag
p.EndElementHandler=F.unknown_endtag
p.Parse(xmldata)
content_handler = xml.sax.handler.ContentHandler()
content_handler.startElement = F.unknown_starttag
content_handler.endElement = F.unknown_endtag
content_handler.characters = F.handle_data
xml.sax.parseString(xmldata, content_handler)
reconstructed_pickled_data = F._stack[0][0]
reconstructed_obj = pickle.loads(reconstructed_pickled_data)
......@@ -84,6 +84,3 @@ class TestXMLPickle(unittest.TestCase):
self.assert_(reconstructed_obj.data[2] is reconstructed_obj.data)
self.assert_(type(reconstructed_obj.data[3]) is type(pattern))
self.assertEqual(reconstructed_obj.data[3].pattern, 'WAA')
if __name__ == '__main__':
unittest.main()
......@@ -309,38 +309,29 @@ class TestCRM(BaseTestCRM):
self.assertEqual(None, pers3.getDestinationRelatedValue(
portal_type='Mail Message'))
def test_SaleOpportunitySold(self):
def test_SaleOpportunityClosed(self):
# test the workflow of sale opportunities, when the sale opportunity is
# finaly sold
# finaly closed
so = self.portal.sale_opportunity_module.newContent(
portal_type='Sale Opportunity')
self.assertEqual('draft', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'submit_action')
self.assertEqual('submitted', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'validate_action')
self.assertEqual('contacted', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'enquire_action')
self.assertEqual('enquired', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'offer_action')
self.assertEqual('offered', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'sell_action')
self.assertEqual('sold', so.getSimulationState())
def test_SaleOpportunityRejected(self):
# test the workflow of sale opportunities, when the sale opportunity is
# finaly rejected.
# Uses different transitions than test_SaleOpportunitySold
self.portal.portal_workflow.doActionFor(so, 'open_action')
self.assertEqual('open', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'suspend_action')
self.assertEqual('suspended', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'open_action')
self.assertEqual('open', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'close_action')
self.assertEqual('closed', so.getSimulationState())
def test_SaleOpportunityDeleted(self):
# test the workflow of sale opportunities, cancel it
so = self.portal.sale_opportunity_module.newContent(
portal_type='Sale Opportunity')
self.assertEqual('draft', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'validate_action')
self.assertEqual('contacted', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'enquire_action')
self.assertEqual('enquired', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'offer_action')
self.assertEqual('offered', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'reject_action')
self.assertEqual('rejected', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'delete_action')
self.assertEqual('deleted', so.getSimulationState())
def test_SaleOpportunityExpired(self):
# test the workflow of sale opportunities, when the sale opportunity
......@@ -348,8 +339,8 @@ class TestCRM(BaseTestCRM):
so = self.portal.sale_opportunity_module.newContent(
portal_type='Sale Opportunity')
self.assertEqual('draft', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'validate_action')
self.assertEqual('contacted', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'open_action')
self.assertEqual('open', so.getSimulationState())
self.portal.portal_workflow.doActionFor(so, 'expire_action')
self.assertEqual('expired', so.getSimulationState())
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow State" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>acquire_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The Sale Opportunity is Cancelled.</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_cancelled</string> </value>
</item>
<item>
<key> <string>index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Cancelled</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>cell</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value>
<tuple>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <int>0</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <int>1</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>View</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Anonymous</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Assignee</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Assignor</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Associate</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>Auditor</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>Authenticated</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>Author</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>Manager</string> </key>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>Member</string> </key>
<value> <int>8</int> </value>
</item>
<item>
<key> <string>Owner</string> </key>
<value> <int>9</int> </value>
</item>
<item>
<key> <string>Reviewer</string> </key>
<value> <int>10</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -12,13 +12,27 @@
<tuple/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Sale Opportunity converted into Sale</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_sold</string> </value>
<value> <string>state_closed</string> </value>
</item>
<item>
<key> <string>index</string> </key>
......@@ -44,7 +58,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Sold</string> </value>
<value> <string>Closed</string> </value>
</item>
</dictionary>
</pickle>
......@@ -85,11 +99,11 @@
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Associate</string>
</tuple>
</value>
</item>
......@@ -105,11 +119,11 @@
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Associate</string>
</tuple>
</value>
</item>
......
......@@ -12,9 +12,23 @@
<tuple/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Deleted Sale Opportunity</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
......
......@@ -16,20 +16,24 @@
<key> <string>categories</string> </key>
<value>
<tuple>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_cancel</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_cancel_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_delete</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_delete_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_submit</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_submit_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_validate</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_validate_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_open</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_open_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The sale opportunity has just been created.</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
......@@ -100,10 +104,11 @@
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Associate</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Owner</string>
</tuple>
</value>
......@@ -112,10 +117,10 @@
<key> <string>Modify portal content</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
<string>Manager</string>
<string>Assignee</string>
</tuple>
</value>
</item>
......@@ -123,10 +128,11 @@
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Associate</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Owner</string>
</tuple>
</value>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow State" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>acquire_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_expire</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_expire_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_offer</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_offer_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Qualified Sale Opportunity for which the customer is waiting for an offer.</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_enquired</string> </value>
</item>
<item>
<key> <string>index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Enquired</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>cell</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <int>0</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <int>1</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>View</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Anonymous</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Assignee</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Assignor</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Associate</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>Auditor</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>Authenticated</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>Author</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>Manager</string> </key>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>Member</string> </key>
<value> <int>8</int> </value>
</item>
<item>
<key> <string>Owner</string> </key>
<value> <int>9</int> </value>
</item>
<item>
<key> <string>Reviewer</string> </key>
<value> <int>10</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -12,9 +12,23 @@
<tuple/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The Sale Opportunity has expired.</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
......@@ -85,11 +99,11 @@
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Associate</string>
</tuple>
</value>
</item>
......@@ -97,8 +111,6 @@
<key> <string>Modify portal content</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
......@@ -107,11 +119,11 @@
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Associate</string>
</tuple>
</value>
</item>
......
......@@ -16,22 +16,30 @@
<key> <string>categories</string> </key>
<value>
<tuple>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_enquire</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_enquire_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_close</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_close_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_expire</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_expire_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_offer</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_offer_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_suspend</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_suspend_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>In a Sale Opportunity, contacted means that the third party, the prospect, has been contacted. The next step will be to make an offer.</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_contacted</string> </value>
<value> <string>state_open</string> </value>
</item>
<item>
<key> <string>index</string> </key>
......@@ -57,7 +65,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Prospect Contacted</string> </value>
<value> <string>Open</string> </value>
</item>
</dictionary>
</pickle>
......@@ -98,11 +106,11 @@
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Associate</string>
</tuple>
</value>
</item>
......@@ -110,8 +118,8 @@
<key> <string>Modify portal content</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Assignee</string>
<string>Manager</string>
</tuple>
</value>
......@@ -120,11 +128,11 @@
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Associate</string>
</tuple>
</value>
</item>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow State" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>acquire_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_offer</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_offer_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Lost Sale Opportunity, as it has been rejected by the customer</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_rejected</string> </value>
</item>
<item>
<key> <string>index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Rejected</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>cell</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value>
<tuple>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <int>0</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <int>1</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>View</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Anonymous</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Assignee</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Assignor</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Associate</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>Auditor</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>Authenticated</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>Author</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>Manager</string> </key>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>Member</string> </key>
<value> <int>8</int> </value>
</item>
<item>
<key> <string>Owner</string> </key>
<value> <int>9</int> </value>
</item>
<item>
<key> <string>Reviewer</string> </key>
<value> <int>10</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow State" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>acquire_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_cancel</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_cancel_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_validate</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_validate_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Tickets in this state are waiting for approval from the Ticket manager before being further processed.</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_submitted</string> </value>
</item>
<item>
<key> <string>index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow State</string> </value>
</item>
<item>
<key> <string>state_permission_role_list_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>state_type</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Submitted</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>cell</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Manager</string>
</tuple>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <int>0</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
<item>
<key> <int>1</int> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Access contents information</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Modify portal content</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>View</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="6" aka="AAAAAAAAAAY=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>Anonymous</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>Assignee</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>Assignor</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>Associate</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>Auditor</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>Authenticated</string> </key>
<value> <int>5</int> </value>
</item>
<item>
<key> <string>Author</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>Manager</string> </key>
<value> <int>7</int> </value>
</item>
<item>
<key> <string>Member</string> </key>
<value> <int>8</int> </value>
</item>
<item>
<key> <string>Owner</string> </key>
<value> <int>9</int> </value>
</item>
<item>
<key> <string>Reviewer</string> </key>
<value> <int>10</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -16,22 +16,30 @@
<key> <string>categories</string> </key>
<value>
<tuple>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_enquire</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_enquire_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_reject</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_reject_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_sell</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_sell_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_close</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_close_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_expire</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_expire_action</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_open</string>
<string>destination/portal_workflow/sale_opportunity_workflow/transition_open_action</string>
</tuple>
</value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Sale opportunity that has been offered and is now waiting for the customer decision</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>state_offered</string> </value>
<value> <string>state_suspended</string> </value>
</item>
<item>
<key> <string>index</string> </key>
......@@ -57,7 +65,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Offered</string> </value>
<value> <string>Suspended</string> </value>
</item>
</dictionary>
</pickle>
......@@ -98,11 +106,11 @@
<key> <string>Access contents information</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Associate</string>
</tuple>
</value>
</item>
......@@ -110,8 +118,8 @@
<key> <string>Modify portal content</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Assignee</string>
<string>Manager</string>
</tuple>
</value>
......@@ -120,11 +128,11 @@
<key> <string>View</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Assignee</string>
<string>Manager</string>
<string>Auditor</string>
<string>Associate</string>
</tuple>
</value>
</item>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/sale_opportunity_workflow/state_cancelled</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The cancel logical transition sets the ticket state to cancelled.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_cancel</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Cancel Sale Opportunity</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=cancel_action</string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Cancel Sale Opportunity</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_cancel</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Cancel a Sale Opportunity</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_cancel_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Cancel Sale Opportunity Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -23,13 +23,13 @@
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/sale_opportunity_workflow/state_offered</string>
<string>destination/portal_workflow/sale_opportunity_workflow/state_closed</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Sends an offer to the prospect and waits for the decision</string> </value>
<value> <string>The delete logical transition sets the document state to deleted.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
......@@ -59,7 +59,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_offer</string> </value>
<value> <string>transition_close</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......@@ -67,7 +67,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Send Offer</string> </value>
<value> <string>Close Sale Opportunity</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
......
......@@ -8,25 +8,29 @@
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=offer_action</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Send Offer</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_close</string>
<string>before_script/portal_workflow/sale_opportunity_workflow/script_SaleOpportunity_checkConsistency</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_offer</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Sends an offer to the prospect and waits for the decision</string> </value>
<value> <string>Delete a draft sale opportunity (logical deletion)</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
......@@ -57,7 +61,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_offer_action</string> </value>
<value> <string>transition_close_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......@@ -65,7 +69,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Send Offer Action</string> </value>
<value> <string>Close Sale Opportunity Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
......
......@@ -29,7 +29,9 @@
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Delete a draft sale opportunity (logical deletion)</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
......
......@@ -19,7 +19,6 @@
<value>
<tuple>
<string>action_type/workflow</string>
<string>before_script/portal_workflow/sale_opportunity_workflow/script_SaleOpportunity_checkConsistency</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_expire</string>
</tuple>
</value>
......
......@@ -23,13 +23,15 @@
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/sale_opportunity_workflow/state_sold</string>
<string>destination/portal_workflow/sale_opportunity_workflow/state_open</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Declare a Sale Opportunity as Won</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
......@@ -59,7 +61,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_sell</string> </value>
<value> <string>transition_open</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......@@ -67,7 +69,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Sell</string> </value>
<value> <string>Open Sale Opportunity</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
......
......@@ -8,25 +8,27 @@
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=submit_action</string> </value>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=open_action</string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Request Approval</string> </value>
<value> <string>Open Sale Opportunity</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_open</string>
<string>before_script/portal_workflow/sale_opportunity_workflow/script_SaleOpportunity_checkConsistency</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_submit</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The submit logical transition sets the Ticket state to submitted.</string> </value>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
......@@ -58,7 +60,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_submit_action</string> </value>
<value> <string>transition_open_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......@@ -66,7 +68,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Request Approval Action</string> </value>
<value> <string>Open Sale Opportunity Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/sale_opportunity_workflow/state_rejected</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Declares the last offer related to a sale opportunity as rejected by the customer</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_reject</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Reject Offer</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=reject_action</string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Reject Offer</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>before_script/portal_workflow/sale_opportunity_workflow/script_SaleOpportunity_checkConsistency</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_reject</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Declares the last offer related to a sale opportunity as rejected by the customer</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
</tuple>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_reject_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Reject Offer Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=sell_action</string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Sell</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>before_script/portal_workflow/sale_opportunity_workflow/script_SaleOpportunity_checkConsistency</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_sell</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Will set the sale opportunity state as sold. This means that the sale opportunity is successful and that the customer has accepted the offer that has been made to him/her</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
</tuple>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_sell_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Sell Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/sale_opportunity_workflow/state_submitted</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The submit logical transition sets the Ticket state to submitted.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_submit</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Request Approval</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -23,7 +23,7 @@
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/sale_opportunity_workflow/state_enquired</string>
<string>destination/portal_workflow/sale_opportunity_workflow/state_suspended</string>
</tuple>
</value>
</item>
......@@ -59,7 +59,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_enquire</string> </value>
<value> <string>transition_suspend</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......@@ -67,7 +67,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Enquire Sale Opportunity</string> </value>
<value> <string>Suspend Sale Opportunity</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
......
......@@ -8,19 +8,18 @@
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=enquire_action</string> </value>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=suspend_action</string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Receive Enquiry</string> </value>
<value> <string>Suspend Sale Opportunity</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>before_script/portal_workflow/sale_opportunity_workflow/script_SaleOpportunity_checkConsistency</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_enquire</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_suspend</string>
</tuple>
</value>
</item>
......@@ -57,7 +56,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_enquire_action</string> </value>
<value> <string>transition_suspend_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......@@ -65,7 +64,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Enquire Sale Opportunity Action</string> </value>
<value> <string>Suspend Sale Opportunity Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>action_name</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>destination/portal_workflow/sale_opportunity_workflow/state_contacted</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Validate a Sale Opportunity and start the opportunity processing.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple>
<string>Modify portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_validate</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Get Contacted</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Workflow Transition" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>%(content_url)s/Base_viewWorkflowActionDialog?workflow_action=validate_action</string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Get Contacted by Prospect</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/workflow</string>
<string>before_script/portal_workflow/sale_opportunity_workflow/script_SaleOpportunity_checkConsistency</string>
<string>after_script/portal_workflow/sale_opportunity_workflow/transition_validate</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Validate a Sale Opportunity and start the opportunity processing.</string> </value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_role</string> </key>
<value>
<tuple>
<string>Assignor</string>
</tuple>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>transition_validate_action</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Workflow Transition</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Get Contacted Action</string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -28,7 +28,7 @@ sale_opportunity_module?reset:int=1&simulation_state=draft&local_roles=Owner
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Sale Opportunities to Validate (%(count)s)</string> </value>
<value> <string>Sale Opportunities to Open (%(count)s)</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
......@@ -42,9 +42,9 @@ sale_opportunity_module?reset:int=1&simulation_state=draft&local_roles=Owner
<key> <string>criterion_property</string> </key>
<value>
<tuple>
<string>portal_type</string>
<string>simulation_state</string>
<string>local_roles</string>
<string>portal_type</string>
</tuple>
</value>
</item>
......@@ -54,6 +54,12 @@ sale_opportunity_module?reset:int=1&simulation_state=draft&local_roles=Owner
<none/>
</value>
</item>
<item>
<key> <string>guard_expression</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
......@@ -102,25 +108,25 @@ sale_opportunity_module?reset:int=1&simulation_state=draft&local_roles=Owner
<item>
<key> <string>local_roles</string> </key>
<value>
<tuple>
<list>
<string>Owner</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value>
<tuple>
<list>
<string>Sale Opportunity</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>simulation_state</string> </key>
<value>
<tuple>
<list>
<string>draft</string>
</tuple>
</list>
</value>
</item>
</dictionary>
......
......@@ -22,13 +22,13 @@
<key> <string>action</string> </key>
<value> <string encoding="cdata"><![CDATA[
sale_opportunity_module?reset:int=1&simulation_state=offered&local_roles:list=Assignee&local_roles:list=Assignor
sale_opportunity_module?reset:int=1&simulation_state=open&local_roles=Assignor
]]></string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Pending Offers (%(count)s)</string> </value>
<value> <string>Sale Opportunities to Follow (%(count)s)</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
......@@ -42,9 +42,9 @@ sale_opportunity_module?reset:int=1&simulation_state=offered&local_roles:list=As
<key> <string>criterion_property</string> </key>
<value>
<tuple>
<string>portal_type</string>
<string>simulation_state</string>
<string>local_roles</string>
<string>portal_type</string>
</tuple>
</value>
</item>
......@@ -54,6 +54,12 @@ sale_opportunity_module?reset:int=1&simulation_state=offered&local_roles:list=As
<none/>
</value>
</item>
<item>
<key> <string>guard_expression</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
......@@ -74,7 +80,7 @@ sale_opportunity_module?reset:int=1&simulation_state=offered&local_roles:list=As
</item>
<item>
<key> <string>id</string> </key>
<value> <string>worklist_4_pending_opportunity_list</string> </value>
<value> <string>worklist_1_open_opportunity_list</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......@@ -102,26 +108,25 @@ sale_opportunity_module?reset:int=1&simulation_state=offered&local_roles:list=As
<item>
<key> <string>local_roles</string> </key>
<value>
<tuple>
<string>Assignee</string>
<list>
<string>Assignor</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value>
<tuple>
<list>
<string>Sale Opportunity</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>simulation_state</string> </key>
<value>
<tuple>
<string>offered</string>
</tuple>
<list>
<string>open</string>
</list>
</value>
</item>
</dictionary>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Worklist" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_identity_criterion</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_range_criterion</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string encoding="cdata"><![CDATA[
sale_opportunity_module?reset:int=1&simulation_state=submitted&local_roles=Assignor
]]></string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Submitted Sale Opportunities to Validate (%(count)s)</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/global</string>
</tuple>
</value>
</item>
<item>
<key> <string>criterion_property</string> </key>
<value>
<tuple>
<string>portal_type</string>
<string>simulation_state</string>
<string>local_roles</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>worklist_1_submitted_opportunity_list</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Worklist</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>local_roles</string> </key>
<value>
<tuple>
<string>Assignor</string>
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value>
<tuple>
<string>Sale Opportunity</string>
</tuple>
</value>
</item>
<item>
<key> <string>simulation_state</string> </key>
<value>
<tuple>
<string>submitted</string>
</tuple>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -22,13 +22,13 @@
<key> <string>action</string> </key>
<value> <string encoding="cdata"><![CDATA[
sale_opportunity_module?reset:int=1&simulation_state=contacted&local_roles:list=Assignee&local_roles:list=Assignor
sale_opportunity_module?reset:int=1&simulation_state=suspended&local_roles=Assignor
]]></string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Sale Opportunities to Qualify (%(count)s)</string> </value>
<value> <string>Suspended Sale Opportunities (%(count)s)</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
......@@ -42,9 +42,9 @@ sale_opportunity_module?reset:int=1&simulation_state=contacted&local_roles:list=
<key> <string>criterion_property</string> </key>
<value>
<tuple>
<string>portal_type</string>
<string>simulation_state</string>
<string>local_roles</string>
<string>portal_type</string>
</tuple>
</value>
</item>
......@@ -54,6 +54,12 @@ sale_opportunity_module?reset:int=1&simulation_state=contacted&local_roles:list=
<none/>
</value>
</item>
<item>
<key> <string>guard_expression</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
......@@ -74,7 +80,7 @@ sale_opportunity_module?reset:int=1&simulation_state=contacted&local_roles:list=
</item>
<item>
<key> <string>id</string> </key>
<value> <string>worklist_2_initial_contact_list</string> </value>
<value> <string>worklist_2_suspended_sale_opporunity_list</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
......@@ -102,26 +108,25 @@ sale_opportunity_module?reset:int=1&simulation_state=contacted&local_roles:list=
<item>
<key> <string>local_roles</string> </key>
<value>
<tuple>
<string>Assignee</string>
<list>
<string>Assignor</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value>
<tuple>
<list>
<string>Sale Opportunity</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>simulation_state</string> </key>
<value>
<tuple>
<string>contacted</string>
</tuple>
<list>
<string>suspended</string>
</list>
</value>
</item>
</dictionary>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Worklist" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_identity_criterion</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_range_criterion</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string encoding="cdata"><![CDATA[
sale_opportunity_module?reset:int=1&simulation_state=enquired&local_roles:list=Assignee&local_roles:list=Assignor
]]></string> </value>
</item>
<item>
<key> <string>action_name</string> </key>
<value> <string>Offers to Send (%(count)s)</string> </value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/global</string>
</tuple>
</value>
</item>
<item>
<key> <string>criterion_property</string> </key>
<value>
<tuple>
<string>portal_type</string>
<string>simulation_state</string>
<string>local_roles</string>
</tuple>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>guard_group</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>guard_permission</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>icon</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>worklist_3_enquired_opportunity_list</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Worklist</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>local_roles</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value>
<tuple>
<string>Sale Opportunity</string>
</tuple>
</value>
</item>
<item>
<key> <string>simulation_state</string> </key>
<value>
<tuple>
<string>enquired</string>
</tuple>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -28,6 +28,8 @@
##############################################################################
from __future__ import absolute_import
import json
import lxml.etree
from ZTUtils import make_query
from Products.Formulator import Widget
from Products.Formulator import Widget, Validator
......@@ -430,10 +432,9 @@ class OOoChartWidget(Widget.Widget):
REQUEST.set('render_prefix', render_prefix)
#needed to update REQUEST
argument_dict = self.getArgumentDict(field, REQUEST)
from xml.marshal.generic import dumps
dump_args = dumps(argument_dict)
#remove xml declaration (first processing node)
dump_args = dump_args[dump_args.index('?>')+2:]
marshal = lxml.etree.Element('marshal')
marshal.set('argument-dict-json', json.dumps(argument_dict))
dump_args = lxml.etree.tostring(marshal)
content = '''<office:include path="%s/ERP5Site_buildChart"
xlink:type="simple" xlink:actuate="onLoad"
xlink:show="embed">%s</office:include>
......
......@@ -29,6 +29,7 @@
from __future__ import absolute_import
from six import string_types as basestring
import json
from mimetypes import guess_extension
from OFS.Image import File
from Products.CMFCore.FSPageTemplate import FSPageTemplate
......@@ -425,9 +426,7 @@ class OOoTemplate(ZopePageTemplate):
for office_include in xml_doc.xpath('//office:include', namespaces=xml_doc.nsmap):
marshal_list = office_include.xpath('./marshal')
if marshal_list:
from xml.marshal.generic import loads
arg_dict = loads(etree.tostring(marshal_list[0], encoding='utf-8',
xml_declaration=True, pretty_print=False))
arg_dict = json.loads(marshal_list[0].get('argument-dict-json'))
extra_context.update(arg_dict)
request.other.update(arg_dict)
path = office_include.attrib['path']
......
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