diff --git a/master/bt5/slapos_accounting/ActionTemplateItem/portal_types/Computer%20Consumption%20TioXML%20File/download.xml b/master/bt5/slapos_accounting/ActionTemplateItem/portal_types/Computer%20Consumption%20TioXML%20File/download.xml new file mode 100644 index 0000000000000000000000000000000000000000..982662d09947a94f4c0019740423848d3c343a90 --- /dev/null +++ b/master/bt5/slapos_accounting/ActionTemplateItem/portal_types/Computer%20Consumption%20TioXML%20File/download.xml @@ -0,0 +1,79 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>action_type/object_exchange</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_exchange</string> </value> + </item> + <item> + <key> <string>condition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>icon</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>download</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>3.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Download</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Expression" module="Products.CMFCore.Expression"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>text</string> </key> + <value> <string>string:${object_url}/Base_download</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/ActionTemplateItem/portal_types/Computer%20Consumption%20TioXML%20File/view.xml b/master/bt5/slapos_accounting/ActionTemplateItem/portal_types/Computer%20Consumption%20TioXML%20File/view.xml new file mode 100644 index 0000000000000000000000000000000000000000..7613ccf576ae25b42471a9f37d2fbd89d1fbfe51 --- /dev/null +++ b/master/bt5/slapos_accounting/ActionTemplateItem/portal_types/Computer%20Consumption%20TioXML%20File/view.xml @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>action_type/object_view</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_view</string> </value> + </item> + <item> + <key> <string>condition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>icon</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>view</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Action Information</string> </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>1.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>View</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Expression" module="Products.CMFCore.Expression"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>text</string> </key> + <value> <string>string:${object_url}/File_view</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/ActionTemplateItem/portal_types/Consumption%20Document%20Module/view.xml b/master/bt5/slapos_accounting/ActionTemplateItem/portal_types/Consumption%20Document%20Module/view.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc6fd38e751356f2070b4dbe87fea6ce4deb5057 --- /dev/null +++ b/master/bt5/slapos_accounting/ActionTemplateItem/portal_types/Consumption%20Document%20Module/view.xml @@ -0,0 +1,85 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>action_type/object_list</string> + </tuple> + </value> + </item> + <item> + <key> <string>category</string> </key> + <value> <string>object_list</string> </value> + </item> + <item> + <key> <string>condition</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>icon</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>view</string> </value> + </item> + <item> + <key> <string>permissions</string> </key> + <value> + <tuple> + <string>View</string> + </tuple> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Action Information</string> </value> + </item> + <item> + <key> <string>priority</string> </key> + <value> <float>1.0</float> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>View</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Expression" module="Products.CMFCore.Expression"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>text</string> </key> + <value> <string>string:${object_url}/ConsumptionDocumentModule_viewDocumentList</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/ExtensionTemplateItem/SlapOSAccounting.py b/master/bt5/slapos_accounting/ExtensionTemplateItem/SlapOSAccounting.py new file mode 100644 index 0000000000000000000000000000000000000000..49c29c7903b2a684f55953c59f4526f62a4fe6c8 --- /dev/null +++ b/master/bt5/slapos_accounting/ExtensionTemplateItem/SlapOSAccounting.py @@ -0,0 +1,76 @@ +############################################################################### +# +# Copyright (c) 2002-2013 Nexedi SA and Contributors. All Rights Reserved. +# +# WARNING: This program as such is intended to be used by professional +# programmers who take the whole responsibility of assessing all potential +# consequences resulting from its eventual inadequacies and bugs +# End users who are looking for a ready-to-use solution with commercial +# guarantees and support are strongly adviced to contract a Free Software +# Service Company +# +# This program is Free Software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +############################################################################## + +from lxml import etree +from zExceptions import Unauthorized +import pkg_resources +import StringIO + +def ComputerConsumptionTioXMLFile_parseXml(self, REQUEST=None): + """Call bang on self.""" + if REQUEST is not None: + raise Unauthorized + xml = self.getData("") + + computer_consumption_model = \ + pkg_resources.resource_string( + 'slapos.slap', 'doc/computer_consumption.xsd') + + # Validate against the xsd + xsd_model = StringIO.StringIO(computer_consumption_model) + xmlschema_doc = etree.parse(xsd_model) + xmlschema = etree.XMLSchema(xmlschema_doc) + + string_to_validate = StringIO.StringIO(xml) + + try: + tree = etree.parse(string_to_validate) + except (etree.XMLSyntaxError, etree.DocumentInvalid) as e: + return None + + if not xmlschema.validate(tree): + return None + + # Get the title + title = \ + tree.find('transaction').find('title').text or "" + title = title.encode("UTF-8") + + movement_list = [] + for movement in tree.find('transaction').findall('movement'): + movement_list.append({ + 'resource': (movement.find('resource').text or "").encode("UTF-8"), + 'title': (movement.find('title').text or "").encode("UTF-8"), + 'reference': (movement.find('reference').text or "").encode("UTF-8"), + 'quantity': float(movement.find('quantity').text or "0"), + 'category': (movement.find('category').text or "").encode("UTF-8"), + }) + + return { + 'title': title, + 'movement': movement_list, + } diff --git a/master/bt5/slapos_accounting/ModuleTemplateItem/consumption_document_module.xml b/master/bt5/slapos_accounting/ModuleTemplateItem/consumption_document_module.xml new file mode 100644 index 0000000000000000000000000000000000000000..dfc66416772a2390dddd7479fe47c5815ea76431 --- /dev/null +++ b/master/bt5/slapos_accounting/ModuleTemplateItem/consumption_document_module.xml @@ -0,0 +1,96 @@ +<module> + <id>consumption_document_module</id> + <permission_list> + <permission type='tuple'> + <name>Access Transient Objects</name> + <role>Assignee</role> + <role>Assignor</role> + <role>Associate</role> + <role>Auditor</role> + <role>Author</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>Access contents information</name> + <role>Assignee</role> + <role>Assignor</role> + <role>Associate</role> + <role>Auditor</role> + <role>Author</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>Access session data</name> + <role>Assignee</role> + <role>Assignor</role> + <role>Associate</role> + <role>Auditor</role> + <role>Author</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>Add portal content</name> + <role>Assignor</role> + <role>Author</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>Add portal folders</name> + <role>Assignor</role> + <role>Author</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>Change local roles</name> + <role>Assignor</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>Copy or Move</name> + <role>Assignee</role> + <role>Assignor</role> + <role>Associate</role> + <role>Auditor</role> + <role>Author</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>Delete objects</name> + <role>Assignor</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>List folder contents</name> + <role>Assignee</role> + <role>Assignor</role> + <role>Associate</role> + <role>Auditor</role> + <role>Author</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>Modify portal content</name> + <role>Assignor</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>View</name> + <role>Assignee</role> + <role>Assignor</role> + <role>Associate</role> + <role>Auditor</role> + <role>Manager</role> + </permission> + <permission type='tuple'> + <name>View History</name> + <role>Assignee</role> + <role>Assignor</role> + <role>Associate</role> + <role>Auditor</role> + <role>Author</role> + <role>Manager</role> + </permission> + </permission_list> + <portal_type>Consumption Document Module</portal_type> + <title>Consumption Documents</title> +</module> \ No newline at end of file diff --git a/master/bt5/slapos_accounting/PathTemplateItem/portal_alarms/slapos_accounting_generate_packing_list_from_tioxml.xml b/master/bt5/slapos_accounting/PathTemplateItem/portal_alarms/slapos_accounting_generate_packing_list_from_tioxml.xml new file mode 100644 index 0000000000000000000000000000000000000000..98bd93441e012f9fc96f732a4395687be03b7d2f --- /dev/null +++ b/master/bt5/slapos_accounting/PathTemplateItem/portal_alarms/slapos_accounting_generate_packing_list_from_tioxml.xml @@ -0,0 +1,107 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Alarm" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>active_sense_method_id</string> </key> + <value> <string>Alarm_searchSubmittedConsumptionTioXMLFileList</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>slapos_accounting_generate_packing_list_from_tioxml</string> </value> + </item> + <item> + <key> <string>periodicity_day_frequency</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>periodicity_hour</string> </key> + <value> + <tuple> + <int>2</int> + </tuple> + </value> + </item> + <item> + <key> <string>periodicity_hour_frequency</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>periodicity_minute</string> </key> + <value> + <tuple> + <int>0</int> + </tuple> + </value> + </item> + <item> + <key> <string>periodicity_minute_frequency</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>periodicity_month</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>periodicity_month_day</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>periodicity_start_date</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>0.0</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>periodicity_week</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Alarm</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Generate Packing List from TioXML</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/PathTemplateItem/portal_alarms/slapos_instance_invoicing.xml b/master/bt5/slapos_accounting/PathTemplateItem/portal_alarms/slapos_instance_invoicing.xml index f76af2e42eacb6c618360ecbfc341f0f1821f539..2f3da9f752cd61d1297b843762bb0a877618721d 100644 --- a/master/bt5/slapos_accounting/PathTemplateItem/portal_alarms/slapos_instance_invoicing.xml +++ b/master/bt5/slapos_accounting/PathTemplateItem/portal_alarms/slapos_instance_invoicing.xml @@ -18,7 +18,7 @@ </item> <item> <key> <string>enabled</string> </key> - <value> <int>1</int> </value> + <value> <int>0</int> </value> </item> <item> <key> <string>id</string> </key> diff --git a/master/bt5/slapos_accounting/PathTemplateItem/service_module/slapos_netdrive_consumption.xml b/master/bt5/slapos_accounting/PathTemplateItem/service_module/slapos_netdrive_consumption.xml new file mode 100644 index 0000000000000000000000000000000000000000..7a0d9ef8c1ee802b53f4b07f354106f191b32347 --- /dev/null +++ b/master/bt5/slapos_accounting/PathTemplateItem/service_module/slapos_netdrive_consumption.xml @@ -0,0 +1,551 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Service" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Access_contents_information_Permission</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>_Add_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Modify_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_View_Permission</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>_count</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>_mt_index</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>_tree</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>aggregated_portal_type</string> </key> + <value> + <tuple> + <string>Computer Partition</string> + <string>Hosting Subscription</string> + <string>Software Instance</string> + <string>Software Release</string> + </tuple> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>quantity_unit/unit/piece</string> + <string>base_contribution/base_amount/invoicing/discounted</string> + <string>base_contribution/base_amount/invoicing/taxable</string> + <string>use/trade/sale</string> + <string>product_line/cloud/usage</string> + </tuple> + </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>default_reference</string> </key> + <value> <string>INETDRIVECONSUMPTION</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>slapos_netdrive_consumption</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Service</string> </value> + </item> + <item> + <key> <string>required_aggregated_portal_type</string> </key> + <value> + <tuple> + <string>Computer Partition</string> + <string>Hosting Subscription</string> + <string>Software Instance</string> + <string>Software Release</string> + </tuple> + </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Netdrive Consumption</string> </value> + </item> + <item> + <key> <string>workflow_history</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="Length" module="BTrees.Length"/> + </pickle> + <pickle> <int>0</int> </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="OOBTree" module="BTrees.OOBTree"/> + </pickle> + <pickle> + <none/> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="OOBTree" module="BTrees.OOBTree"/> + </pickle> + <pickle> + <none/> + </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>edit_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> + </value> + </item> + <item> + <key> <string>validation_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="6" aka="AAAAAAAAAAY="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>edit</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>0.0.0.0</string> </value> + </item> + <item> + <key> <string>state</string> </key> + <value> <string>current</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global id="6.1" name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1371128814.68</float> + <string>GMT+2</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>edit</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAg=</string> </persistent> + </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>0.0.0.0</string> </value> + </item> + <item> + <key> <string>state</string> </key> + <value> <string>current</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> <reference id="6.1"/> </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1371128814.7</float> + <string>GMT+2</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>edit</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>927.21234.59839.55278</string> </value> + </item> + <item> + <key> <string>state</string> </key> + <value> <string>current</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> <reference id="6.1"/> </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1371128821.65</float> + <string>GMT+2</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>edit</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>927.21234.59839.55278</string> </value> + </item> + <item> + <key> <string>state</string> </key> + <value> <string>current</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> <reference id="6.1"/> </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1371128861.7</float> + <string>GMT+2</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> + <record id="7" aka="AAAAAAAAAAc="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global id="7.1" name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1371128814.67</float> + <string>GMT+2</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>draft</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>validate_action</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> <reference id="7.1"/> </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1371128976.69</float> + <string>GMT+2</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>draft</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>validate</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> <reference id="7.1"/> </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1371128976.69</float> + <string>GMT+2</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>validated</string> </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> + <record id="8" aka="AAAAAAAAAAg="> + <pickle> + <global name="Message" module="Products.ERP5Type.Message"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>default</string> </key> + <value> <string>Object copied from ${source_item}</string> </value> + </item> + <item> + <key> <string>domain</string> </key> + <value> <string>erp5_ui</string> </value> + </item> + <item> + <key> <string>mapping</string> </key> + <value> + <dictionary> + <item> + <key> <string>source_item</string> </key> + <value> <string>/erp5/service_module/slapos_instance_subscription</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>message</string> </key> + <value> <string>Object copied from ${source_item}</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml b/master/bt5/slapos_accounting/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml index 4a9501409be55c018f22c0f9fa1ba593d14556f4..46adf137142dd06437139e93ef1e2966580a61ac 100644 --- a/master/bt5/slapos_accounting/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml +++ b/master/bt5/slapos_accounting/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml @@ -1,4 +1,7 @@ <allowed_content_type_list> + <portal_type id="Consumption Document Module"> + <item>Computer Consumption TioXML File</item> + </portal_type> <portal_type id="Order Tool"> <item>SlapOS Accounting Quantity Updating Order Builder</item> </portal_type> diff --git a/master/bt5/slapos_accounting/PortalTypeBaseCategoryTemplateItem/base_category_list.xml b/master/bt5/slapos_accounting/PortalTypeBaseCategoryTemplateItem/base_category_list.xml index 1bf33019bc4c2407da2f9ede6a39fc84a11b8693..61950404d3e146582309e643b32a6759ebd3664a 100644 --- a/master/bt5/slapos_accounting/PortalTypeBaseCategoryTemplateItem/base_category_list.xml +++ b/master/bt5/slapos_accounting/PortalTypeBaseCategoryTemplateItem/base_category_list.xml @@ -1,4 +1,7 @@ <base_category_list> + <portal_type id="Consumption Document Module"> + <item>business_application</item> + </portal_type> <portal_type id="Slave Instance"> <item>causality</item> </portal_type> diff --git a/master/bt5/slapos_accounting/PortalTypeHiddenContentTypeTemplateItem/hidden_content_type_list.xml b/master/bt5/slapos_accounting/PortalTypeHiddenContentTypeTemplateItem/hidden_content_type_list.xml new file mode 100644 index 0000000000000000000000000000000000000000..3860760629226db40d75e896fd835344ef4fd499 --- /dev/null +++ b/master/bt5/slapos_accounting/PortalTypeHiddenContentTypeTemplateItem/hidden_content_type_list.xml @@ -0,0 +1,5 @@ +<hidden_content_type_list> + <portal_type id="Consumption Document Module"> + <item>Computer Consumption TioXML File</item> + </portal_type> +</hidden_content_type_list> \ No newline at end of file diff --git a/master/bt5/slapos_accounting/PortalTypePropertySheetTemplateItem/property_sheet_list.xml b/master/bt5/slapos_accounting/PortalTypePropertySheetTemplateItem/property_sheet_list.xml index ed6da7fb0222c4fb399dfba86a22d86f7f215d33..ed7932bed3cf4e05812e1795c04de3d704364dde 100644 --- a/master/bt5/slapos_accounting/PortalTypePropertySheetTemplateItem/property_sheet_list.xml +++ b/master/bt5/slapos_accounting/PortalTypePropertySheetTemplateItem/property_sheet_list.xml @@ -1,4 +1,7 @@ <property_sheet_list> + <portal_type id="Computer Consumption TioXML File"> + <item>SortIndex</item> + </portal_type> <portal_type id="Hosting Subscription"> <item>SlapOSAccountingHostingSubscriptionConstraint</item> </portal_type> diff --git a/master/bt5/slapos_accounting/PortalTypeTemplateItem/portal_types/Computer%20Consumption%20TioXML%20File.xml b/master/bt5/slapos_accounting/PortalTypeTemplateItem/portal_types/Computer%20Consumption%20TioXML%20File.xml new file mode 100644 index 0000000000000000000000000000000000000000..b08f270d18ec7d9aaefefa0d4a1fe97062fd141c --- /dev/null +++ b/master/bt5/slapos_accounting/PortalTypeTemplateItem/portal_types/Computer%20Consumption%20TioXML%20File.xml @@ -0,0 +1,93 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Base Type" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>content_icon</string> </key> + <value> <string>file_icon.png</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>factory</string> </key> + <value> <string>addXMLObject</string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <tuple> + <string>document</string> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Computer Consumption TioXML File</string> </value> + </item> + <item> + <key> <string>init_script</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>permission</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Base Type</string> </value> + </item> + <item> + <key> <string>searchable_text_method_id</string> </key> + <value> + <tuple> + <string>as_text</string> + </tuple> + </value> + </item> + <item> + <key> <string>searchable_text_property_id</string> </key> + <value> + <tuple> + <string>title</string> + <string>description</string> + <string>reference</string> + <string>version</string> + <string>short_title</string> + <string>subject_list</string> + <string>filename</string> + <string>source_project_title</string> + </tuple> + </value> + </item> + <item> + <key> <string>type_class</string> </key> + <value> <string>File</string> </value> + </item> + <item> + <key> <string>type_interface</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>type_mixin</string> </key> + <value> + <tuple/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/PortalTypeTemplateItem/portal_types/Consumption%20Document%20Module.xml b/master/bt5/slapos_accounting/PortalTypeTemplateItem/portal_types/Consumption%20Document%20Module.xml new file mode 100644 index 0000000000000000000000000000000000000000..8dfc535720e88d1cd8e2ab22e4b2788f2845ed86 --- /dev/null +++ b/master/bt5/slapos_accounting/PortalTypeTemplateItem/portal_types/Consumption%20Document%20Module.xml @@ -0,0 +1,138 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Base Type" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_property_domain_dict</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>content_icon</string> </key> + <value> <string>folder_icon.gif</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>factory</string> </key> + <value> <string>addFolder</string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <tuple> + <string>module</string> + </tuple> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Consumption Document Module</string> </value> + </item> + <item> + <key> <string>init_script</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>permission</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Base Type</string> </value> + </item> + <item> + <key> <string>type_class</string> </key> + <value> <string>Folder</string> </value> + </item> + <item> + <key> <string>type_interface</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>type_mixin</string> </key> + <value> + <tuple/> + </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>short_title</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>title</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="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>domain_name</string> </key> + <value> <string>erp5_ui</string> </value> + </item> + <item> + <key> <string>property_name</string> </key> + <value> <string>short_title</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>domain_name</string> </key> + <value> <string>erp5_ui</string> </value> + </item> + <item> + <key> <string>property_name</string> </key> + <value> <string>title</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml b/master/bt5/slapos_accounting/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml index 5b046c741d7fc7095c1d6a97f01a3bbe8f9a8aa1..f0fa7ee4284475689793b20f860eb86c61a3c3f7 100644 --- a/master/bt5/slapos_accounting/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml +++ b/master/bt5/slapos_accounting/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml @@ -1,4 +1,8 @@ <workflow_chain> + <chain> + <type>Computer Consumption TioXML File</type> + <workflow>document_conversion_interaction_workflow, document_publication_workflow, edit_workflow</workflow> + </chain> <chain> <type>Hosting Subscription</type> <workflow>slapos_accounting_interaction_workflow, slapos_api_invoicing_workflow</workflow> diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_accounting/Alarm_searchSubmittedConsumptionTioXMLFileList.xml b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_accounting/Alarm_searchSubmittedConsumptionTioXMLFileList.xml new file mode 100644 index 0000000000000000000000000000000000000000..11aeeeb5ebad284073f6bc2e8d58ba68296d16aa --- /dev/null +++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_accounting/Alarm_searchSubmittedConsumptionTioXMLFileList.xml @@ -0,0 +1,78 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>portal = context.getPortalObject()\n +\n +portal.portal_catalog.searchAndActivate(\n + portal_type="Computer Consumption TioXML File",\n + validation_state="submitted",\n + method_id=\'ComputerConsumptionTioXMLFile_solveInvoicingGeneration\',\n + activity_count=1,\n + packet_size=1,\n + activate_kw={\'tag\': tag}\n +)\n +\n +context.activate(after_tag=tag).getId()\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>tag, fixit, params</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Alarm_searchSubmittedConsumptionTioXMLFileList</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption.xml b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption.xml new file mode 100644 index 0000000000000000000000000000000000000000..143e77773cd729838e6f4402f2e6c20f029ca8f3 --- /dev/null +++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption.xml @@ -0,0 +1,47 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Folder" module="OFS.Folder"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_local_properties</string> </key> + <value> + <tuple> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>business_template_skin_layer_priority</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>float</string> </value> + </item> + </dictionary> + </tuple> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>business_template_skin_layer_priority</string> </key> + <value> <float>60.0</float> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>slapos_consumption</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ComputerConsumptionTioXMLFile_parseXml.xml b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ComputerConsumptionTioXMLFile_parseXml.xml new file mode 100644 index 0000000000000000000000000000000000000000..89ff8cdcd644087cb6c1332f2c7dd65cb2b1f17c --- /dev/null +++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ComputerConsumptionTioXMLFile_parseXml.xml @@ -0,0 +1,28 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ExternalMethod" module="Products.ExternalMethod.ExternalMethod"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_function</string> </key> + <value> <string>ComputerConsumptionTioXMLFile_parseXml</string> </value> + </item> + <item> + <key> <string>_module</string> </key> + <value> <string>SlapOSAccounting</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ComputerConsumptionTioXMLFile_parseXml</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ComputerConsumptionTioXMLFile_solveInvoicingGeneration.xml b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ComputerConsumptionTioXMLFile_solveInvoicingGeneration.xml new file mode 100644 index 0000000000000000000000000000000000000000..22a3398510f01efaede4a649bbcc29117fec9189 --- /dev/null +++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ComputerConsumptionTioXMLFile_solveInvoicingGeneration.xml @@ -0,0 +1,141 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>from zExceptions import Unauthorized\n +if REQUEST is not None:\n + raise Unauthorized\n +\n +document = context\n +portal = document.getPortalObject()\n +result = []\n +\n +tioxml_dict = document.ComputerConsumptionTioXMLFile_parseXml()\n +if tioxml_dict is None:\n + document.reject(comment="Not usable TioXML data")\n +else:\n + packing_list_dict = {}\n + for movement_dict in tioxml_dict["movement"]:\n + reference = movement_dict[\'reference\']\n + if reference in packing_list_dict:\n + packing_list_dict[reference].append(movement_dict)\n + else:\n + packing_list_dict[reference] = [movement_dict]\n +\n + computer = context.getContributorValue(portal_type="Computer")\n + for reference, movement_list in packing_list_dict.items():\n +\n + # Time to create the PL\n + delivery_template = portal.restrictedTraverse(\n + portal.portal_preferences.getPreferredInstanceDeliveryTemplate())\n + delivery = delivery_template.Base_createCloneDocument(batch_mode=1)\n +\n + # Find the partition / software instance / user\n + partition = portal.portal_catalog.getResultValue(\n + parent_uid=computer.getUid(),\n + reference=reference,\n + portal_type="Computer Partition",\n + validation_state="validated")\n + assert partition.getSlapState() == \'busy\'\n +\n + instance = portal.portal_catalog.getResultValue(\n + default_aggregate_uid=partition.getUid(),\n + portal_type="Software Instance",\n + validation_state="validated")\n +\n + subscription = instance.getSpecialiseValue(\n + portal_type="Hosting Subscription")\n +\n + person = subscription.getDestinationSectionValue(\n + portal_type="Person")\n +\n + delivery.edit(\n + title="%s Consumption Usage" % instance.getReference(),\n + destination=person.getRelativeUrl(),\n + destination_decision=person.getRelativeUrl(),\n + start_date=context.getCreationDate(),\n + )\n +\n + result.append(delivery.getRelativeUrl())\n +\n + for movement in movement_list:\n + service = portal.restrictedTraverse(movement[\'resource\'])\n + delivery.newContent(\n + portal_type="Sale Packing List Line",\n + title=movement[\'title\'],\n + quantity=movement[\'quantity\'],\n + aggregate_value_list=[partition, instance, subscription],\n + resource_value=service,\n + quantity_unit=service.getQuantityUnit(),\n + )\n + delivery.confirm(comment="Created from %s" % context.getRelativeUrl())\n + delivery.start()\n + delivery.stop()\n + delivery.deliver()\n + delivery.startBuilding()\n +\n + document.share(comment="Created packing list: %s" % result)\n +\n +return result\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>REQUEST=None</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ComputerConsumptionTioXMLFile_solveInvoicingGeneration</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/Computer_reportComputerConsumption.xml b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/Computer_reportComputerConsumption.xml new file mode 100644 index 0000000000000000000000000000000000000000..f11d06931ada5da82acf0bebdc7482d006720e6c --- /dev/null +++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/Computer_reportComputerConsumption.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="PythonScript" module="Products.PythonScripts.PythonScript"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>Script_magic</string> </key> + <value> <int>3</int> </value> + </item> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_container</string> </key> + <value> <string>container</string> </value> + </item> + <item> + <key> <string>name_context</string> </key> + <value> <string>context</string> </value> + </item> + <item> + <key> <string>name_m_self</string> </key> + <value> <string>script</string> </value> + </item> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_body</string> </key> + <value> <string>from zExceptions import Unauthorized\n +if REQUEST is not None:\n + raise Unauthorized\n +\n +portal = context.getPortalObject()\n +computer = context\n +\n +reference = "TIOCONS-%s-%s" % (computer.getReference(), source_reference)\n +version = "%s" % context.getPortalObject().portal_ids.generateNewId(\n + id_group=(\'slap_tioxml_consumption_reference\', reference), default=1)\n +\n +document = portal.consumption_document_module.newContent(\n + portal_type="Computer Consumption TioXML File",\n + source_reference=source_reference,\n + title="%s consumption (%s)" % (computer.getReference(), source_reference),\n + reference=reference,\n + version=version,\n + data=consumption_xml,\n + classification="personal",\n + publication_section="other",\n + contributor_value=computer,\n +)\n +document.submit()\n +return document.getRelativeUrl()\n +</string> </value> + </item> + <item> + <key> <string>_params</string> </key> + <value> <string>source_reference, consumption_xml, REQUEST=None</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>Computer_reportComputerConsumption</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList.xml b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList.xml new file mode 100644 index 0000000000000000000000000000000000000000..156ac09480f92caf123fbfd84a1908f3316292cd --- /dev/null +++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList.xml @@ -0,0 +1,125 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ERP5Form" module="Products.ERP5Form.Form"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>_objects</string> </key> + <value> + <tuple/> + </value> + </item> + <item> + <key> <string>action</string> </key> + <value> <string>Base_doSelect</string> </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string>multipart/form-data</string> </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>bottom</string> + <string>hidden</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>bottom</string> </key> + <value> + <list> + <string>listbox</string> + </list> + </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> + <list> + <string>listbox_thumbnail</string> + <string>listbox_creation_date</string> + <string>listbox_modification_date</string> + </list> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>ConsumptionDocumentModule_viewDocumentList</string> </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string>DocumentModule_viewDocumentList</string> </value> + </item> + <item> + <key> <string>pt</string> </key> + <value> <string>form_list</string> </value> + </item> + <item> + <key> <string>rid</string> </key> + <value> <int>-1722436574</int> </value> + </item> + <item> + <key> <string>row_length</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>stored_encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Document List</string> </value> + </item> + <item> + <key> <string>unicode_mode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>update_action</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox.xml b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..c463ebb193d75292c40fa7a2d5bfa8a13c3eabc1 --- /dev/null +++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox.xml @@ -0,0 +1,997 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ListBox" module="Products.ERP5Form.ListBox"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>listbox</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>all_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>anchor</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>count_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_display_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_style_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_attributes</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_search_column</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hide_rows_on_no_search_criterion</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>lines</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>meta_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>page_navigation_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>page_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>row_css_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>select</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>style_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>untranslatable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>url_columns</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>all_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>anchor</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>count_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_display_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_params</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_style_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>domain_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_attributes</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_search_column</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hide_rows_on_no_search_criterion</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>lines</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>list_action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>meta_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>page_navigation_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>page_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_root_list</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>report_tree</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>row_css_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>select</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>sort_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stat_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>style_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>untranslatable_columns</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>url_columns</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>all_columns</string> </key> + <value> + <list> + <tuple> + <string>id</string> + <string>ID</string> + </tuple> + <tuple> + <string>title</string> + <string>Title</string> + </tuple> + <tuple> + <string>translated_portal_type</string> + <string>Type</string> + </tuple> + <tuple> + <string>reference</string> + <string>Reference</string> + </tuple> + <tuple> + <string>version</string> + <string>Version</string> + </tuple> + <tuple> + <string>language</string> + <string>Language</string> + </tuple> + <tuple> + <string>revision</string> + <string>Revision</string> + </tuple> + <tuple> + <string>short_title</string> + <string>Short Title</string> + </tuple> + <tuple> + <string>description</string> + <string>Description</string> + </tuple> + <tuple> + <string>int_index</string> + <string>Index</string> + </tuple> + <tuple> + <string>translated_validation_state_title</string> + <string>State</string> + </tuple> + <tuple> + <string>source_reference</string> + <string>Original Filename</string> + </tuple> + <tuple> + <string>classification_logical_path</string> + <string>Classification Path</string> + </tuple> + <tuple> + <string>classification_title</string> + <string>Classification</string> + </tuple> + <tuple> + <string>group_title</string> + <string>Group</string> + </tuple> + <tuple> + <string>site_title</string> + <string>Site</string> + </tuple> + <tuple> + <string>function_title</string> + <string>Function</string> + </tuple> + <tuple> + <string>follow_up_title</string> + <string>Follow Up</string> + </tuple> + <tuple> + <string>publication_section_title</string> + <string>Publication Section</string> + </tuple> + <tuple> + <string>contributor_title</string> + <string>Contributors</string> + </tuple> + <tuple> + <string>thumbnail</string> + <string>Thumbnail</string> + </tuple> + <tuple> + <string>subject_title</string> + <string>Keywords</string> + </tuple> + <tuple> + <string>creation_date</string> + <string>Creation Date</string> + </tuple> + <tuple> + <string>modification_date</string> + <string>Modification Date</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>anchor</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>columns</string> </key> + <value> + <list> + <tuple> + <string>title</string> + <string>Title</string> + </tuple> + <tuple> + <string>translated_portal_type</string> + <string>Type</string> + </tuple> + <tuple> + <string>reference</string> + <string>Reference</string> + </tuple> + <tuple> + <string>version</string> + <string>Version</string> + </tuple> + <tuple> + <string>language</string> + <string>Language</string> + </tuple> + <tuple> + <string>revision</string> + <string>Revision</string> + </tuple> + <tuple> + <string>short_title</string> + <string>Short Title</string> + </tuple> + <tuple> + <string>description</string> + <string>Description</string> + </tuple> + <tuple> + <string>int_index</string> + <string>Index</string> + </tuple> + <tuple> + <string>modification_date</string> + <string>Modification Date</string> + </tuple> + <tuple> + <string>translated_validation_state_title</string> + <string>State</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>count_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_display_style</string> </key> + <value> <string>table</string> </value> + </item> + <item> + <key> <string>default_params</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_style_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>domain_root_list</string> </key> + <value> + <list> + <tuple> + <string>publication_section</string> + <string>Publication Section</string> + </tuple> + <tuple> + <string>region</string> + <string>Region</string> + </tuple> + <tuple> + <string>function</string> + <string>Function</string> + </tuple> + <tuple> + <string>site</string> + <string>Site</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>domain_tree</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>editable_columns</string> </key> + <value> + <list> + <tuple> + <string>thumbnail</string> + <string>Thumbnail</string> + </tuple> + <tuple> + <string>creation_date</string> + <string>Creation Date</string> + </tuple> + <tuple> + <string>modification_date</string> + <string>Modification Date</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>global_attributes</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>global_search_column</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>hide_rows_on_no_search_criterion</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>lines</string> </key> + <value> <int>20</int> </value> + </item> + <item> + <key> <string>list_action</string> </key> + <value> <string>list</string> </value> + </item> + <item> + <key> <string>list_method</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>meta_types</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>page_navigation_template</string> </key> + <value> <string>ListBox_viewSliderPageNavigationRenderer</string> </value> + </item> + <item> + <key> <string>page_template</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>portal_types</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>report_root_list</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>report_tree</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>row_css_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>search</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>search_columns</string> </key> + <value> + <list> + <tuple> + <string>id</string> + <string>ID</string> + </tuple> + <tuple> + <string>title</string> + <string>Title</string> + </tuple> + <tuple> + <string>translated_portal_type</string> + <string>Type</string> + </tuple> + <tuple> + <string>reference</string> + <string>Reference</string> + </tuple> + <tuple> + <string>version</string> + <string>Version</string> + </tuple> + <tuple> + <string>language</string> + <string>Language</string> + </tuple> + <tuple> + <string>revision</string> + <string>Revision</string> + </tuple> + <tuple> + <string>short_title</string> + <string>Short Title</string> + </tuple> + <tuple> + <string>description</string> + <string>Description</string> + </tuple> + <tuple> + <string>int_index</string> + <string>Index</string> + </tuple> + <tuple> + <string>translated_validation_state_title</string> + <string>State</string> + </tuple> + <tuple> + <string>source_reference</string> + <string>Original Filename</string> + </tuple> + <tuple> + <string>classification_logical_path</string> + <string>Classification Path</string> + </tuple> + <tuple> + <string>classification_title</string> + <string>Classification</string> + </tuple> + <tuple> + <string>group_title</string> + <string>Group</string> + </tuple> + <tuple> + <string>site_title</string> + <string>Site</string> + </tuple> + <tuple> + <string>function_title</string> + <string>Function</string> + </tuple> + <tuple> + <string>follow_up_title</string> + <string>Follow Up</string> + </tuple> + <tuple> + <string>publication_section_title</string> + <string>Publication Section</string> + </tuple> + <tuple> + <string>contributor_title</string> + <string>Contributors</string> + </tuple> + <tuple> + <string>subject_title</string> + <string>Keywords</string> + </tuple> + <tuple> + <string>creation_date</string> + <string>Creation Date</string> + </tuple> + <tuple> + <string>modification_date</string> + <string>Modification Date</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>select</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>selection_name</string> </key> + <value> <string>consumption_document_selection</string> </value> + </item> + <item> + <key> <string>sort</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>sort_columns</string> </key> + <value> + <list> + <tuple> + <string>id</string> + <string>ID</string> + </tuple> + <tuple> + <string>title</string> + <string>Title</string> + </tuple> + <tuple> + <string>translated_portal_type</string> + <string>Type</string> + </tuple> + <tuple> + <string>reference</string> + <string>Reference</string> + </tuple> + <tuple> + <string>version</string> + <string>Version</string> + </tuple> + <tuple> + <string>language</string> + <string>Language</string> + </tuple> + <tuple> + <string>revision</string> + <string>Revision</string> + </tuple> + <tuple> + <string>short_title</string> + <string>Short Title</string> + </tuple> + <tuple> + <string>description</string> + <string>Description</string> + </tuple> + <tuple> + <string>int_index</string> + <string>Index</string> + </tuple> + <tuple> + <string>translated_validation_state_title</string> + <string>State</string> + </tuple> + <tuple> + <string>source_reference</string> + <string>Original Filename</string> + </tuple> + <tuple> + <string>classification_logical_path</string> + <string>Classification Path</string> + </tuple> + <tuple> + <string>classification_title</string> + <string>Classification</string> + </tuple> + <tuple> + <string>group_title</string> + <string>Group</string> + </tuple> + <tuple> + <string>site_title</string> + <string>Site</string> + </tuple> + <tuple> + <string>function_title</string> + <string>Function</string> + </tuple> + <tuple> + <string>follow_up_title</string> + <string>Follow Up</string> + </tuple> + <tuple> + <string>publication_section_title</string> + <string>Publication Section</string> + </tuple> + <tuple> + <string>contributor_title</string> + <string>Contributors</string> + </tuple> + <tuple> + <string>thumbnail</string> + <string>Thumbnail</string> + </tuple> + <tuple> + <string>subject_title</string> + <string>Keywords</string> + </tuple> + <tuple> + <string>creation_date</string> + <string>Creation Date</string> + </tuple> + <tuple> + <string>modification_date</string> + <string>Modification Date</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>stat_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>stat_method</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>style_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Documents</string> </value> + </item> + <item> + <key> <string>untranslatable_columns</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>url_columns</string> </key> + <value> + <list/> + </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>python: preferences.getPreference(\'preferred_hide_rows_on_no_search_criterion\', False)</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>python: preferences.getPreference(\'preferred_listbox_list_mode_line_count\', 30)</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="Method" module="Products.Formulator.MethodField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>method_name</string> </key> + <value> <string>searchFolder</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox_creation_date.xml b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox_creation_date.xml new file mode 100644 index 0000000000000000000000000000000000000000..0db1ec833a6d4d88d6f35492a61379ef83a3591f --- /dev/null +++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox_creation_date.xml @@ -0,0 +1,2359 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="DateTimeField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>listbox_creation_date</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>datetime_out_of_range</string> </key> + <value> <string>The date and time you entered were out of range.</string> </value> + </item> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>not_datetime</string> </key> + <value> <string>You did not enter a valid date and time.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>allow_empty_time</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>ampm_time_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>date_only</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>date_separator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_now</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end_datetime</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden_day_is_last_day</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hide_day</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>input_order</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>input_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start_datetime</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time_separator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>timezone_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>sub_form</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>allow_empty_time</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>ampm_time_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>date_only</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>date_separator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_now</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end_datetime</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden_day_is_last_day</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hide_day</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>input_order</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>input_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start_datetime</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time_separator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>timezone_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>allow_empty_time</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>ampm_time_style</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string>date_field</string> </value> + </item> + <item> + <key> <string>date_only</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>date_separator</string> </key> + <value> <string>/</string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>default_now</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string>The Date</string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end_datetime</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>hidden_day_is_last_day</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>hide_day</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>input_order</string> </key> + <value> <string>ymd</string> </value> + </item> + <item> + <key> <string>input_style</string> </key> + <value> <string>text</string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start_datetime</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>time_separator</string> </key> + <value> <string>:</string> </value> + </item> + <item> + <key> <string>timezone_style</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Creation Date</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="BasicForm" module="Products.Formulator.Form"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>fields</string> </key> + <value> + <dictionary> + <item> + <key> <string>ampm</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>day</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + <item> + <key> <string>hour</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> + </value> + </item> + <item> + <key> <string>minute</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> + </value> + </item> + <item> + <key> <string>month</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAg=</string> </persistent> + </value> + </item> + <item> + <key> <string>timezone</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAk=</string> </persistent> + </value> + </item> + <item> + <key> <string>year</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAo=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>Default</string> + <string>date</string> + <string>time</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>Default</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>date</string> </key> + <value> + <list> + <string>year</string> + <string>month</string> + <string>day</string> + </list> + </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <list> + <string>hour</string> + <string>minute</string> + <string>ampm</string> + <string>timezone</string> + </list> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stored_encoding</string> </key> + <value> <string>ISO-8859-1</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Basic Form</string> </value> + </item> + <item> + <key> <string>unicode_mode</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>preferences/getPreferredDateOrder | string:ymd</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="StringField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>ampm</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + <item> + <key> <string>too_long</string> </key> + <value> <string>Too much input was given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>max_length</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>truncate</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>max_length</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>truncate</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>max_length</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>am/pm</string> </value> + </item> + <item> + <key> <string>truncate</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="IntegerField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>day</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>integer_out_of_range</string> </key> + <value> <string>The integer you entered was out of range.</string> </value> + </item> + <item> + <key> <string>not_integer</string> </key> + <value> <string>You did not enter an integer.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Day</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="6" aka="AAAAAAAAAAY="> + <pickle> + <global name="IntegerField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>hour</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>integer_out_of_range</string> </key> + <value> <string>The integer you entered was out of range.</string> </value> + </item> + <item> + <key> <string>not_integer</string> </key> + <value> <string>You did not enter an integer.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Hour</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="7" aka="AAAAAAAAAAc="> + <pickle> + <global name="IntegerField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>minute</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>integer_out_of_range</string> </key> + <value> <string>The integer you entered was out of range.</string> </value> + </item> + <item> + <key> <string>not_integer</string> </key> + <value> <string>You did not enter an integer.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Minute</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="8" aka="AAAAAAAAAAg="> + <pickle> + <global name="IntegerField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>month</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>integer_out_of_range</string> </key> + <value> <string>The integer you entered was out of range.</string> </value> + </item> + <item> + <key> <string>not_integer</string> </key> + <value> <string>You did not enter an integer.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Month</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="9" aka="AAAAAAAAAAk="> + <pickle> + <global name="ListField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>timezone</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + <item> + <key> <string>unknown_selection</string> </key> + <value> <string>You selected an item that was not in the list.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra_item</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>first_item</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>items</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra_item</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>first_item</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>items</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string>GMT</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra_item</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>first_item</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>items</string> </key> + <value> + <list> + <tuple> + <string>GMT-12</string> + <string>GMT-12</string> + </tuple> + <tuple> + <string>GMT-11</string> + <string>GMT-11</string> + </tuple> + <tuple> + <string>GMT-10</string> + <string>GMT-10</string> + </tuple> + <tuple> + <string>GMT-9</string> + <string>GMT-9</string> + </tuple> + <tuple> + <string>GMT-8</string> + <string>GMT-8</string> + </tuple> + <tuple> + <string>GMT-7</string> + <string>GMT-7</string> + </tuple> + <tuple> + <string>GMT-6</string> + <string>GMT-6</string> + </tuple> + <tuple> + <string>GMT-5</string> + <string>GMT-5</string> + </tuple> + <tuple> + <string>GMT-4</string> + <string>GMT-4</string> + </tuple> + <tuple> + <string>GMT-3</string> + <string>GMT-3</string> + </tuple> + <tuple> + <string>GMT-2</string> + <string>GMT-2</string> + </tuple> + <tuple> + <string>GMT-1</string> + <string>GMT-1</string> + </tuple> + <tuple> + <string>GMT</string> + <string>GMT</string> + </tuple> + <tuple> + <string>GMT+1</string> + <string>GMT+1</string> + </tuple> + <tuple> + <string>GMT+2</string> + <string>GMT+2</string> + </tuple> + <tuple> + <string>GMT+3</string> + <string>GMT+3</string> + </tuple> + <tuple> + <string>GMT+4</string> + <string>GMT+4</string> + </tuple> + <tuple> + <string>GMT+5</string> + <string>GMT+5</string> + </tuple> + <tuple> + <string>GMT+6</string> + <string>GMT+6</string> + </tuple> + <tuple> + <string>GMT+7</string> + <string>GMT+7</string> + </tuple> + <tuple> + <string>GMT+8</string> + <string>GMT+8</string> + </tuple> + <tuple> + <string>GMT+9</string> + <string>GMT+9</string> + </tuple> + <tuple> + <string>GMT+10</string> + <string>GMT+10</string> + </tuple> + <tuple> + <string>GMT+11</string> + <string>GMT+11</string> + </tuple> + <tuple> + <string>GMT+12</string> + <string>GMT+12</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Timezone</string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="10" aka="AAAAAAAAAAo="> + <pickle> + <global name="IntegerField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>year</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>integer_out_of_range</string> </key> + <value> <string>The integer you entered was out of range.</string> </value> + </item> + <item> + <key> <string>not_integer</string> </key> + <value> <string>You did not enter an integer.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Year</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox_modification_date.xml b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox_modification_date.xml new file mode 100644 index 0000000000000000000000000000000000000000..67832a336610117e9ae51fc5bb192c34b3bef4f3 --- /dev/null +++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox_modification_date.xml @@ -0,0 +1,2359 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="DateTimeField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>listbox_modification_date</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>datetime_out_of_range</string> </key> + <value> <string>The date and time you entered were out of range.</string> </value> + </item> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>not_datetime</string> </key> + <value> <string>You did not enter a valid date and time.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>allow_empty_time</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>ampm_time_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>date_only</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>date_separator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_now</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end_datetime</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden_day_is_last_day</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hide_day</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>input_order</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>input_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start_datetime</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time_separator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>timezone_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>sub_form</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>allow_empty_time</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>ampm_time_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>date_only</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>date_separator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default_now</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end_datetime</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden_day_is_last_day</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hide_day</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>input_order</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>input_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start_datetime</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time_separator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>timezone_style</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>allow_empty_time</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>ampm_time_style</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string>date_field</string> </value> + </item> + <item> + <key> <string>date_only</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>date_separator</string> </key> + <value> <string>/</string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>default_now</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string>The Date</string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end_datetime</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>hidden_day_is_last_day</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>hide_day</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>input_order</string> </key> + <value> <string>ymd</string> </value> + </item> + <item> + <key> <string>input_style</string> </key> + <value> <string>text</string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start_datetime</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>time_separator</string> </key> + <value> <string>:</string> </value> + </item> + <item> + <key> <string>timezone_style</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Modification Date</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="BasicForm" module="Products.Formulator.Form"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>encoding</string> </key> + <value> <string>UTF-8</string> </value> + </item> + <item> + <key> <string>enctype</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>fields</string> </key> + <value> + <dictionary> + <item> + <key> <string>ampm</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>day</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + <item> + <key> <string>hour</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> + </value> + </item> + <item> + <key> <string>minute</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> + </value> + </item> + <item> + <key> <string>month</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAg=</string> </persistent> + </value> + </item> + <item> + <key> <string>timezone</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAk=</string> </persistent> + </value> + </item> + <item> + <key> <string>year</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAo=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>group_list</string> </key> + <value> + <list> + <string>Default</string> + <string>date</string> + <string>time</string> + </list> + </value> + </item> + <item> + <key> <string>groups</string> </key> + <value> + <dictionary> + <item> + <key> <string>Default</string> </key> + <value> + <list/> + </value> + </item> + <item> + <key> <string>date</string> </key> + <value> + <list> + <string>year</string> + <string>month</string> + <string>day</string> + </list> + </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <list> + <string>hour</string> + <string>minute</string> + <string>ampm</string> + <string>timezone</string> + </list> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>method</string> </key> + <value> <string>POST</string> </value> + </item> + <item> + <key> <string>name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>stored_encoding</string> </key> + <value> <string>ISO-8859-1</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Basic Form</string> </value> + </item> + <item> + <key> <string>unicode_mode</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>preferences/getPreferredDateOrder | string:ymd</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="StringField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>ampm</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + <item> + <key> <string>too_long</string> </key> + <value> <string>Too much input was given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>max_length</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>truncate</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>max_length</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>truncate</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>max_length</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>am/pm</string> </value> + </item> + <item> + <key> <string>truncate</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="IntegerField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>day</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>integer_out_of_range</string> </key> + <value> <string>The integer you entered was out of range.</string> </value> + </item> + <item> + <key> <string>not_integer</string> </key> + <value> <string>You did not enter an integer.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Day</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="6" aka="AAAAAAAAAAY="> + <pickle> + <global name="IntegerField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>hour</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>integer_out_of_range</string> </key> + <value> <string>The integer you entered was out of range.</string> </value> + </item> + <item> + <key> <string>not_integer</string> </key> + <value> <string>You did not enter an integer.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Hour</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="7" aka="AAAAAAAAAAc="> + <pickle> + <global name="IntegerField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>minute</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>integer_out_of_range</string> </key> + <value> <string>The integer you entered was out of range.</string> </value> + </item> + <item> + <key> <string>not_integer</string> </key> + <value> <string>You did not enter an integer.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Minute</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="8" aka="AAAAAAAAAAg="> + <pickle> + <global name="IntegerField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>month</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>integer_out_of_range</string> </key> + <value> <string>The integer you entered was out of range.</string> </value> + </item> + <item> + <key> <string>not_integer</string> </key> + <value> <string>You did not enter an integer.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>2</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Month</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="9" aka="AAAAAAAAAAk="> + <pickle> + <global name="ListField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>timezone</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + <item> + <key> <string>unknown_selection</string> </key> + <value> <string>You selected an item that was not in the list.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra_item</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>first_item</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>items</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra_item</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>first_item</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>items</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string>GMT</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra_item</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>first_item</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>items</string> </key> + <value> + <list> + <tuple> + <string>GMT-12</string> + <string>GMT-12</string> + </tuple> + <tuple> + <string>GMT-11</string> + <string>GMT-11</string> + </tuple> + <tuple> + <string>GMT-10</string> + <string>GMT-10</string> + </tuple> + <tuple> + <string>GMT-9</string> + <string>GMT-9</string> + </tuple> + <tuple> + <string>GMT-8</string> + <string>GMT-8</string> + </tuple> + <tuple> + <string>GMT-7</string> + <string>GMT-7</string> + </tuple> + <tuple> + <string>GMT-6</string> + <string>GMT-6</string> + </tuple> + <tuple> + <string>GMT-5</string> + <string>GMT-5</string> + </tuple> + <tuple> + <string>GMT-4</string> + <string>GMT-4</string> + </tuple> + <tuple> + <string>GMT-3</string> + <string>GMT-3</string> + </tuple> + <tuple> + <string>GMT-2</string> + <string>GMT-2</string> + </tuple> + <tuple> + <string>GMT-1</string> + <string>GMT-1</string> + </tuple> + <tuple> + <string>GMT</string> + <string>GMT</string> + </tuple> + <tuple> + <string>GMT+1</string> + <string>GMT+1</string> + </tuple> + <tuple> + <string>GMT+2</string> + <string>GMT+2</string> + </tuple> + <tuple> + <string>GMT+3</string> + <string>GMT+3</string> + </tuple> + <tuple> + <string>GMT+4</string> + <string>GMT+4</string> + </tuple> + <tuple> + <string>GMT+5</string> + <string>GMT+5</string> + </tuple> + <tuple> + <string>GMT+6</string> + <string>GMT+6</string> + </tuple> + <tuple> + <string>GMT+7</string> + <string>GMT+7</string> + </tuple> + <tuple> + <string>GMT+8</string> + <string>GMT+8</string> + </tuple> + <tuple> + <string>GMT+9</string> + <string>GMT+9</string> + </tuple> + <tuple> + <string>GMT+10</string> + <string>GMT+10</string> + </tuple> + <tuple> + <string>GMT+11</string> + <string>GMT+11</string> + </tuple> + <tuple> + <string>GMT+12</string> + <string>GMT+12</string> + </tuple> + </list> + </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>size</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Timezone</string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="10" aka="AAAAAAAAAAo="> + <pickle> + <global name="IntegerField" module="Products.Formulator.StandardFields"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>year</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>integer_out_of_range</string> </key> + <value> <string>The integer you entered was out of range.</string> </value> + </item> + <item> + <key> <string>not_integer</string> </key> + <value> <string>You did not enter an integer.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>4</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>end</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>start</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Year</string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox_thumbnail.xml b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox_thumbnail.xml new file mode 100644 index 0000000000000000000000000000000000000000..4af8853113abd09c7f1666b5cebb8c3f68d32ac7 --- /dev/null +++ b/master/bt5/slapos_accounting/SkinTemplateItem/portal_skins/slapos_consumption/ConsumptionDocumentModule_viewDocumentList/listbox_thumbnail.xml @@ -0,0 +1,368 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ImageField" module="Products.ERP5Form.ImageField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>listbox_thumbnail</string> </value> + </item> + <item> + <key> <string>message_values</string> </key> + <value> + <dictionary> + <item> + <key> <string>external_validator_failed</string> </key> + <value> <string>The input failed the external validator.</string> </value> + </item> + <item> + <key> <string>required_not_found</string> </key> + <value> <string>Input is required but no input given.</string> </value> + </item> + <item> + <key> <string>too_long</string> </key> + <value> <string>Too much input was given.</string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>overrides</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>image_display</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>image_format</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>image_pre_converted_only</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>image_quality</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>max_length</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>truncate</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>tales</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>image_display</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>image_format</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>image_pre_converted_only</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>image_quality</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + <item> + <key> <string>max_length</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>truncate</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <string></string> </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>values</string> </key> + <value> + <dictionary> + <item> + <key> <string>alternate_name</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>css_class</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>default</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_maxwidth</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>display_width</string> </key> + <value> <int>20</int> </value> + </item> + <item> + <key> <string>editable</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>enabled</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>external_validator</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>extra</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>hidden</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>image_display</string> </key> + <value> <string>thumbnail</string> </value> + </item> + <item> + <key> <string>image_format</string> </key> + <value> <string>png</string> </value> + </item> + <item> + <key> <string>image_pre_converted_only</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>image_quality</string> </key> + <value> <int>75</int> </value> + </item> + <item> + <key> <string>max_length</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>required</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Thumbnail</string> </value> + </item> + <item> + <key> <string>truncate</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>unicode</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>whitespace_preserve</string> </key> + <value> <int>0</int> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>cell/absolute_url</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>python:cell.getPortalType() in (\'Drawing\', \'Spreadsheet\', \'PDF\', \'Presentation\', \'Text\')</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>python: here.portal_preferences.getPreferredPreConvertedOnly()</string> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="TALESMethod" module="Products.Formulator.TALESField"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_text</string> </key> + <value> <string>python: here.portal_preferences.getPreferredImageQuality()</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/master/bt5/slapos_accounting/TestTemplateItem/testSlapOSAccountingAlarm.py b/master/bt5/slapos_accounting/TestTemplateItem/testSlapOSAccountingAlarm.py index 19758f31afb2330392965a10fdf1d6e8112838a7..da21bdd0e73e298230706671c5b3fc4a39cfd917 100644 --- a/master/bt5/slapos_accounting/TestTemplateItem/testSlapOSAccountingAlarm.py +++ b/master/bt5/slapos_accounting/TestTemplateItem/testSlapOSAccountingAlarm.py @@ -1994,3 +1994,59 @@ portal_workflow.doActionFor(context, action='edit_action', comment='Visited by O self.assertNotEqual( 'Visited by OpenSaleOrder_reindexIfIndexedBeforeLine', open_order.workflow_history['edit_workflow'][-1]['comment']) + +class TestSlapOSGeneratePackingListFromTioXML(testSlapOSMixin): + + def createTioXMLFile(self): + document = self.portal.consumption_document_module.newContent( + title=self.generateNewId(), + reference="TESTTIOCONS-%s" % self.generateNewId(), + ) + return document + + def _simulateComputerConsumptionTioXMLFile_solveInvoicingGeneration(self): + script_name = 'ComputerConsumptionTioXMLFile_solveInvoicingGeneration' + if script_name in self.portal.portal_skins.custom.objectIds(): + raise ValueError('Precondition failed: %s exists in custom' % script_name) + createZODBPythonScript(self.portal.portal_skins.custom, + script_name, + '*args, **kwargs', + '# Script body\n' +"""portal_workflow = context.portal_workflow +portal_workflow.doActionFor(context, action='edit_action', comment='Visited by ComputerConsumptionTioXMLFile_solveInvoicingGeneration') """ ) + transaction.commit() + + def _dropComputerConsumptionTioXMLFile_solveInvoicingGeneration(self): + script_name = 'ComputerConsumptionTioXMLFile_solveInvoicingGeneration' + if script_name in self.portal.portal_skins.custom.objectIds(): + self.portal.portal_skins.custom.manage_delObjects(script_name) + transaction.commit() + + def test_alarm(self): + document = self.createTioXMLFile() + document.submit() + self.tic() + self._simulateComputerConsumptionTioXMLFile_solveInvoicingGeneration() + try: + self.portal.portal_alarms.\ + slapos_accounting_generate_packing_list_from_tioxml.activeSense() + self.tic() + finally: + self._dropComputerConsumptionTioXMLFile_solveInvoicingGeneration() + self.assertEqual( + 'Visited by ComputerConsumptionTioXMLFile_solveInvoicingGeneration', + document.workflow_history['edit_workflow'][-1]['comment']) + + def test_alarm_not_submitted(self): + document = self.createTioXMLFile() + self.tic() + self._simulateComputerConsumptionTioXMLFile_solveInvoicingGeneration() + try: + self.portal.portal_alarms.\ + slapos_accounting_generate_packing_list_from_tioxml.activeSense() + self.tic() + finally: + self._dropComputerConsumptionTioXMLFile_solveInvoicingGeneration() + self.assertNotEqual( + 'Visited by ComputerConsumptionTioXMLFile_solveInvoicingGeneration', + document.workflow_history['edit_workflow'][-1]['comment']) diff --git a/master/bt5/slapos_accounting/TestTemplateItem/testSlapOSConsumptionSkins.py b/master/bt5/slapos_accounting/TestTemplateItem/testSlapOSConsumptionSkins.py new file mode 100644 index 0000000000000000000000000000000000000000..d774022edf23b6298f5fad8e191e37c4bd235ddd --- /dev/null +++ b/master/bt5/slapos_accounting/TestTemplateItem/testSlapOSConsumptionSkins.py @@ -0,0 +1,586 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Copyright (c) 2013 Nexedi SA and Contributors. All Rights Reserved. +# +############################################################################## + +import transaction +from Products.SlapOS.tests.testSlapOSMixin import \ + testSlapOSMixin, withAbort +from zExceptions import Unauthorized +from functools import wraps +from Products.ERP5Type.tests.utils import createZODBPythonScript + +def simulate(script_id, params_string, code_string): + def upperWrap(f): + @wraps(f) + def decorated(self, *args, **kw): + if script_id in self.portal.portal_skins.custom.objectIds(): + raise ValueError('Precondition failed: %s exists in custom' % script_id) + createZODBPythonScript(self.portal.portal_skins.custom, + script_id, params_string, code_string) + try: + result = f(self, *args, **kw) + finally: + if script_id in self.portal.portal_skins.custom.objectIds(): + self.portal.portal_skins.custom.manage_delObjects(script_id) + transaction.commit() + return result + return decorated + return upperWrap + +class TestSlapOSComputer_reportComputerConsumption(testSlapOSMixin): + + def beforeTearDown(self): + transaction.abort() + + def createComputer(self): + new_id = self.generateNewId() + return self.portal.computer_module.newContent( + portal_type='Computer', + title="Computer %s" % new_id, + reference="TESTCOMP-%s" % new_id, + ) + + def test_reportComputerConsumption_REQUEST_disallowed(self): + computer = self.createComputer() + self.assertRaises( + Unauthorized, + computer.Computer_reportComputerConsumption, + "foo", "bar", + REQUEST={}) + + def test_reportComputerConsumption_expected_xml(self): + new_id = self.generateNewId() + consumption_xml = """<?xml version='1.0' encoding='utf-8'?> +<journal> +<transaction type="Sale Packing List"> +<title>Resource consumptions</title> +<start_date></start_date> +<stop_date></stop_date> +<reference>foo</reference> +<currency></currency> +<payment_mode></payment_mode> +<category></category> +<arrow type="Administration"> +<source></source> +<destination></destination> +</arrow> +<movement> +<resource>CPU Consumption</resource> +<title>Title Sale Packing List Line 1</title> +<reference>slappart0</reference> +<quantity>42.42</quantity> +<price>0.00</price> +<VAT>None</VAT> +<category>None</category> +</movement> +</transaction> +</journal>""" + + computer = self.createComputer() + document_relative_url = computer.Computer_reportComputerConsumption( + new_id, consumption_xml) + document = self.portal.restrictedTraverse(document_relative_url) + self.assertEquals(document.getPortalType(), + "Computer Consumption TioXML File") + self.assertEquals(document.getSourceReference(), new_id) + self.assertEquals(document.getTitle(), + "%s consumption (%s)" % (computer.getReference(), new_id)) + self.assertNotEquals(document.getReference(), "") + self.assertEquals(document.getVersion(), "1") + self.assertEquals(document.getData(), consumption_xml) + self.assertEquals(document.getClassification(), "personal") + self.assertEquals(document.getPublicationSection(), "other") + self.assertEquals(document.getValidationState(), "submitted") + self.assertEquals(document.getContributor(), computer.getRelativeUrl()) + + def test_reportComputerConsumption_reported_twice(self): + new_id = self.generateNewId() + consumption_xml = """<?xml version='1.0' encoding='utf-8'?> +<journal> +<transaction type="Sale Packing List"> +<title>Resource consumptions</title> +<start_date></start_date> +<stop_date></stop_date> +<reference>foo</reference> +<currency></currency> +<payment_mode></payment_mode> +<category></category> +<arrow type="Administration"> +<source></source> +<destination></destination> +</arrow> +<movement> +<resource>CPU Consumption</resource> +<title>Title Sale Packing List Line 1</title> +<reference>slappart0</reference> +<quantity>42.42</quantity> +<price>0.00</price> +<VAT>None</VAT> +<category>None</category> +</movement> +</transaction> +</journal>""" + + computer = self.createComputer() + document1_relative_url = computer.Computer_reportComputerConsumption( + new_id, consumption_xml) + document1 = self.portal.restrictedTraverse(document1_relative_url) + + document2_relative_url = computer.Computer_reportComputerConsumption( + new_id, consumption_xml) + document2 = self.portal.restrictedTraverse(document2_relative_url) + + self.assertEquals(document2.getPortalType(), + "Computer Consumption TioXML File") + self.assertEquals(document2.getSourceReference(), + document1.getSourceReference()) + self.assertEquals(document2.getTitle(), document1.getTitle()) + self.assertEquals(document2.getReference(), document1.getReference()) + self.assertEquals(document1.getVersion(), "1") + self.assertEquals(document2.getVersion(), "2") + self.assertEquals(document2.getData(), consumption_xml) + self.assertEquals(document2.getClassification(), "personal") + self.assertEquals(document2.getPublicationSection(), "other") + self.assertEquals(document1.getValidationState(), "submitted") + self.assertEquals(document2.getValidationState(), "submitted") + self.assertEquals(document2.getContributor(), computer.getRelativeUrl()) + +class TestSlapOSComputerConsumptionTioXMLFile_parseXml(testSlapOSMixin): + + def beforeTearDown(self): + transaction.abort() + + def createTioXMLFile(self): + document = self.portal.consumption_document_module.newContent( + title=self.generateNewId(), + reference="TESTTIOCONS-%s" % self.generateNewId(), + ) + document.submit() + return document + + def test_parseXml_REQUEST_disallowed(self): + document = self.createTioXMLFile() + self.assertRaises( + Unauthorized, + document.ComputerConsumptionTioXMLFile_parseXml, + REQUEST={}) + + def test_parseXml_no_data(self): + document = self.createTioXMLFile() + result = document.ComputerConsumptionTioXMLFile_parseXml() + self.assertEqual(result, None) + + def test_parseXml_no_xml(self): + document = self.createTioXMLFile() + document.edit(data="<?xml version='1.0' encoding='utf-8'?><foo></foo>") + result = document.ComputerConsumptionTioXMLFile_parseXml() + self.assertEqual(result, None) + + def test_parseXml_invalid_xml(self): + document = self.createTioXMLFile() + document.edit(data="<xml></foo>") + result = document.ComputerConsumptionTioXMLFile_parseXml() + self.assertEqual(result, None) + + def test_parseXml_valid_xml_one_movement(self): + document = self.createTioXMLFile() + consumption_xml = """<?xml version='1.0' encoding='utf-8'?> +<journal> +<transaction type="Sale Packing List"> +<title>Resource consumptionsé</title> +<start_date>Sun, 06 Nov 1994 08:49:37 GMT</start_date> +<stop_date>Sun, 07 Nov 1994 08:49:37 GMT</stop_date> +<reference>fooé</reference> +<currency></currency> +<payment_mode></payment_mode> +<category></category> +<arrow type="Administration"> +<source></source> +<destination></destination> +</arrow> +<movement> +<resource>CPU Consumptioné</resource> +<title>Title Sale Packing List Line 1</title> +<reference>slappart0é</reference> +<quantity>42.42</quantity> +<price>0.00</price> +<VAT>None</VAT> +<category>caté</category> +</movement> +</transaction> +</journal>""" + document.edit(data=consumption_xml) + result = document.ComputerConsumptionTioXMLFile_parseXml() + self.assertEqual(result, { + 'title': 'Resource consumptionsé', + 'movement': [{ + 'resource': 'CPU Consumptioné', + 'reference': 'slappart0é', + 'quantity': 42.42, + 'category': "caté", + 'title': "Title Sale Packing List Line 1", + }], + }) + + def test_parseXml_valid_xml_two_movements(self): + document = self.createTioXMLFile() + consumption_xml = """<?xml version='1.0' encoding='utf-8'?> +<journal> +<transaction type="Sale Packing List"> +<title>Resource consumptionsé</title> +<start_date>Sun, 06 Nov 1994 08:49:37 GMT</start_date> +<stop_date>Sun, 07 Nov 1994 08:49:37 GMT</stop_date> +<reference>fooé</reference> +<currency></currency> +<payment_mode></payment_mode> +<category></category> +<arrow type="Administration"> +<source></source> +<destination></destination> +</arrow> +<movement> +<resource>CPU Consumptioné</resource> +<title>Title Sale Packing List Line 1</title> +<reference>slappart0é</reference> +<quantity>42.42</quantity> +<price>0.00</price> +<VAT>None</VAT> +<category>caté</category> +</movement> +<movement> +<resource>CPU Consumptioné</resource> +<title>Title Sale Packing List Line 1</title> +<reference>slappart0é</reference> +<quantity>42.42</quantity> +<price>0.00</price> +<VAT>None</VAT> +<category>caté</category> +</movement> +</transaction> +</journal>""" + document.edit(data=consumption_xml) + result = document.ComputerConsumptionTioXMLFile_parseXml() + self.assertEqual(result, { + 'title': 'Resource consumptionsé', + 'movement': [{ + 'resource': 'CPU Consumptioné', + 'reference': 'slappart0é', + 'quantity': 42.42, + 'category': "caté", + 'title': "Title Sale Packing List Line 1", + },{ + 'resource': 'CPU Consumptioné', + 'reference': 'slappart0é', + 'quantity': 42.42, + 'category': "caté", + 'title': "Title Sale Packing List Line 1", + }], + }) + +class TestSlapOSComputerConsumptionTioXMLFile_solveInvoicingGeneration( + testSlapOSMixin): + + def createTioXMLFile(self): + document = self.portal.consumption_document_module.newContent( + title=self.generateNewId(), + reference="TESTTIOCONS-%s" % self.generateNewId(), + ) + document.submit() + return document + + def createAllocatedComputer(self): + # Create person + password = self.generateNewId() + reference = 'test_%s' % self.generateNewId() + person = self.portal.person_module.newContent(portal_type='Person', + title=reference, + reference=reference, password=password) + person.newContent(portal_type='Assignment', role='member').open() + + transaction.commit() + person.recursiveImmediateReindexObject() + self.person = person + self.person_reference = person.getReference() + + new_id = self.generateNewId() + + # Prepare computer + self.computer = self.portal.computer_module.template_computer\ + .Base_createCloneDocument(batch_mode=1) + self.computer.edit( + title="Computer %s" % new_id, + reference="TESTCOMP-%s" % new_id + ) + + self.computer.validate() + + self.tic() + + self._makeComplexComputer() + self.tic() + + self.start_requested_software_instance.getSpecialiseValue().edit( + destination_section_value=person + ) + + self.stop_requested_software_instance.getSpecialiseValue().edit( + destination_section_value=person + ) + + return self.computer + + def test_solveInvoicingGeneration_REQUEST_disallowed(self): + document = self.createTioXMLFile() + self.assertRaises( + Unauthorized, + document.ComputerConsumptionTioXMLFile_solveInvoicingGeneration, + REQUEST={}) + + @simulate('ComputerConsumptionTioXMLFile_parseXml', + '*args, **kwargs', + 'return None') + def test_solveInvoicingGeneration_no_data(self): + document = self.createTioXMLFile() + self.assertEqual(document.getValidationState(), "submitted") + result = document.ComputerConsumptionTioXMLFile_solveInvoicingGeneration() + self.assertEqual(document.getValidationState(), "draft") + self.assertEqual("Not usable TioXML data", + document.workflow_history['document_publication_workflow'][-1]['comment']) + self.assertEqual(result, []) + + tio_dict = { + 'title': 'Resource consumptionsé', + 'movement': [{ + 'title': 'fooà ', + 'resource': 'service_module/slapos_netdrive_consumption', + 'reference': 'partition1', + 'quantity': 42.42, + 'category': "caté", + }], + } + @simulate('ComputerConsumptionTioXMLFile_parseXml', + '*args, **kwargs', + "return %s" % tio_dict) + def test_solveInvoicingGeneration_valid_xml_one_movement(self): + document = self.createTioXMLFile() + computer = self.createAllocatedComputer() + document.edit( + contributor_value=computer, + ) + self.tic() + self.assertEqual(document.getValidationState(), "submitted") + result = document.ComputerConsumptionTioXMLFile_solveInvoicingGeneration() + self.assertEqual(document.getValidationState(), "shared") + self.assertEqual("Created packing list: %s" % result, + document.workflow_history['document_publication_workflow'][-1]['comment']) + self.assertEqual(len(result), 1) + delivery = self.portal.restrictedTraverse(result[0]) + + self.assertEqual(delivery.getPortalType(), "Sale Packing List") + self.assertEqual(delivery.getDestination(), self.person.getRelativeUrl()) + self.assertEqual(delivery.getDestinationDecision(), + self.person.getRelativeUrl()) + self.assertEqual(delivery.getStartDate(), + document.getCreationDate()) + self.assertEqual(delivery.getTitle(), + "%s Consumption Usage" % \ + self.start_requested_software_instance.getReference()) + self.assertEqual(delivery.getSimulationState(), "delivered") + self.assertEqual(delivery.getCausalityState(), "building") + self.assertEqual(delivery.getSpecialise(), + "sale_trade_condition_module/slapos_consumption_trade_condition") + + self.assertEqual( + len(delivery.contentValues(portal_type="Sale Packing List Line")), 1) + line = delivery.contentValues(portal_type="Sale Packing List Line")[0] + + self.assertEqual(line.getTitle(), "fooà ") + self.assertEqual(line.getQuantity(), 42.42) + self.assertEqual(line.getAggregateList(), [ + self.computer.partition1.getRelativeUrl(), + self.start_requested_software_instance.getRelativeUrl(), + self.start_requested_software_instance.getSpecialise() + ]) + self.assertEqual(line.getResource(), + "service_module/slapos_netdrive_consumption") + self.assertEqual(line.getQuantityUnit(), + "unit/piece") + + tio_dict = { + 'title': 'Resource consumptionsé', + 'movement': [{ + 'title': 'fooà ', + 'resource': 'service_module/slapos_netdrive_consumption', + 'reference': 'partition1', + 'quantity': 42.42, + 'category': "caté", + },{ + 'title': 'foob', + 'resource': 'service_module/slapos_netdrive_consumption', + 'reference': 'partition1', + 'quantity': 24.24, + 'category': "caté", + }], + } + @simulate('ComputerConsumptionTioXMLFile_parseXml', + '*args, **kwargs', + "return %s" % tio_dict) + def test_solveInvoicingGeneration_valid_xml_two_movement(self): + document = self.createTioXMLFile() + computer = self.createAllocatedComputer() + document.edit( + contributor_value=computer, + ) + self.tic() + self.assertEqual(document.getValidationState(), "submitted") + result = document.ComputerConsumptionTioXMLFile_solveInvoicingGeneration() + self.assertEqual(document.getValidationState(), "shared") + self.assertEqual("Created packing list: %s" % result, + document.workflow_history['document_publication_workflow'][-1]['comment']) + self.assertEqual(len(result), 1) + delivery = self.portal.restrictedTraverse(result[0]) + + self.assertEqual(delivery.getPortalType(), "Sale Packing List") + self.assertEqual(delivery.getDestination(), self.person.getRelativeUrl()) + self.assertEqual(delivery.getDestinationDecision(), + self.person.getRelativeUrl()) + self.assertEqual(delivery.getStartDate(), + document.getCreationDate()) + self.assertEqual(delivery.getTitle(), + "%s Consumption Usage" % \ + self.start_requested_software_instance.getReference()) + self.assertEqual(delivery.getSimulationState(), "delivered") + self.assertEqual(delivery.getCausalityState(), "building") + self.assertEqual(delivery.getSpecialise(), + "sale_trade_condition_module/slapos_consumption_trade_condition") + + self.assertEqual( + len(delivery.contentValues(portal_type="Sale Packing List Line")), 2) + + line = delivery.contentValues(portal_type="Sale Packing List Line")[0] + self.assertEqual(line.getTitle(), "fooà ") + self.assertEqual(line.getQuantity(), 42.42) + self.assertEqual(line.getAggregateList(), [ + self.computer.partition1.getRelativeUrl(), + self.start_requested_software_instance.getRelativeUrl(), + self.start_requested_software_instance.getSpecialise() + ]) + self.assertEqual(line.getResource(), + "service_module/slapos_netdrive_consumption") + self.assertEqual(line.getQuantityUnit(), + "unit/piece") + + line = delivery.contentValues(portal_type="Sale Packing List Line")[1] + self.assertEqual(line.getTitle(), "foob") + self.assertEqual(line.getQuantity(), 24.24) + self.assertEqual(line.getAggregateList(), [ + self.computer.partition1.getRelativeUrl(), + self.start_requested_software_instance.getRelativeUrl(), + self.start_requested_software_instance.getSpecialise() + ]) + self.assertEqual(line.getResource(), + "service_module/slapos_netdrive_consumption") + self.assertEqual(line.getQuantityUnit(), + "unit/piece") + + tio_dict = { + 'title': 'Resource consumptionsé', + 'movement': [{ + 'title': 'fooà ', + 'resource': 'service_module/slapos_netdrive_consumption', + 'reference': 'partition1', + 'quantity': 42.42, + 'category': "caté", + },{ + 'title': 'foob', + 'resource': 'service_module/slapos_netdrive_consumption', + 'reference': 'partition2', + 'quantity': 24.24, + 'category': "caté", + }], + } + @simulate('ComputerConsumptionTioXMLFile_parseXml', + '*args, **kwargs', + "return %s" % tio_dict) + def test_solveInvoicingGeneration_valid_xml_two_partitions(self): + document = self.createTioXMLFile() + computer = self.createAllocatedComputer() + document.edit( + contributor_value=computer, + ) + self.tic() + self.assertEqual(document.getValidationState(), "submitted") + result = document.ComputerConsumptionTioXMLFile_solveInvoicingGeneration() + self.assertEqual(document.getValidationState(), "shared") + self.assertEqual("Created packing list: %s" % result, + document.workflow_history['document_publication_workflow'][-1]['comment']) + self.assertEqual(len(result), 2) + + # Delivery 1 + delivery = self.portal.restrictedTraverse(result[0]) + + self.assertEqual(delivery.getPortalType(), "Sale Packing List") + self.assertEqual(delivery.getDestination(), self.person.getRelativeUrl()) + self.assertEqual(delivery.getDestinationDecision(), + self.person.getRelativeUrl()) + self.assertEqual(delivery.getStartDate(), + document.getCreationDate()) + self.assertEqual(delivery.getTitle(), + "%s Consumption Usage" % \ + self.start_requested_software_instance.getReference()) + self.assertEqual(delivery.getSimulationState(), "delivered") + self.assertEqual(delivery.getCausalityState(), "building") + self.assertEqual(delivery.getSpecialise(), + "sale_trade_condition_module/slapos_consumption_trade_condition") + + self.assertEqual( + len(delivery.contentValues(portal_type="Sale Packing List Line")), 1) + + line = delivery.contentValues(portal_type="Sale Packing List Line")[0] + self.assertEqual(line.getTitle(), "fooà ") + self.assertEqual(line.getQuantity(), 42.42) + self.assertEqual(line.getAggregateList(), [ + self.computer.partition1.getRelativeUrl(), + self.start_requested_software_instance.getRelativeUrl(), + self.start_requested_software_instance.getSpecialise() + ]) + self.assertEqual(line.getResource(), + "service_module/slapos_netdrive_consumption") + self.assertEqual(line.getQuantityUnit(), + "unit/piece") + + # Delivery 2 + delivery = self.portal.restrictedTraverse(result[1]) + + self.assertEqual(delivery.getPortalType(), "Sale Packing List") + self.assertEqual(delivery.getDestination(), self.person.getRelativeUrl()) + self.assertEqual(delivery.getDestinationDecision(), + self.person.getRelativeUrl()) + self.assertEqual(delivery.getStartDate(), + document.getCreationDate()) + self.assertEqual(delivery.getTitle(), + "%s Consumption Usage" % \ + self.stop_requested_software_instance.getReference()) + self.assertEqual(delivery.getSimulationState(), "delivered") + self.assertEqual(delivery.getCausalityState(), "building") + self.assertEqual(delivery.getSpecialise(), + "sale_trade_condition_module/slapos_consumption_trade_condition") + + self.assertEqual( + len(delivery.contentValues(portal_type="Sale Packing List Line")), 1) + + line = delivery.contentValues(portal_type="Sale Packing List Line")[0] + self.assertEqual(line.getTitle(), "foob") + self.assertEqual(line.getQuantity(), 24.24) + self.assertEqual(line.getAggregateList(), [ + self.computer.partition2.getRelativeUrl(), + self.stop_requested_software_instance.getRelativeUrl(), + self.stop_requested_software_instance.getSpecialise() + ]) + self.assertEqual(line.getResource(), + "service_module/slapos_netdrive_consumption") + self.assertEqual(line.getQuantityUnit(), + "unit/piece") diff --git a/master/bt5/slapos_accounting/bt/dependency_list b/master/bt5/slapos_accounting/bt/dependency_list index ab634be1d50f64283d929e1b9f126ec9cf793868..234811f7486a672fc2a88bcfc6ed26ccb12e4ff9 100644 --- a/master/bt5/slapos_accounting/bt/dependency_list +++ b/master/bt5/slapos_accounting/bt/dependency_list @@ -4,4 +4,5 @@ erp5_accounting_l10n_fr erp5_open_trade erp5_simplified_invoicing erp5_tiosafe_core -slapos_cloud \ No newline at end of file +slapos_cloud +erp5_dms \ No newline at end of file diff --git a/master/bt5/slapos_accounting/bt/revision b/master/bt5/slapos_accounting/bt/revision index b8e817d4f8350da183e38145325940a42494db8a..ae4d10b425edf2234036e6dd7b07f9bd53fc25e3 100644 --- a/master/bt5/slapos_accounting/bt/revision +++ b/master/bt5/slapos_accounting/bt/revision @@ -1 +1 @@ -255 \ No newline at end of file +256 \ No newline at end of file diff --git a/master/bt5/slapos_accounting/bt/template_action_path_list b/master/bt5/slapos_accounting/bt/template_action_path_list index 7b7b50d778fbb24a7f9b4eaddde514afc6d47302..920592a8a5bd9f21110546d27ef413f73a0cd037 100644 --- a/master/bt5/slapos_accounting/bt/template_action_path_list +++ b/master/bt5/slapos_accounting/bt/template_action_path_list @@ -1,3 +1,6 @@ +Computer Consumption TioXML File | download +Computer Consumption TioXML File | view +Consumption Document Module | view Hosting Subscription | periodicity SlapOS Accounting Quantity Updating Order Builder | view SlapOS Accounting Quantity Updating Order Builder | view_predicate_group diff --git a/master/bt5/slapos_accounting/bt/template_extension_id_list b/master/bt5/slapos_accounting/bt/template_extension_id_list new file mode 100644 index 0000000000000000000000000000000000000000..024ecaa6e9926bc7a131adb975d2f36191f66c38 --- /dev/null +++ b/master/bt5/slapos_accounting/bt/template_extension_id_list @@ -0,0 +1 @@ +SlapOSAccounting \ No newline at end of file diff --git a/master/bt5/slapos_accounting/bt/template_keep_path_list b/master/bt5/slapos_accounting/bt/template_keep_path_list index faacbd74daad1d12eae35e46602e68aa74748580..bd4aba3bc13685bf09db3a652aae3de84b052c7c 100644 --- a/master/bt5/slapos_accounting/bt/template_keep_path_list +++ b/master/bt5/slapos_accounting/bt/template_keep_path_list @@ -5,4 +5,5 @@ sale_packing_list_module/slapos_accounting_instance_delivery_line_template/** service_module/slapos_instance_cleanup service_module/slapos_instance_setup service_module/slapos_instance_update -service_module/slapos_instance_subscription \ No newline at end of file +service_module/slapos_instance_subscription +service_module/slapos_netdrive_consumption \ No newline at end of file diff --git a/master/bt5/slapos_accounting/bt/template_keep_workflow_path_list b/master/bt5/slapos_accounting/bt/template_keep_workflow_path_list index 2658d3177c5b0bae12f6011a24180f0c64a81ad3..5d804fd5d18c8e17b2a1426fb07e9e2b30603ff1 100644 --- a/master/bt5/slapos_accounting/bt/template_keep_workflow_path_list +++ b/master/bt5/slapos_accounting/bt/template_keep_workflow_path_list @@ -3,6 +3,7 @@ service_module/slapos_instance_subscription service_module/slapos_instance_cleanup service_module/slapos_instance_setup service_module/slapos_instance_update +service_module/slapos_netdrive_consumption account_module/bank account_module/capital account_module/coll_vat diff --git a/master/bt5/slapos_accounting/bt/template_module_id_list b/master/bt5/slapos_accounting/bt/template_module_id_list new file mode 100644 index 0000000000000000000000000000000000000000..f349782b98e172e30ada63925a7047ce15fa1c31 --- /dev/null +++ b/master/bt5/slapos_accounting/bt/template_module_id_list @@ -0,0 +1 @@ +consumption_document_module \ No newline at end of file diff --git a/master/bt5/slapos_accounting/bt/template_path_list b/master/bt5/slapos_accounting/bt/template_path_list index 49f7ee99bfa1e3b6a422468c6d2425365b03a06a..0b2ac9e7a94d531e69d0c0200f6f972b98d7fc52 100644 --- a/master/bt5/slapos_accounting/bt/template_path_list +++ b/master/bt5/slapos_accounting/bt/template_path_list @@ -21,6 +21,7 @@ open_sale_order_module/slapos_accounting_open_sale_order_line_template/slapos_ac open_sale_order_module/slapos_accounting_open_sale_order_template organisation_module/slapos organisation_module/slapos/bank_account +portal_alarms/slapos_accounting_generate_packing_list_from_tioxml portal_alarms/slapos_deliver_started_aggregated_sale_packing_list portal_alarms/slapos_instance_invoicing portal_alarms/slapos_manage_building_calculating_delivery @@ -73,4 +74,5 @@ service_module/slapos_instance_setup service_module/slapos_instance_subscription service_module/slapos_instance_subscription/default_ssl service_module/slapos_instance_update +service_module/slapos_netdrive_consumption service_module/slapos_tax \ No newline at end of file diff --git a/master/bt5/slapos_accounting/bt/template_portal_type_allowed_content_type_list b/master/bt5/slapos_accounting/bt/template_portal_type_allowed_content_type_list index bb53969c8e6747f85d3fea70eab744e7060fa690..b460e5a18cdbd5b1373b70a632718a2fbbf08db2 100644 --- a/master/bt5/slapos_accounting/bt/template_portal_type_allowed_content_type_list +++ b/master/bt5/slapos_accounting/bt/template_portal_type_allowed_content_type_list @@ -1,3 +1,4 @@ +Consumption Document Module | Computer Consumption TioXML File Order Tool | SlapOS Accounting Quantity Updating Order Builder Rule Tool | Subscription Item Root Simulation Rule SlapOS Accounting Quantity Updating Order Builder | Base Variant Movement Group diff --git a/master/bt5/slapos_accounting/bt/template_portal_type_base_category_list b/master/bt5/slapos_accounting/bt/template_portal_type_base_category_list index ec9efc819c87d27c030f352e7c8c5ccfa92f89d9..4b145178324b848fbd69015fc11e35210de50a54 100644 --- a/master/bt5/slapos_accounting/bt/template_portal_type_base_category_list +++ b/master/bt5/slapos_accounting/bt/template_portal_type_base_category_list @@ -1,2 +1,3 @@ +Consumption Document Module | business_application Slave Instance | causality Software Instance | causality \ No newline at end of file diff --git a/master/bt5/slapos_accounting/bt/template_portal_type_hidden_content_type_list b/master/bt5/slapos_accounting/bt/template_portal_type_hidden_content_type_list new file mode 100644 index 0000000000000000000000000000000000000000..e870baa2ef04253d70a8c314062bf4cfe6511d28 --- /dev/null +++ b/master/bt5/slapos_accounting/bt/template_portal_type_hidden_content_type_list @@ -0,0 +1 @@ +Consumption Document Module | Computer Consumption TioXML File \ No newline at end of file diff --git a/master/bt5/slapos_accounting/bt/template_portal_type_id_list b/master/bt5/slapos_accounting/bt/template_portal_type_id_list index c1ee5d3e06f342aa9144c53bbb06d1f76b65c22c..49f6245ddd5609e843c609c3f5cf1c7c5b839773 100644 --- a/master/bt5/slapos_accounting/bt/template_portal_type_id_list +++ b/master/bt5/slapos_accounting/bt/template_portal_type_id_list @@ -1,2 +1,4 @@ +Computer Consumption TioXML File +Consumption Document Module SlapOS Accounting Quantity Updating Order Builder Subscription Item Root Simulation Rule \ No newline at end of file diff --git a/master/bt5/slapos_accounting/bt/template_portal_type_property_sheet_list b/master/bt5/slapos_accounting/bt/template_portal_type_property_sheet_list index 6ab505e418046663e0d503b0684b551e3de1cfed..bbb076a7a31910c6a1cf5fc517b9621747145afb 100644 --- a/master/bt5/slapos_accounting/bt/template_portal_type_property_sheet_list +++ b/master/bt5/slapos_accounting/bt/template_portal_type_property_sheet_list @@ -1,3 +1,4 @@ +Computer Consumption TioXML File | SortIndex Hosting Subscription | SlapOSAccountingHostingSubscriptionConstraint Sale Invoice Transaction | SlapOSAccountingSaleInvoiceTransactionConstraint Sale Packing List Line | SlapOSAccountingSalePackingListLineConstraint diff --git a/master/bt5/slapos_accounting/bt/template_portal_type_workflow_chain_list b/master/bt5/slapos_accounting/bt/template_portal_type_workflow_chain_list index 1c389264daea8ccd46e0280f425c4f2fc649a4ce..f4a108ba71d70f6de0be059da847806e26cb304c 100644 --- a/master/bt5/slapos_accounting/bt/template_portal_type_workflow_chain_list +++ b/master/bt5/slapos_accounting/bt/template_portal_type_workflow_chain_list @@ -1,3 +1,6 @@ +Computer Consumption TioXML File | document_conversion_interaction_workflow +Computer Consumption TioXML File | document_publication_workflow +Computer Consumption TioXML File | edit_workflow Hosting Subscription | slapos_accounting_interaction_workflow Hosting Subscription | slapos_api_invoicing_workflow Sale Invoice Transaction | slapos_accounting_interaction_workflow diff --git a/master/bt5/slapos_accounting/bt/template_skin_id_list b/master/bt5/slapos_accounting/bt/template_skin_id_list index cf1ab2dfcdd812635b75bb8887bdd30f5467be83..eccb775cef1d27bcae1fda9b3126d655ee234082 100644 --- a/master/bt5/slapos_accounting/bt/template_skin_id_list +++ b/master/bt5/slapos_accounting/bt/template_skin_id_list @@ -1,2 +1,3 @@ slapos_accounting +slapos_consumption slapos_simulation \ No newline at end of file diff --git a/master/bt5/slapos_accounting/bt/template_test_id_list b/master/bt5/slapos_accounting/bt/template_test_id_list index a2920098f308e8c97dbf94f37b91fca5f84d3ace..7cca03ff3e780165727cadd0fcb9f2dcf2d8a0c2 100644 --- a/master/bt5/slapos_accounting/bt/template_test_id_list +++ b/master/bt5/slapos_accounting/bt/template_test_id_list @@ -1,4 +1,5 @@ testSlapOSAccountingSkins +testSlapOSConsumptionSkins testSlapOSAccountingAlarm testSlapOSAccountingBuilder testSlapOSAccountingConstraint diff --git a/master/bt5/slapos_erp5/LocalRolesTemplateItem/consumption_document_module.xml b/master/bt5/slapos_erp5/LocalRolesTemplateItem/consumption_document_module.xml new file mode 100644 index 0000000000000000000000000000000000000000..414be9f417834d73156cc84fcb30989283b0a45c --- /dev/null +++ b/master/bt5/slapos_erp5/LocalRolesTemplateItem/consumption_document_module.xml @@ -0,0 +1,14 @@ +<local_roles_item> + <local_roles> + <role id='G-COMPANY'> + <item>Auditor</item> + <item>Author</item> + </role> + <role id='R-COMPUTER'> + <item>Author</item> + </role> + <role id='zope'> + <item>Owner</item> + </role> + </local_roles> +</local_roles_item> \ No newline at end of file diff --git a/master/bt5/slapos_erp5/LocalRolesTemplateItem/service_module/slapos_netdrive_consumption.xml b/master/bt5/slapos_erp5/LocalRolesTemplateItem/service_module/slapos_netdrive_consumption.xml new file mode 100644 index 0000000000000000000000000000000000000000..cf5dcc86647c313d0d77cae692d2546ee874426e --- /dev/null +++ b/master/bt5/slapos_erp5/LocalRolesTemplateItem/service_module/slapos_netdrive_consumption.xml @@ -0,0 +1,13 @@ +<local_roles_item> + <local_roles> + <role id='G-COMPANY'> + <item>Assignor</item> + </role> + <role id='R-MEMBER'> + <item>Auditor</item> + </role> + <role id='zope'> + <item>Owner</item> + </role> + </local_roles> +</local_roles_item> \ No newline at end of file diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Computer%20Consumption%20TioXML%20File.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Computer%20Consumption%20TioXML%20File.xml new file mode 100644 index 0000000000000000000000000000000000000000..ce63301e9b215d4dae0c4c1d82f263765e8339dd --- /dev/null +++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Computer%20Consumption%20TioXML%20File.xml @@ -0,0 +1,7 @@ +<type_roles> + <role id='Assignor'> + <property id='title'>Group company</property> + <multi_property id='category'>group/company</multi_property> + <multi_property id='base_category'>group</multi_property> + </role> +</type_roles> \ No newline at end of file diff --git a/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Consumption%20Document%20Module.xml b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Consumption%20Document%20Module.xml new file mode 100644 index 0000000000000000000000000000000000000000..7f2295de7c12df09b93eb83401e2e529e1de0716 --- /dev/null +++ b/master/bt5/slapos_erp5/PortalTypeRolesTemplateItem/Consumption%20Document%20Module.xml @@ -0,0 +1,11 @@ +<type_roles> + <role id='Author'> + <property id='title'>Computer reports consumption</property> + <multi_property id='category'>role/computer</multi_property> + </role> + <role id='Author; Auditor'> + <property id='title'>Group company</property> + <multi_property id='category'>group/company</multi_property> + <multi_property id='base_category'>group</multi_property> + </role> +</type_roles> \ No newline at end of file diff --git a/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5GroupRoleSecurity.py b/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5GroupRoleSecurity.py index a2bcaa0899c4923f2a90b39fe5ec531791c72c31..dab9e9a3f17099de45bc2c9188251afed340f4f5 100644 --- a/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5GroupRoleSecurity.py +++ b/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5GroupRoleSecurity.py @@ -2001,3 +2001,23 @@ class TestOneTimeRestrictedAccessToken(TestSlapOSGroupRoleSecurityMixin): ['G-COMPANY', self.user_id], False) self.assertRoles(product, 'G-COMPANY', ['Assignor']) self.assertRoles(product, self.user_id, ['Owner']) + +class TestConsumptionDocumentModule(TestSlapOSGroupRoleSecurityMixin): + def test(self): + module = self.portal.consumption_document_module + self.assertSecurityGroup(module, + ['R-COMPUTER', 'zope', 'G-COMPANY'], False) + self.assertRoles(module, 'R-COMPUTER', ['Author']) + self.assertRoles(module, 'G-COMPANY', ['Author', 'Auditor']) + self.assertRoles(module, 'zope', ['Owner']) + +class TestComputerConsumptionTioXMLFile(TestSlapOSGroupRoleSecurityMixin): + def test_GroupCompany(self): + text = self.portal.consumption_document_module.newContent( + portal_type='Computer Consumption TioXML File') + + self.assertSecurityGroup(text, + ['G-COMPANY', self.user_id], + False) + self.assertRoles(text, 'G-COMPANY', ['Assignor']) + self.assertRoles(text, self.user_id, ['Owner']) diff --git a/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5SkinSelection.py b/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5SkinSelection.py index 46faefe0e8ae4ff67611baf2f11e1c3eab9b81da..3d8054744fc18778435893e4c096eb47b41261ca 100644 --- a/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5SkinSelection.py +++ b/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5SkinSelection.py @@ -117,6 +117,7 @@ slapos_administration slapos_cache slapos_cloud slapos_cloud_promise +slapos_consumption slapos_core slapos_crm slapos_hypermedia @@ -221,6 +222,7 @@ slapos_administration slapos_cache slapos_cloud slapos_cloud_promise +slapos_consumption slapos_core slapos_crm slapos_hypermedia @@ -321,6 +323,7 @@ slapos_administration slapos_cache slapos_cloud slapos_cloud_promise +slapos_consumption slapos_core slapos_crm slapos_hypermedia @@ -422,6 +425,7 @@ slapos_administration slapos_cache slapos_cloud slapos_cloud_promise +slapos_consumption slapos_core slapos_crm slapos_hypermedia @@ -520,6 +524,7 @@ slapos_administration slapos_cache slapos_cloud slapos_cloud_promise +slapos_consumption slapos_core slapos_crm slapos_hypermedia @@ -619,6 +624,7 @@ slapos_administration slapos_cache slapos_cloud slapos_cloud_promise +slapos_consumption slapos_core slapos_crm slapos_hypermedia @@ -717,6 +723,7 @@ slapos_administration slapos_cache slapos_cloud slapos_cloud_promise +slapos_consumption slapos_core slapos_crm slapos_hypermedia @@ -815,6 +822,7 @@ slapos_administration slapos_cache slapos_cloud slapos_cloud_promise +slapos_consumption slapos_core slapos_crm slapos_hypermedia @@ -913,6 +921,7 @@ slapos_administration slapos_cache slapos_cloud slapos_cloud_promise +slapos_consumption slapos_core slapos_crm slapos_hypermedia @@ -1013,6 +1022,7 @@ slapos_administration slapos_cache slapos_cloud slapos_cloud_promise +slapos_consumption slapos_core slapos_crm slapos_hypermedia diff --git a/master/bt5/slapos_erp5/bt/revision b/master/bt5/slapos_erp5/bt/revision index 89a16a7ddc3b772d81302efaab91722efa3e1429..7b27b2519708501bbe7893dc04388ba380c65f9e 100644 --- a/master/bt5/slapos_erp5/bt/revision +++ b/master/bt5/slapos_erp5/bt/revision @@ -1 +1 @@ -172 \ No newline at end of file +173 \ No newline at end of file diff --git a/master/bt5/slapos_erp5/bt/template_local_role_list b/master/bt5/slapos_erp5/bt/template_local_role_list index 6f130d9bf4fb4f49cddb1cd97f232f07e81537a6..c6aa457248b0bab81ca965f124c80c738f297980 100644 --- a/master/bt5/slapos_erp5/bt/template_local_role_list +++ b/master/bt5/slapos_erp5/bt/template_local_role_list @@ -21,6 +21,7 @@ component_module computer_model_module computer_module computer_network_module +consumption_document_module credential_update_module currency_module currency_module/EUR @@ -57,6 +58,7 @@ sale_trade_condition_module service_module service_module/slapos_discount service_module/slapos_instance_subscription +service_module/slapos_netdrive_consumption service_module/slapos_tax software_installation_module software_instance_module diff --git a/master/bt5/slapos_erp5/bt/template_local_roles_list b/master/bt5/slapos_erp5/bt/template_local_roles_list index 6f130d9bf4fb4f49cddb1cd97f232f07e81537a6..51a2845ef2484904909d1215571f4049e3932187 100644 --- a/master/bt5/slapos_erp5/bt/template_local_roles_list +++ b/master/bt5/slapos_erp5/bt/template_local_roles_list @@ -21,6 +21,7 @@ component_module computer_model_module computer_module computer_network_module +consumption_document_module credential_update_module currency_module currency_module/EUR @@ -58,6 +59,7 @@ service_module service_module/slapos_discount service_module/slapos_instance_subscription service_module/slapos_tax +service_module/slapos_netdrive_consumption software_installation_module software_instance_module software_product_module diff --git a/master/bt5/slapos_erp5/bt/template_portal_type_role_list b/master/bt5/slapos_erp5/bt/template_portal_type_role_list index eab0d48fed3c547d9b79a37c26bf2f766b4d8526..ab67ccd5c03a48b38e15f893803f120dce1dbc0b 100644 --- a/master/bt5/slapos_erp5/bt/template_portal_type_role_list +++ b/master/bt5/slapos_erp5/bt/template_portal_type_role_list @@ -16,12 +16,14 @@ Cash Register Component Component Module Computer +Computer Consumption TioXML File Computer Model Computer Model Module Computer Module Computer Network Computer Network Module Computer Partition +Consumption Document Module Contribution Tool Credential Update Module Credit Card diff --git a/master/bt5/slapos_erp5/bt/template_portal_type_roles_list b/master/bt5/slapos_erp5/bt/template_portal_type_roles_list index 141c00ea508f530db9a9e617c8cf5449ea908c1a..ab67ccd5c03a48b38e15f893803f120dce1dbc0b 100644 --- a/master/bt5/slapos_erp5/bt/template_portal_type_roles_list +++ b/master/bt5/slapos_erp5/bt/template_portal_type_roles_list @@ -1,5 +1,4 @@ Access Token Module -One Time Restricted Access Token Account Account Module Accounting Period @@ -17,12 +16,14 @@ Cash Register Component Component Module Computer +Computer Consumption TioXML File Computer Model Computer Model Module Computer Module Computer Network Computer Network Module Computer Partition +Consumption Document Module Contribution Tool Credential Update Module Credit Card @@ -56,6 +57,7 @@ Meeting Module Note Notification Message Notification Message Module +One Time Restricted Access Token Open Sale Order Open Sale Order Module Organisation diff --git a/master/bt5/slapos_slap_tool/TestTemplateItem/testSlapOSSlapTool.py b/master/bt5/slapos_slap_tool/TestTemplateItem/testSlapOSSlapTool.py index 236f31f0b9776061cd76cfc5dd6daaf3d5dfec7b..44d3fcdaca7fec9058f8f06286b95174e54959c0 100644 --- a/master/bt5/slapos_slap_tool/TestTemplateItem/testSlapOSSlapTool.py +++ b/master/bt5/slapos_slap_tool/TestTemplateItem/testSlapOSSlapTool.py @@ -673,6 +673,109 @@ class TestSlapOSSlapToolComputerAccess(TestSlapOSSlapToolMixin): self.assertEqual(expected_xml, got_xml, '\n'.join([q for q in difflib.unified_diff(expected_xml.split('\n'), got_xml.split('\n'))])) + def test_useComputer_wrong_xml(self): + self.login(self.computer_id) + response = self.portal_slap.useComputer( + self.computer_id, "foobar") + self.assertEqual(400, response.status) + self.assertEqual("", response.body) + + def assertReportComputerConsumption(self, args, kwargs): + stored = eval(open(self.computer_use_computer_simulator).read()) + # do the same translation magic as in workflow + self.assertEqual(stored, + [{'recargs': args, 'reckwargs': kwargs, + 'recmethod': 'Computer_reportComputerConsumption'}]) + + def test_useComputer_expected_xml(self): + self.computer_use_computer_simulator = tempfile.mkstemp()[1] + try: + self.login(self.computer_id) + self.computer.Computer_reportComputerConsumption = Simulator( + self.computer_use_computer_simulator, + 'Computer_reportComputerConsumption') + + consumption_xml = """<?xml version='1.0' encoding='utf-8'?> +<journal> +<transaction type="Sale Packing List"> +<title>Resource consumptions</title> +<start_date></start_date> +<stop_date></stop_date> +<reference>testusagé</reference> +<currency></currency> +<payment_mode></payment_mode> +<category></category> +<arrow type="Administration"> +<source></source> +<destination></destination> +</arrow> +<movement> +<resource>CPU Consumption</resource> +<title>Title Sale Packing List Line 1</title> +<reference>slappart0</reference> +<quantity>42.42</quantity> +<price>0.00</price> +<VAT>None</VAT> +<category>None</category> +</movement> +</transaction> +</journal>""" + + response = self.portal_slap.useComputer( + self.computer_id, consumption_xml) + self.assertEqual(200, response.status) + self.assertEqual("OK", response.body) + self.assertReportComputerConsumption( + ("testusagé", consumption_xml,), {}) + finally: + if os.path.exists(self.computer_use_computer_simulator): + os.unlink(self.computer_use_computer_simulator) + + def test_useComputer_empty_reference(self): + self.computer_use_computer_simulator = tempfile.mkstemp()[1] + try: + self.login(self.computer_id) + self.computer.Computer_reportComputerConsumption = Simulator( + self.computer_use_computer_simulator, + 'Computer_reportComputerConsumption') + + consumption_xml = """<?xml version='1.0' encoding='utf-8'?> +<journal> +<transaction type="Sale Packing List"> +<title>Resource consumptions</title> +<start_date></start_date> +<stop_date></stop_date> +<reference></reference> +<currency></currency> +<payment_mode></payment_mode> +<category></category> +<arrow type="Administration"> +<source></source> +<destination></destination> +</arrow> +<movement> +<resource>CPU Consumption</resource> +<title>Title Sale Packing List Line 1</title> +<reference>slappart0</reference> +<quantity>42.42</quantity> +<price>0.00</price> +<VAT>None</VAT> +<category>None</category> +</movement> +</transaction> +</journal>""" + + response = self.portal_slap.useComputer( + self.computer_id, consumption_xml) + self.assertEqual(200, response.status) + self.assertEqual("OK", response.body) + self.assertReportComputerConsumption( + ("", consumption_xml,), {}) + finally: + if os.path.exists(self.computer_use_computer_simulator): + os.unlink(self.computer_use_computer_simulator) + + class TestSlapOSSlapToolInstanceAccess(TestSlapOSSlapToolMixin): def test_getComputerPartitionCertificate(self): self._makeComplexComputer() diff --git a/master/bt5/slapos_slap_tool/bt/dependency_list b/master/bt5/slapos_slap_tool/bt/dependency_list index a777eb8187dcde1aa5edc4736884bba11ba7ee9a..67a01318d9559b7fb7e5506fc262b7fe114fa0c8 100644 --- a/master/bt5/slapos_slap_tool/bt/dependency_list +++ b/master/bt5/slapos_slap_tool/bt/dependency_list @@ -1 +1,2 @@ -slapos_cloud \ No newline at end of file +slapos_cloud +slapos_accounting \ No newline at end of file diff --git a/master/bt5/slapos_slap_tool/bt/revision b/master/bt5/slapos_slap_tool/bt/revision index d99e90eb9675f72290ba32fbf844c1cb45c72718..8580e7b684b14da5d9f84ab4eaf2f5139d508cbe 100644 --- a/master/bt5/slapos_slap_tool/bt/revision +++ b/master/bt5/slapos_slap_tool/bt/revision @@ -1 +1 @@ -29 \ No newline at end of file +30 \ No newline at end of file diff --git a/master/product/Vifib/Tool/SlapTool.py b/master/product/Vifib/Tool/SlapTool.py index 6eba31b1d34af426be61995e3c742f39df6888dd..339a1b8d9a438be2d666af3472cd7851df54003e 100644 --- a/master/product/Vifib/Tool/SlapTool.py +++ b/master/product/Vifib/Tool/SlapTool.py @@ -524,31 +524,28 @@ class SlapTool(BaseTool): security.declareProtected(Permissions.AccessContentsInformation, 'useComputer') def useComputer(self, computer_id, use_string): - """Entry point to reporting usage of a computer.""" - #We retrieve XSD model - try: - computer_consumption_model = \ - pkg_resources.resource_string( - 'slapos.slap', - 'doc/computer_consumption.xsd') - except IOError: - computer_consumption_model = \ - pkg_resources.resource_string( - __name__, - '../../../../slapos/slap/doc/computer_consumption.xsd') + """ + Entry point to reporting usage of a computer. + """ + computer_consumption_model = \ + pkg_resources.resource_string( + 'slapos.slap', + 'doc/computer_consumption.xsd') if self._validateXML(use_string, computer_consumption_model): - vifib_conduit_instance = VifibConduit.VifibConduit() - - #We create the SPL - vifib_conduit_instance.addNode( - object=self, - xml=use_string, - computer_id=computer_id) + computer = self._getComputerDocument(computer_id) + tree = etree.fromstring(use_string) + source_reference = \ + tree.find('transaction').find('reference').text or "" + source_reference = source_reference.encode("UTF-8") + computer.Computer_reportComputerConsumption( + source_reference, + use_string) + return "OK" else: - raise NotImplementedError("XML file sent by the node is not valid !") - - return 'Content properly posted.' + self.REQUEST.response.setStatus(400) + self.REQUEST.response.setBody("") + return self.REQUEST.response @convertToREST def _computerBang(self, computer_id, message): @@ -1237,12 +1234,6 @@ class SlapTool(BaseTool): parent_uid=self._getComputerUidByReference( computer_reference)) - def _getUsageReportServiceDocument(self): - service_document = self.Base_getUsageReportServiceDocument() - if service_document is not None: - return service_document - raise Unauthorized - def _getSoftwareInstallationForComputer(self, url, computer_document): software_installation_list = self.getPortalObject().portal_catalog.unrestrictedSearchResults( portal_type='Software Installation', @@ -1372,100 +1363,6 @@ class SlapTool(BaseTool): software_release_list.append(software_release_response) return software_release_list - def _reportComputerUsage(self, computer, usage): - """Stores usage report of a computer.""" - usage_report_portal_type = 'Usage Report' - usage_report_module = \ - self.getPortalObject().getDefaultModule(usage_report_portal_type) - sale_packing_list_portal_type = 'Sale Packing List' - sale_packing_list_module = \ - self.getPortalObject().getDefaultModule(sale_packing_list_portal_type) - sale_packing_list_line_portal_type = 'Sale Packing List Line' - - software_release_portal_type = 'Software Release' - hosting_subscription_portal_type = 'Hosting Subscription' - software_instance_portal_type = 'Software Instance' - - # We get the whole computer usage in one time - # We unmarshall it, then we create a single packing list, - # each line is a computer partition - unmarshalled_usage = xml_marshaller.xml_marshaller.loads(usage) - - # Creates the Packing List - usage_report_sale_packing_list_document = \ - sale_packing_list_module.newContent( - portal_type = sale_packing_list_portal_type, - ) - usage_report_sale_packing_list_document.confirm() - usage_report_sale_packing_list_document.start() - - # Adds a new SPL line for each Computer Partition - for computer_partition_usage in unmarshalled_usage\ - .computer_partition_usage_list: - #Get good packing list line for a computer_partition - computer_partition_document = self.\ - _getComputerPartitionDocument( - computer.getReference(), - computer_partition_usage.getId() - ) - instance_setup_sale_packing_line = \ - self._getDocument( - portal_type='Sale Packing List Line', - simulation_state='stopped', - aggregate_relative_url=computer_partition_document\ - .getRelativeUrl(), - resource_relative_url=self.portal_preferences\ - .getPreferredInstanceSetupResource() - ) - - # Fetching documents - software_release_document = \ - self.getPortalObject().restrictedTraverse( - instance_setup_sale_packing_line.getAggregateList( - portal_type=software_release_portal_type - )[0] - ) - hosting_subscription_document = \ - self.getPortalObject().restrictedTraverse( - instance_setup_sale_packing_line.getAggregateList( - portal_type=hosting_subscription_portal_type - )[0] - ) - software_instance_document = \ - self.getPortalObject().restrictedTraverse( - instance_setup_sale_packing_line.getAggregateList( - portal_type=software_instance_portal_type - )[0] - ) - # Creates the usage document - usage_report_document = usage_report_module.newContent( - portal_type = usage_report_portal_type, - text_content = computer_partition_usage.usage, - causality_value = computer_partition_document - ) - usage_report_document.validate() - # Creates the line - usage_report_sale_packing_list_document.newContent( - portal_type = sale_packing_list_line_portal_type, - # We assume that "Usage Report" is an existing service document - resource_value = self._getUsageReportServiceDocument(), - aggregate_value_list = [usage_report_document, \ - computer_partition_document, software_release_document, \ - hosting_subscription_document, software_instance_document - ] - ) - - def _reportUsage(self, computer_partition, usage): - """Warning : deprecated method.""" - portal_type = 'Usage Report' - module = self.getPortalObject().getDefaultModule(portal_type) - usage_report = module.newContent( - portal_type=portal_type, - text_content=usage, - causality_value=computer_partition - ) - usage_report.validate() - @convertToREST def _softwareReleaseError(self, url, computer_id, error_log): """