Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
Lu Xu
erp5
Commits
3ccb6d25
Commit
3ccb6d25
authored
Jun 08, 2021
by
Jérome Perrin
Browse files
Options
Browse Files
Download
Plain Diff
Repair Organisation jumps and enable them in ERP5JS
See merge request
nexedi/erp5!1432
parents
80e215df
239cdf33
Changes
44
Hide whitespace changes
Inline
Side-by-side
Showing
44 changed files
with
1241 additions
and
58 deletions
+1241
-58
bt5/erp5_pdm/ActionTemplateItem/portal_types/Organisation/jump_to_internal_supply.xml
...tem/portal_types/Organisation/jump_to_internal_supply.xml
+2
-2
bt5/erp5_pdm/ActionTemplateItem/portal_types/Organisation/jump_to_purchase_supply.xml
...tem/portal_types/Organisation/jump_to_purchase_supply.xml
+2
-2
bt5/erp5_pdm/ActionTemplateItem/portal_types/Organisation/jump_to_sale_supply.xml
...ateItem/portal_types/Organisation/jump_to_sale_supply.xml
+2
-2
bt5/erp5_pdm/SkinTemplateItem/portal_skins/erp5_pdm/Organisation_jumpToRelatedObjectList.py
...al_skins/erp5_pdm/Organisation_jumpToRelatedObjectList.py
+18
-9
bt5/erp5_pdm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_pdm_zuite.xml
...t/PathTemplateItem/portal_tests/renderjs_ui_pdm_zuite.xml
+26
-0
bt5/erp5_pdm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_pdm_zuite/testOrganisationJumpToSupply.xml
...ts/renderjs_ui_pdm_zuite/testOrganisationJumpToSupply.xml
+58
-0
bt5/erp5_pdm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_pdm_zuite/testOrganisationJumpToSupply.zpt
...ts/renderjs_ui_pdm_zuite/testOrganisationJumpToSupply.zpt
+111
-0
bt5/erp5_pdm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_pdm_renderjs_ui_test/PdmZuite_CommonTemplateForRenderjsUi.zpt
...renderjs_ui_test/PdmZuite_CommonTemplateForRenderjsUi.zpt
+11
-8
bt5/erp5_pdm_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSPDM.py
...eItem/portal_components/test.erp5.testFunctionalRJSPDM.py
+32
-0
bt5/erp5_pdm_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSPDM.xml
...Item/portal_components/test.erp5.testFunctionalRJSPDM.xml
+133
-0
bt5/erp5_pdm_renderjs_ui_test/bt/template_path_list
bt5/erp5_pdm_renderjs_ui_test/bt/template_path_list
+2
-0
bt5/erp5_pdm_renderjs_ui_test/bt/template_test_id_list
bt5/erp5_pdm_renderjs_ui_test/bt/template_test_id_list
+2
-1
bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/testOrganisationJumpToSupply.xml
...m/portal_tests/pdm_zuite/testOrganisationJumpToSupply.xml
+58
-0
bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/testOrganisationJumpToSupply.zpt
...m/portal_tests/pdm_zuite/testOrganisationJumpToSupply.zpt
+77
-0
bt5/erp5_pdm_ui_test/SkinTemplateItem/portal_skins/erp5_pdm_ui_test/PdmZuite_deleteData.py
...Item/portal_skins/erp5_pdm_ui_test/PdmZuite_deleteData.py
+7
-0
bt5/erp5_pdm_ui_test/SkinTemplateItem/portal_skins/erp5_pdm_ui_test/PdmZuite_reset.py
...plateItem/portal_skins/erp5_pdm_ui_test/PdmZuite_reset.py
+22
-0
bt5/erp5_trade/ActionTemplateItem/portal_types/Organisation/jump_to_internal_trade_condition.xml
...l_types/Organisation/jump_to_internal_trade_condition.xml
+2
-2
bt5/erp5_trade/ActionTemplateItem/portal_types/Organisation/jump_to_purchase_packing_list.xml
...rtal_types/Organisation/jump_to_purchase_packing_list.xml
+24
-7
bt5/erp5_trade/ActionTemplateItem/portal_types/Organisation/jump_to_purchase_trade_condition.xml
...l_types/Organisation/jump_to_purchase_trade_condition.xml
+2
-2
bt5/erp5_trade/ActionTemplateItem/portal_types/Organisation/jump_to_sale_trade_condition.xml
...ortal_types/Organisation/jump_to_sale_trade_condition.xml
+2
-2
bt5/erp5_trade_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_trade_zuite.xml
...PathTemplateItem/portal_tests/renderjs_ui_trade_zuite.xml
+26
-0
bt5/erp5_trade_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_trade_zuite/testOrganisationJumpToTradeCondition.xml
...s_ui_trade_zuite/testOrganisationJumpToTradeCondition.xml
+58
-0
bt5/erp5_trade_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_trade_zuite/testOrganisationJumpToTradeCondition.zpt
...s_ui_trade_zuite/testOrganisationJumpToTradeCondition.zpt
+137
-0
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/Zuite_CommonTemplateForTradeRenderjsUi.zpt
...nderjs_ui_test/Zuite_CommonTemplateForTradeRenderjsUi.zpt
+3
-3
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/Zuite_createPackingListForTradeRenderjsUi.py
...erjs_ui_test/Zuite_createPackingListForTradeRenderjsUi.py
+0
-0
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/Zuite_createPackingListForTradeRenderjsUi.xml
...rjs_ui_test/Zuite_createPackingListForTradeRenderjsUi.xml
+1
-1
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/Zuite_createSaleOrderForTradeRenderjsUi.py
...nderjs_ui_test/Zuite_createSaleOrderForTradeRenderjsUi.py
+1
-2
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/Zuite_createSaleOrderForTradeRenderjsUi.xml
...derjs_ui_test/Zuite_createSaleOrderForTradeRenderjsUi.xml
+1
-1
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/Zuite_deleteDataForTradeRenderjsUi.py
...de_renderjs_ui_test/Zuite_deleteDataForTradeRenderjsUi.py
+0
-0
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/Zuite_deleteDataForTradeRenderjsUi.xml
...e_renderjs_ui_test/Zuite_deleteDataForTradeRenderjsUi.xml
+1
-1
bt5/erp5_trade_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSTrade.py
...tem/portal_components/test.erp5.testFunctionalRJSTrade.py
+32
-0
bt5/erp5_trade_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSTrade.xml
...em/portal_components/test.erp5.testFunctionalRJSTrade.xml
+133
-0
bt5/erp5_trade_renderjs_ui_test/bt/dependency_list
bt5/erp5_trade_renderjs_ui_test/bt/dependency_list
+1
-1
bt5/erp5_trade_renderjs_ui_test/bt/skip_coding_style_test
bt5/erp5_trade_renderjs_ui_test/bt/skip_coding_style_test
+0
-1
bt5/erp5_trade_renderjs_ui_test/bt/template_path_list
bt5/erp5_trade_renderjs_ui_test/bt/template_path_list
+2
-0
bt5/erp5_trade_renderjs_ui_test/bt/template_test_id_list
bt5/erp5_trade_renderjs_ui_test/bt/template_test_id_list
+2
-1
bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testMultiRelationStringFieldOnASaleOrderLineInsideTheOtherSaleOrderLine.zpt
...tringFieldOnASaleOrderLineInsideTheOtherSaleOrderLine.zpt
+6
-1
bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testOrganisationJumpToTradeCondition.xml
...ests/trade_zuite/testOrganisationJumpToTradeCondition.xml
+58
-0
bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testOrganisationJumpToTradeCondition.zpt
...ests/trade_zuite/testOrganisationJumpToTradeCondition.zpt
+77
-0
bt5/erp5_trade_ui_test/SkinTemplateItem/portal_skins/erp5_trade_ui_test/Zuite_CommonTemplateForTradeZuite.zpt
.../erp5_trade_ui_test/Zuite_CommonTemplateForTradeZuite.zpt
+1
-6
bt5/erp5_trade_ui_test/SkinTemplateItem/portal_skins/erp5_trade_ui_test/Zuite_createOrganisationAndTradeConditionsForTradeZuite.py
...uite_createOrganisationAndTradeConditionsForTradeZuite.py
+40
-0
bt5/erp5_trade_ui_test/SkinTemplateItem/portal_skins/erp5_trade_ui_test/Zuite_createOrganisationAndTradeConditionsForTradeZuite.xml
...ite_createOrganisationAndTradeConditionsForTradeZuite.xml
+62
-0
bt5/erp5_trade_ui_test/SkinTemplateItem/portal_skins/erp5_trade_ui_test/Zuite_createSaleOrderForTradeZuite.py
.../erp5_trade_ui_test/Zuite_createSaleOrderForTradeZuite.py
+1
-1
bt5/erp5_trade_ui_test/SkinTemplateItem/portal_skins/erp5_trade_ui_test/Zuite_deleteDataForTradeZuite.py
...skins/erp5_trade_ui_test/Zuite_deleteDataForTradeZuite.py
+5
-2
No files found.
bt5/erp5_pdm/ActionTemplateItem/portal_types/Organisation/jump_to_internal_supply.xml
View file @
3ccb6d25
...
...
@@ -16,13 +16,13 @@
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
action_type/object_jump
</string>
<string>
action_type/object_j
io_j
ump
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
category
</string>
</key>
<value>
<string>
object_jump
</string>
</value>
<value>
<string>
object_j
io_j
ump
</string>
</value>
</item>
<item>
<key>
<string>
condition
</string>
</key>
...
...
bt5/erp5_pdm/ActionTemplateItem/portal_types/Organisation/jump_to_purchase_supply.xml
View file @
3ccb6d25
...
...
@@ -16,13 +16,13 @@
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
action_type/object_jump
</string>
<string>
action_type/object_j
io_j
ump
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
category
</string>
</key>
<value>
<string>
object_jump
</string>
</value>
<value>
<string>
object_j
io_j
ump
</string>
</value>
</item>
<item>
<key>
<string>
condition
</string>
</key>
...
...
bt5/erp5_pdm/ActionTemplateItem/portal_types/Organisation/jump_to_sale_supply.xml
View file @
3ccb6d25
...
...
@@ -16,13 +16,13 @@
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
action_type/object_jump
</string>
<string>
action_type/object_j
io_j
ump
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
category
</string>
</key>
<value>
<string>
object_jump
</string>
</value>
<value>
<string>
object_j
io_j
ump
</string>
</value>
</item>
<item>
<key>
<string>
condition
</string>
</key>
...
...
bt5/erp5_pdm/SkinTemplateItem/portal_skins/erp5_pdm/Organisation_jumpToRelatedObjectList.py
View file @
3ccb6d25
...
...
@@ -2,14 +2,12 @@
Jump from Organisation to its related objects (but only if used as
source* or destination* categories) of the same portal type and
displayed using the module view
XXX: move this code to erp5_core if needed elsewhere?
"""
portal
=
context
.
getPortalObject
()
# XXX: Seems there is no other better way to get the Arrow
# destination/section categories...
base_category_list
=
[]
base_category_
uid_
list
=
[]
for
arrow_property
in
portal
.
portal_property_sheets
.
Arrow
.
contentValues
():
if
arrow_property
.
getPortalType
()
!=
'Category Property'
:
continue
...
...
@@ -17,12 +15,15 @@ for arrow_property in portal.portal_property_sheets.Arrow.contentValues():
arrow_property_title
=
arrow_property
.
getTitle
()
if
(
arrow_property_title
.
startswith
(
'source'
)
or
arrow_property_title
.
startswith
(
'destination'
)):
base_category_
list
.
append
(
arrow_property_title
)
base_category_
uid_list
.
append
(
portal
.
portal_categories
[
arrow_property_title
].
getUid
()
)
related_object_list
=
context
.
getRelatedValueList
(
checked_permission
=
'View'
,
base_category_list
=
base_category_list
,
portal_type
=
portal_type
)
related_object_list
=
context
.
getPortalObject
().
portal_catalog
(
portal_type
=
portal_type
,
**
{
'category.category_uid'
:
context
.
getUid
(),
'category.base_category_uid'
:
base_category_uid_list
,
}
)
if
not
related_object_list
:
return
context
.
Base_redirect
(
form_id
,
keep_items
=
dict
(
...
...
@@ -45,7 +46,15 @@ elif len(related_object_list) == 1:
"that_title"
:
context
.
getTitleOrId
()}))))
else
:
message
=
portal
.
Base_translateString
(
# first, try to get a full translated message with portal types
"Documents related to %s."
%
context
.
getPortalType
(),
# if not found, fallback to generic translation
default
=
portal
.
Base_translateString
(
'Documents related to ${that_portal_type} : ${that_title}.'
,
mapping
=
{
"that_portal_type"
:
context
.
getTranslatedPortalType
(),
"that_title"
:
context
.
getTitleOrId
()
}),)
# XXX: Use POST rather than GET because of GET URL length limitation?
return
portal
.
getDefaultModule
(
portal_type
).
Base_redirect
(
keep_items
=
{
'reset'
:
1
,
'uid'
:
[
obj
.
getUid
()
for
obj
in
related_object_list
]})
'portal_status_message'
:
message
,
'uid'
:
[
obj
.
uid
for
obj
in
related_object_list
]})
bt5/erp5_pdm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_pdm_zuite.xml
0 → 100644
View file @
3ccb6d25
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Zuite"
module=
"Products.Zelenium.zuite"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
renderjs_ui_pdm_zuite
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Global zuite for PDM
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_pdm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_pdm_zuite/testOrganisationJumpToSupply.xml
0 → 100644
View file @
3ccb6d25
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</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>
<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>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
testOrganisationJumpToSupply
</string>
</value>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_pdm_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_pdm_zuite/testOrganisationJumpToSupply.zpt
0 → 100644
View file @
3ccb6d25
<html>
<head><title>
Test jump to supplies
</title></head>
<body>
<table
cellpadding=
"1"
cellspacing=
"1"
border=
"1"
>
<thead>
<tr><td
rowspan=
"1"
colspan=
"4"
>
Test jump to supplies
</td></tr>
</thead>
<tbody
tal:define=
"init_method string:PdmZuite_createDelivery?state=draft; open_stock_browser python:False"
>
<!-- Setup {{{ -->
<tal:block
metal:use-macro=
"here/PdmZuite_CommonTemplateForRenderjsUi/macros/init"
/>
<tal:block
tal:repeat=
"supply_portal_type python:('Purchase Supply', 'Sale Supply', 'Internal Supply', )"
>
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/renderjs_runner/#/organisation_module/erp5_pdm_ui_test_source_node
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': 'Views'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_header_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': supply_portal_type}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_page_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_listbox_loaded"
/>
<tal:block
tal:define=
"notification_configuration python: {'class': 'success',
'text': 'Documents related to Organisation : erp5_pdm_ui_test_source_node_title.'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification"
/>
</tal:block>
<tal:block
tal:define=
"pagination_configuration python: {'header': '(2)', 'footer': '2 Records'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/check_listbox_pagination_text"
/>
</tal:block>
<tr>
<td>
assertTextPresent
</td>
<td>
erp5_pdm_ui_test_supply_1
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
erp5_pdm_ui_test_supply_2
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/Zuite_waitForActivities
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Done.
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/renderjs_runner/#/organisation_module/erp5_pdm_ui_test_destination_node
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': 'Views'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_header_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': supply_portal_type}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_page_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
tal:define=
"notification_configuration python: {'class': 'success',
'text': supply_portal_type + ' related to Organisation : erp5_pdm_ui_test_destination_node_title.'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification"
/>
</tal:block>
<tr>
<td>
waitForTextPresent
</td>
<td>
erp5_pdm_ui_test_supply_1
</td>
<td></td>
</tr>
<tr>
<td>
assertTextNotPresent
</td>
<td>
erp5_pdm_ui_test_supply_2
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/Zuite_waitForActivities
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Done.
</td>
<td></td>
</tr>
</tal:block>
</tbody></table>
</body>
</html>
\ No newline at end of file
bt5/erp5_pdm_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_pdm_renderjs_ui_test/PdmZuite_CommonTemplateForRenderjsUi.zpt
View file @
3ccb6d25
...
...
@@ -2,7 +2,8 @@
xmlns:metal="http://xml.zope.org/namespaces/metal">
<tal:block metal:define-macro="init"
tal:define="resource_relative_url resource_relative_url | string:product_module/erp5_pdm_ui_test_product;
set_node_category_preference set_node_category_preference | python: False">
set_node_category_preference set_node_category_preference | python: False;
open_stock_browser open_stock_browser | python:True;">
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />
<tr>
<td>open</td>
...
...
@@ -58,13 +59,15 @@
<td>Done.</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/web_site_module/renderjs_runner/#/<tal:block tal:replace="resource_relative_url"></tal:block></td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded" />
<tal:block metal:use-macro="here/PdmZuite_CommonTemplateForRenderjsUi/macros/go_to_stock_view" />
<tal:block tal:condition="open_stock_browser">
<tr>
<td>open</td>
<td>${base_url}/web_site_module/renderjs_runner/#/<tal:block tal:replace="resource_relative_url"></tal:block></td>
<td></td>
</tr>
<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded" />
<tal:block metal:use-macro="here/PdmZuite_CommonTemplateForRenderjsUi/macros/go_to_stock_view" />
</tal:block>
</tal:block>
<tal:block metal:define-macro="go_to_stock_view">
...
...
bt5/erp5_pdm_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSPDM.py
0 → 100644
View file @
3ccb6d25
##############################################################################
#
# Copyright (c) 2021 Nexedi SA and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability 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
# garantees 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from
Products.ERP5Type.tests
import
ERP5TypeFunctionalTestCase
class
TestRenderJSUIPDMZuite
(
ERP5TypeFunctionalTestCase
.
ERP5TypeFunctionalTestCase
):
run_only
=
"renderjs_ui_pdm_zuite"
bt5/erp5_pdm_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSPDM.xml
0 → 100644
View file @
3ccb6d25
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Test Component"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_recorded_property_dict
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
testFunctionalRJSPDM
</string>
</value>
</item>
<item>
<key>
<string>
default_source_reference
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
test.erp5.testFunctionalRJSPDM
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Test Component
</string>
</value>
</item>
<item>
<key>
<string>
sid
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
text_content_error_message
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
text_content_warning_message
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
<value>
<string>
erp5
</string>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</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/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
component_validation_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.Workflow"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
validate
</string>
</value>
</item>
<item>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
validated
</string>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_pdm_renderjs_ui_test/bt/template_path_list
View file @
3ccb6d25
portal_tests/renderjs_ui_pdm_zuite
portal_tests/renderjs_ui_pdm_zuite/**
portal_tests/renderjs_ui_stock_browser_zuite
portal_tests/renderjs_ui_stock_browser_zuite/**
\ No newline at end of file
bt5/erp5_pdm_renderjs_ui_test/bt/template_test_id_list
View file @
3ccb6d25
test.erp5.testFunctionalRJSStockBrowser
\ No newline at end of file
test.erp5.testFunctionalRJSStockBrowser
test.erp5.testFunctionalRJSPDM
\ No newline at end of file
bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/testOrganisationJumpToSupply.xml
0 → 100644
View file @
3ccb6d25
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</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>
<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>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
testOrganisationJumpToSupply
</string>
</value>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_pdm_ui_test/PathTemplateItem/portal_tests/pdm_zuite/testOrganisationJumpToSupply.zpt
0 → 100644
View file @
3ccb6d25
<html>
<head><title>
Test jump to supplies
</title></head>
<body>
<table
cellpadding=
"1"
cellspacing=
"1"
border=
"1"
>
<thead>
<tr><td
rowspan=
"1"
colspan=
"4"
>
Test jump to supplies
</td></tr>
</thead>
<tbody
tal:define=
"init_method string:PdmZuite_createDelivery?state=draft"
>
<tal:block
metal:use-macro=
"here/PdmZuite_CommonTemplate/macros/init"
/>
<tal:block
tal:repeat=
"supply_portal_type python:('Purchase Supply', 'Sale Supply', 'Internal Supply', )"
>
<tr>
<td>
open
</td>
<td>
${base_url}/organisation_module/erp5_pdm_ui_test_source_node
</td>
<td></td>
</tr>
<tr>
<td>
selectAndWait
</td>
<td>
select_jump
</td>
<td
tal:content=
"supply_portal_type"
></td>
</tr>
<tr>
<td>
assertPortalStatusMessage
</td>
<td>
Documents related to Organisation : erp5_pdm_ui_test_source_node_title.
</td>
<td></td>
</tr>
<tr>
<td>
assertText
</td>
<td>
//span[@class="listbox-current-page-total-number"]
</td>
<td>
2 records
</td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
erp5_pdm_ui_test_supply_1
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
erp5_pdm_ui_test_supply_2
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/organisation_module/erp5_pdm_ui_test_destination_node
</td>
<td></td>
</tr>
<tr>
<td>
selectAndWait
</td>
<td>
select_jump
</td>
<td
tal:content=
"supply_portal_type"
></td>
</tr>
<tr>
<td>
assertPortalStatusMessage
</td>
<td><tal:block
tal:replace=
"supply_portal_type"
/>
related to Organisation : erp5_pdm_ui_test_destination_node_title.
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
erp5_pdm_ui_test_supply_1
</td>
<td></td>
</tr>
<tr>
<td>
assertTextNotPresent
</td>
<td>
erp5_pdm_ui_test_supply_2
</td>
<td></td>
</tr>
</tal:block>
</tbody></table>
</body>
</html>
\ No newline at end of file
bt5/erp5_pdm_ui_test/SkinTemplateItem/portal_skins/erp5_pdm_ui_test/PdmZuite_deleteData.py
View file @
3ccb6d25
...
...
@@ -46,4 +46,11 @@ for delivery_type in ("Internal", "Purchase", "Sale"):
stool
.
manage_delObjects
(
delivery
.
getCausalityRelatedIdList
(
portal_type
=
'Applied Rule'
))
module
.
manage_delObjects
([
delivery_id
])
# delete supplies
for
supply_portal_type
in
(
'Purchase Supply'
,
'Sale Supply'
,
'Internal Supply'
,
):
module
=
portal
.
getDefaultModule
(
supply_portal_type
)
for
supply_id
in
(
'erp5_pdm_ui_test_supply_1'
,
'erp5_pdm_ui_test_supply_2'
,
'erp5_pdm_ui_test_supply_3'
):
if
getattr
(
module
,
supply_id
,
None
)
is
not
None
:
module
.
manage_delObjects
([
supply_id
])
return
"Deleted Successfully."
bt5/erp5_pdm_ui_test/SkinTemplateItem/portal_skins/erp5_pdm_ui_test/PdmZuite_reset.py
View file @
3ccb6d25
...
...
@@ -154,6 +154,28 @@ for node_id, node_title, site_url in ((source_node_id, source_node_title, source
site
=
site_url
)
# Create supplies
# for all type of supply, source_node_id has 2 related supplies and destination_node_id has 1
for
supply_portal_type
in
(
'Purchase Supply'
,
'Sale Supply'
,
'Internal Supply'
,
):
module
=
portal
.
getDefaultModule
(
supply_portal_type
)
module
.
newContent
(
portal_type
=
supply_portal_type
,
id
=
'erp5_pdm_ui_test_supply_1'
,
source_value
=
portal
.
organisation_module
[
source_node_id
],
destination_value
=
portal
.
organisation_module
[
destination_node_id
],
)
module
.
newContent
(
portal_type
=
supply_portal_type
,
id
=
'erp5_pdm_ui_test_supply_2'
,
source_section_value
=
portal
.
organisation_module
[
source_node_id
],
)
# an unrelated supply that should not be displayed
module
.
newContent
(
portal_type
=
supply_portal_type
,
id
=
'erp5_pdm_ui_test_supply_3'
,
)
# Reset selections
stool
=
context
.
getPortalObject
().
portal_selections
stool
.
setSelectionFor
(
'resource_current_inventory'
,
None
)
...
...
bt5/erp5_trade/ActionTemplateItem/portal_types/Organisation/jump_to_internal_trade_condition.xml
View file @
3ccb6d25
...
...
@@ -16,13 +16,13 @@
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
action_type/object_jump
</string>
<string>
action_type/object_j
io_j
ump
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
category
</string>
</key>
<value>
<string>
object_jump
</string>
</value>
<value>
<string>
object_j
io_j
ump
</string>
</value>
</item>
<item>
<key>
<string>
condition
</string>
</key>
...
...
bt5/erp5_trade/ActionTemplateItem/portal_types/Organisation/jump_to_purchase_packing_list.xml
View file @
3ccb6d25
...
...
@@ -8,7 +8,9 @@
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string></string>
</value>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
categories
</string>
</key>
...
...
@@ -25,16 +27,14 @@
<item>
<key>
<string>
condition
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
I
=
</string>
</persistent>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAA
M
=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string
encoding=
"cdata"
>
<![CDATA[
string:${object_url}/Base_jumpToRelatedObject?base_category=source&portal_type=Purchase+Packing+List
]]>
</string>
</value>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
icon
</string>
</key>
...
...
@@ -68,6 +68,23 @@ string:${object_url}/Base_jumpToRelatedObject?base_category=source&portal_type=P
</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
encoding=
"cdata"
>
<![CDATA[
string:${object_url}/Base_jumpToRelatedObject?base_category=source&portal_type=Purchase+Packing+List
]]>
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"Expression"
module=
"Products.CMFCore.Expression"
/>
</pickle>
...
...
bt5/erp5_trade/ActionTemplateItem/portal_types/Organisation/jump_to_purchase_trade_condition.xml
View file @
3ccb6d25
...
...
@@ -16,13 +16,13 @@
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
action_type/object_jump
</string>
<string>
action_type/object_j
io_j
ump
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
category
</string>
</key>
<value>
<string>
object_jump
</string>
</value>
<value>
<string>
object_j
io_j
ump
</string>
</value>
</item>
<item>
<key>
<string>
condition
</string>
</key>
...
...
bt5/erp5_trade/ActionTemplateItem/portal_types/Organisation/jump_to_sale_trade_condition.xml
View file @
3ccb6d25
...
...
@@ -16,13 +16,13 @@
<key>
<string>
categories
</string>
</key>
<value>
<tuple>
<string>
action_type/object_jump
</string>
<string>
action_type/object_j
io_j
ump
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
category
</string>
</key>
<value>
<string>
object_jump
</string>
</value>
<value>
<string>
object_j
io_j
ump
</string>
</value>
</item>
<item>
<key>
<string>
condition
</string>
</key>
...
...
bt5/erp5_trade_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_trade_zuite.xml
0 → 100644
View file @
3ccb6d25
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Zuite"
module=
"Products.Zelenium.zuite"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
renderjs_ui_trade_zuite
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Trade Zuite
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_trade_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_trade_zuite/testOrganisationJumpToTradeCondition.xml
0 → 100644
View file @
3ccb6d25
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</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>
<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>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
testOrganisationJumpToTradeCondition
</string>
</value>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_trade_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_trade_zuite/testOrganisationJumpToTradeCondition.zpt
0 → 100644
View file @
3ccb6d25
<html>
<head><title>
Test Organisation jump to trade condition
</title></head>
<body>
<table
cellpadding=
"1"
cellspacing=
"1"
border=
"1"
>
<thead>
<tr><td
rowspan=
"1"
colspan=
"4"
>
Test Organisation jump to trade condition
</td></tr>
</thead>
<tbody>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplate/macros/init"
/>
<tr>
<td>
open
</td>
<td>
${base_url}/Zuite_deleteDataForTradeZuite
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Deleted Successfully.
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/Zuite_createOrganisationAndTradeConditionsForTradeZuite
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Data Created.
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/Zuite_waitForActivities
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Done.
</td>
<td></td>
</tr>
<tal:block
tal:repeat=
"trade_condition_portal_type python:('Purchase Trade Condition', 'Sale Trade Condition', 'Internal Trade Condition', )"
>
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/renderjs_runner/#/organisation_module/erp5_trade_ui_test_organisation_1
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': 'Views'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_header_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': trade_condition_portal_type}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_page_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_listbox_loaded"
/>
<tal:block
tal:define=
"notification_configuration python: {'class': 'success',
'text': 'Documents related to Organisation : erp5_trade_ui_test_organisation_1_title.'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification"
/>
</tal:block>
<tal:block
tal:define=
"pagination_configuration python: {'header': '(2)', 'footer': '2 Records'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/check_listbox_pagination_text"
/>
</tal:block>
<tr>
<td>
assertTextPresent
</td>
<td>
erp5_trade_ui_test_trade_condition_1
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
erp5_trade_ui_test_trade_condition_2
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/Zuite_waitForActivities
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Done.
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/web_site_module/renderjs_runner/#/organisation_module/erp5_trade_ui_test_organisation_2
</td>
<td></td>
</tr>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_app_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': 'Views'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_header_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
tal:define=
"click_configuration python: {'text': trade_condition_portal_type}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/click_on_page_link"
/>
</tal:block>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded"
/>
<tal:block
tal:define=
"notification_configuration python: {'class': 'success',
'text': trade_condition_portal_type + ' related to Organisation : erp5_trade_ui_test_organisation_2_title.'}"
>
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_notification"
/>
</tal:block>
<tr>
<td>
waitForTextPresent
</td>
<td>
erp5_trade_ui_test_trade_condition_1
</td>
<td></td>
</tr>
<tr>
<td>
assertTextNotPresent
</td>
<td>
erp5_trade_ui_test_trade_condition_2
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/Zuite_waitForActivities
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
Done.
</td>
<td></td>
</tr>
</tal:block>
</tbody></table>
</body>
</html>
\ No newline at end of file
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/Zuite_CommonTemplateForTradeRenderjsUi.zpt
View file @
3ccb6d25
...
...
@@ -21,7 +21,7 @@
</tr>
<tr>
<td>open</td>
<td>${base_url}/
TradeRJSZuite_deleteData
</td>
<td>${base_url}/
Zuite_deleteDataForTradeRenderjsUi
</td>
<td></td>
</tr>
<tr>
...
...
@@ -42,7 +42,7 @@
</tr>
<tr>
<td>open</td>
<td>${base_url}/
TradeRJSZuite_createSaleOrder
</td>
<td>${base_url}/
Zuite_createSaleOrderForTradeRenderjsUi
</td>
<td></td>
</tr>
<tr>
...
...
@@ -64,7 +64,7 @@
</tr>
<tr>
<td>open</td>
<td>${base_url}/
TradeRJSZuite_createPackingList
</td>
<td>${base_url}/
Zuite_createPackingListForTradeRenderjsUi
</td>
<td></td>
</tr>
<tr>
...
...
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
TradeRJSZuite_createPackingList
.py
→
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
Zuite_createPackingListForTradeRenderjsUi
.py
View file @
3ccb6d25
File moved
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
TradeRJSZuite_createSaleOrder
.xml
→
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
Zuite_createPackingListForTradeRenderjsUi
.xml
View file @
3ccb6d25
...
...
@@ -54,7 +54,7 @@
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
TradeRJSZuite_createSaleOrder
</string>
</value>
<value>
<string>
Zuite_createPackingListForTradeRenderjsUi
</string>
</value>
</item>
</dictionary>
</pickle>
...
...
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
TradeRJSZuite_createSaleOrder
.py
→
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
Zuite_createSaleOrderForTradeRenderjsUi
.py
View file @
3ccb6d25
...
...
@@ -8,10 +8,9 @@ delivery_id = "erp5_trade_renderjs_ui_test_order"
source_value
=
portal
.
restrictedTraverse
(
'organisation_module/erp5_trade_renderjs_ui_test_source_node'
)
destination_value
=
portal
.
restrictedTraverse
(
'organisation_module/erp5_trade_renderjs_ui_test_destination_node'
)
specialise_value
=
portal
.
restrictedTraverse
(
'business_process_module/erp5_trade_renderjs_ui_test_business_process'
)
resource_value
=
portal
.
restrictedTraverse
(
'product_module/erp5_trade_renderjs_ui_test_product'
)
module
=
portal
.
getDefaultModule
(
delivery_portal_type
)
delivery
=
module
.
newContent
(
module
.
newContent
(
portal_type
=
delivery_portal_type
,
id
=
delivery_id
,
title
=
'%s_title'
%
delivery_id
,
...
...
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
TradeRJSZuite_createPackingList
.xml
→
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
Zuite_createSaleOrderForTradeRenderjsUi
.xml
View file @
3ccb6d25
...
...
@@ -54,7 +54,7 @@
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
TradeRJSZuite_createPackingList
</string>
</value>
<value>
<string>
Zuite_createSaleOrderForTradeRenderjsUi
</string>
</value>
</item>
</dictionary>
</pickle>
...
...
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
TradeRJSZuite_deleteData
.py
→
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
Zuite_deleteDataForTradeRenderjsUi
.py
View file @
3ccb6d25
File moved
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
TradeRJSZuite_deleteData
.xml
→
bt5/erp5_trade_renderjs_ui_test/SkinTemplateItem/portal_skins/erp5_trade_renderjs_ui_test/
Zuite_deleteDataForTradeRenderjsUi
.xml
View file @
3ccb6d25
...
...
@@ -54,7 +54,7 @@
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
TradeRJSZuite_deleteData
</string>
</value>
<value>
<string>
Zuite_deleteDataForTradeRenderjsUi
</string>
</value>
</item>
</dictionary>
</pickle>
...
...
bt5/erp5_trade_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSTrade.py
0 → 100644
View file @
3ccb6d25
##############################################################################
#
# Copyright (c) 2021 Nexedi SA and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability 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
# garantees 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from
Products.ERP5Type.tests
import
ERP5TypeFunctionalTestCase
class
TestRenderJSUITradeZuite
(
ERP5TypeFunctionalTestCase
.
ERP5TypeFunctionalTestCase
):
run_only
=
"renderjs_ui_trade_zuite"
bt5/erp5_trade_renderjs_ui_test/TestTemplateItem/portal_components/test.erp5.testFunctionalRJSTrade.xml
0 → 100644
View file @
3ccb6d25
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Test Component"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_recorded_property_dict
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
default_reference
</string>
</key>
<value>
<string>
testFunctionalRJSTrade
</string>
</value>
</item>
<item>
<key>
<string>
default_source_reference
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
test.erp5.testFunctionalRJSTrade
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Test Component
</string>
</value>
</item>
<item>
<key>
<string>
sid
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
text_content_error_message
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
text_content_warning_message
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
version
</string>
</key>
<value>
<string>
erp5
</string>
</value>
</item>
<item>
<key>
<string>
workflow_history
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</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/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"3"
aka=
"AAAAAAAAAAM="
>
<pickle>
<global
name=
"PersistentMapping"
module=
"Persistence.mapping"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
data
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
component_validation_workflow
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAQ=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"4"
aka=
"AAAAAAAAAAQ="
>
<pickle>
<global
name=
"WorkflowHistoryList"
module=
"Products.ERP5Type.Workflow"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_log
</string>
</key>
<value>
<list>
<dictionary>
<item>
<key>
<string>
action
</string>
</key>
<value>
<string>
validate
</string>
</value>
</item>
<item>
<key>
<string>
validation_state
</string>
</key>
<value>
<string>
validated
</string>
</value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_trade_renderjs_ui_test/bt/dependency_list
View file @
3ccb6d25
erp5_trade
erp5_trade
_ui_test
erp5_configurator_standard_solver
erp5_web_renderjs_ui_test
\ No newline at end of file
bt5/erp5_trade_renderjs_ui_test/bt/skip_coding_style_test
deleted
100644 → 0
View file @
80e215df
1
\ No newline at end of file
bt5/erp5_trade_renderjs_ui_test/bt/template_path_list
View file @
3ccb6d25
...
...
@@ -18,5 +18,7 @@ portal_rules/erp5_trade_renderjs_ui_test_order_root_rule
portal_rules/erp5_trade_renderjs_ui_test_order_root_rule/**
portal_tests/renderjs_ui_trade_action_zuite
portal_tests/renderjs_ui_trade_action_zuite/**
portal_tests/renderjs_ui_trade_zuite
portal_tests/renderjs_ui_trade_zuite/**
product_module/erp5_trade_renderjs_ui_test_product
product_module/erp5_trade_renderjs_ui_test_product/**
\ No newline at end of file
bt5/erp5_trade_renderjs_ui_test/bt/template_test_id_list
View file @
3ccb6d25
test.erp5.testFunctionalRJSTradeAction
\ No newline at end of file
test.erp5.testFunctionalRJSTradeAction
test.erp5.testFunctionalRJSTrade
\ No newline at end of file
bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testMultiRelationStringFieldOnASaleOrderLineInsideTheOtherSaleOrderLine.zpt
View file @
3ccb6d25
...
...
@@ -11,6 +11,11 @@ Test MultiRelationStringField on a sale order line inside the other sale order l
<!-- Setup {{{ -->
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForTradeZuite/macros/init"
/>
<tr>
<td>
open
</td>
<td>
${base_url}/sale_order_module/erp5_trade_ui_test_sale_order_1
</td>
<td></td>
</tr>
<!-- }}} -->
<tr>
...
...
@@ -53,4 +58,4 @@ Test MultiRelationStringField on a sale order line inside the other sale order l
</tbody></table>
</body>
</html>
<!-- vim: syntax=html foldmethod=marker -->
<!-- vim: syntax=html foldmethod=marker -->
\ No newline at end of file
bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testOrganisationJumpToTradeCondition.xml
0 → 100644
View file @
3ccb6d25
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ZopePageTemplate"
module=
"Products.PageTemplates.ZopePageTemplate"
/>
</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>
<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>
content_type
</string>
</key>
<value>
<string>
text/html
</string>
</value>
</item>
<item>
<key>
<string>
expand
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
testOrganisationJumpToTradeCondition
</string>
</value>
</item>
<item>
<key>
<string>
output_encoding
</string>
</key>
<value>
<string>
utf-8
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<unicode></unicode>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_trade_ui_test/PathTemplateItem/portal_tests/trade_zuite/testOrganisationJumpToTradeCondition.zpt
0 → 100644
View file @
3ccb6d25
<html>
<head><title>
Test Organisation jump to trade condition
</title></head>
<body>
<table
cellpadding=
"1"
cellspacing=
"1"
border=
"1"
>
<thead>
<tr><td
rowspan=
"1"
colspan=
"4"
>
Test Organisation jump to trade condition
</td></tr>
</thead>
<tbody
tal:define=
"init_method string:Zuite_createOrganisationAndTradeConditionsForTradeZuite;"
>
<!-- Setup {{{ -->
<tal:block
metal:use-macro=
"here/Zuite_CommonTemplateForTradeZuite/macros/init"
/>
<!-- }}} -->
<tal:block
tal:repeat=
"trade_condition_portal_type python: ('Sale Trade Condition', 'Purchase Trade Condition', 'Internal Trade Condition', )"
>
<tr>
<td>
open
</td>
<td>
${base_url}/organisation_module/erp5_trade_ui_test_organisation_1
</td>
<td></td>
</tr>
<tr>
<td>
selectAndWait
</td>
<td>
select_jump
</td>
<td
tal:content=
"trade_condition_portal_type"
></td>
</tr>
<tr>
<td>
assertPortalStatusMessage
</td>
<td>
Documents related to Organisation : erp5_trade_ui_test_organisation_1_title.
</td>
<td></td>
</tr>
<tr>
<td>
assertText
</td>
<td>
//span[@class="listbox-current-page-total-number"]
</td>
<td>
2 records
</td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
erp5_trade_ui_test_trade_condition_1
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
erp5_trade_ui_test_trade_condition_2
</td>
<td></td>
</tr>
<tr>
<td>
open
</td>
<td>
${base_url}/organisation_module/erp5_trade_ui_test_organisation_2
</td>
<td></td>
</tr>
<tr>
<td>
selectAndWait
</td>
<td>
select_jump
</td>
<td
tal:content=
"trade_condition_portal_type"
></td>
</tr>
<tr>
<td>
assertPortalStatusMessage
</td>
<td><tal:block
tal:replace=
"trade_condition_portal_type"
/>
related to Organisation : erp5_trade_ui_test_organisation_2_title.
</td>
<td></td>
</tr>
<tr>
<td>
assertTextPresent
</td>
<td>
erp5_trade_ui_test_trade_condition_1
</td>
<td></td>
</tr>
<tr>
<td>
assertTextNotPresent
</td>
<td>
erp5_trade_ui_test_trade_condition_2
</td>
<td></td>
</tr>
</tal:block>
</tbody></table>
</body>
</html>
\ No newline at end of file
bt5/erp5_trade_ui_test/SkinTemplateItem/portal_skins/erp5_trade_ui_test/Zuite_CommonTemplateForTradeZuite.zpt
View file @
3ccb6d25
...
...
@@ -46,7 +46,7 @@
</tr>
<tr>
<td>assertTextPresent</td>
<td>
Sale Order
Created.</td>
<td>
Data
Created.</td>
<td></td>
</tr>
...
...
@@ -60,11 +60,6 @@
<td>Done.</td>
<td></td>
</tr>
<tr>
<td>open</td>
<td>${base_url}/sale_order_module/erp5_trade_ui_test_sale_order_1</td>
<td></td>
</tr>
</tal:block>
<tal:block metal:define-macro="toggleSupplyLineBasePricePerSlice">
<tr>
...
...
bt5/erp5_trade_ui_test/SkinTemplateItem/portal_skins/erp5_trade_ui_test/Zuite_createOrganisationAndTradeConditionsForTradeZuite.py
0 → 100644
View file @
3ccb6d25
portal
=
context
.
getPortalObject
()
# Create organisations
erp5_trade_ui_test_organisation_1
=
portal
.
organisation_module
.
newContent
(
portal_type
=
'Organisation'
,
id
=
'erp5_trade_ui_test_organisation_1'
,
title
=
'erp5_trade_ui_test_organisation_1_title'
,
)
erp5_trade_ui_test_organisation_2
=
portal
.
organisation_module
.
newContent
(
portal_type
=
'Organisation'
,
id
=
'erp5_trade_ui_test_organisation_2'
,
title
=
'erp5_trade_ui_test_organisation_2_title'
,
)
# Create trade conditions
# for all type of trade condition, erp5_trade_ui_test_organisation_1 has 2 related supplies
# and erp5_trade_ui_test_organisation_2 has 1
for
trade_condition_portal_type
in
(
'Purchase Trade Condition'
,
'Sale Trade Condition'
,
'Internal Trade Condition'
,
):
module
=
portal
.
getDefaultModule
(
trade_condition_portal_type
)
module
.
newContent
(
portal_type
=
trade_condition_portal_type
,
id
=
'erp5_trade_ui_test_trade_condition_1'
,
source_value
=
erp5_trade_ui_test_organisation_1
,
destination_value
=
erp5_trade_ui_test_organisation_2
,
)
module
.
newContent
(
portal_type
=
trade_condition_portal_type
,
id
=
'erp5_trade_ui_test_trade_condition_2'
,
source_section_value
=
erp5_trade_ui_test_organisation_1
,
)
# an unrelated trade_condition that should not be displayed
module
.
newContent
(
portal_type
=
trade_condition_portal_type
,
id
=
'erp5_trade_ui_test_trade_condition_3'
,
)
return
"Data Created."
bt5/erp5_trade_ui_test/SkinTemplateItem/portal_skins/erp5_trade_ui_test/Zuite_createOrganisationAndTradeConditionsForTradeZuite.xml
0 → 100644
View file @
3ccb6d25
<?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>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Zuite_createOrganisationAndTradeConditionsForTradeZuite
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_trade_ui_test/SkinTemplateItem/portal_skins/erp5_trade_ui_test/Zuite_createSaleOrderForTradeZuite.py
View file @
3ccb6d25
context
.
sale_order_module
.
newContent
(
portal_type
=
'Sale Order'
,
id
=
'erp5_trade_ui_test_sale_order_1'
)
return
"
Sale Order
Created."
return
"
Data
Created."
bt5/erp5_trade_ui_test/SkinTemplateItem/portal_skins/erp5_trade_ui_test/Zuite_deleteDataForTradeZuite.py
View file @
3ccb6d25
portal
=
context
.
getPortalObject
()
object_value_list
=
[
getattr
(
context
.
sale_order_module
,
'erp5_trade_ui_test_sale_order_1'
,
None
)
getattr
(
portal
.
sale_order_module
,
'erp5_trade_ui_test_sale_order_1'
,
None
),
getattr
(
portal
.
organisation_module
,
'erp5_trade_ui_test_organisation_1'
,
None
),
getattr
(
portal
.
organisation_module
,
'erp5_trade_ui_test_organisation_2'
,
None
),
]
+
[
getattr
(
portal
.
getDefaultModule
(
portal_type
),
"erp5_trade_ui_test_trade_condition"
,
None
)
getattr
(
portal
.
getDefaultModule
(
portal_type
),
"erp5_trade_ui_test_trade_condition"
+
suffix
,
None
)
for
portal_type
in
(
"Internal Trade Condition"
,
"Purchase Trade Condition"
,
"Sale Trade Condition"
)
for
suffix
in
(
''
,
'_1'
,
'_2'
,
'_3'
)
]
for
object_value
in
object_value_list
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment