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
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Gabriel Monnerat
erp5
Commits
8b7fde47
Commit
8b7fde47
authored
Oct 14, 2011
by
Julien Muchembled
Browse files
Options
Browse Files
Download
Plain Diff
Import erp5_short_message/ERP5ShortMessage from
https://svn.erp5.org/repos/experimental/
parents
acb503bc
723a82b4
Changes
75
Show whitespace changes
Inline
Side-by-side
Showing
75 changed files
with
5148 additions
and
0 deletions
+5148
-0
bt5/erp5_short_message/ActionTemplateItem/portal_types/Dummy%20Gateway/view.xml
.../ActionTemplateItem/portal_types/Dummy%20Gateway/view.xml
+85
-0
bt5/erp5_short_message/ActionTemplateItem/portal_types/Essendex%20Gateway/view.xml
...tionTemplateItem/portal_types/Essendex%20Gateway/view.xml
+85
-0
bt5/erp5_short_message/ActionTemplateItem/portal_types/Mobyt%20Gateway/view.xml
.../ActionTemplateItem/portal_types/Mobyt%20Gateway/view.xml
+85
-0
bt5/erp5_short_message/ActionTemplateItem/portal_types/SMS%20Tool/view.xml
...ssage/ActionTemplateItem/portal_types/SMS%20Tool/view.xml
+85
-0
bt5/erp5_short_message/CategoryTemplateItem/portal_categories/gateway.xml
...essage/CategoryTemplateItem/portal_categories/gateway.xml
+75
-0
bt5/erp5_short_message/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
...eAllowedContentTypeTemplateItem/allowed_content_types.xml
+7
-0
bt5/erp5_short_message/PortalTypeBaseCategoryTemplateItem/base_category_list.xml
...PortalTypeBaseCategoryTemplateItem/base_category_list.xml
+5
-0
bt5/erp5_short_message/PortalTypeTemplateItem/portal_types/Dummy%20Gateway.xml
...e/PortalTypeTemplateItem/portal_types/Dummy%20Gateway.xml
+107
-0
bt5/erp5_short_message/PortalTypeTemplateItem/portal_types/Essendex%20Gateway.xml
...ortalTypeTemplateItem/portal_types/Essendex%20Gateway.xml
+115
-0
bt5/erp5_short_message/PortalTypeTemplateItem/portal_types/Mobyt%20Gateway.xml
...e/PortalTypeTemplateItem/portal_types/Mobyt%20Gateway.xml
+111
-0
bt5/erp5_short_message/PortalTypeTemplateItem/portal_types/SMS%20Tool.xml
...essage/PortalTypeTemplateItem/portal_types/SMS%20Tool.xml
+111
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message.xml
...sage/SkinTemplateItem/portal_skins/erp5_short_message.xml
+26
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/Event_viewSendActionDialog.xml
...l_skins/erp5_short_message/Event_viewSendActionDialog.xml
+112
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/Event_viewSendActionDialog/your_comment.xml
...short_message/Event_viewSendActionDialog/your_comment.xml
+301
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/Event_viewSendActionDialog/your_send_mail.xml
...ort_message/Event_viewSendActionDialog/your_send_mail.xml
+198
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/Event_viewSendActionDialog/your_workflow_action.xml
...ssage/Event_viewSendActionDialog/your_workflow_action.xml
+281
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view.xml
...eItem/portal_skins/erp5_short_message/SMSGateway_view.xml
+161
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_default_sender.xml
.../erp5_short_message/SMSGateway_view/my_default_sender.xml
+96
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_gateway_account.xml
...erp5_short_message/SMSGateway_view/my_gateway_account.xml
+96
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_gateway_account_id.xml
...5_short_message/SMSGateway_view/my_gateway_account_id.xml
+96
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_gateway_password.xml
...rp5_short_message/SMSGateway_view/my_gateway_password.xml
+109
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_gateway_user.xml
...ns/erp5_short_message/SMSGateway_view/my_gateway_user.xml
+96
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_reference.xml
...skins/erp5_short_message/SMSGateway_view/my_reference.xml
+96
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_simulation_mode.xml
...erp5_short_message/SMSGateway_view/my_simulation_mode.xml
+96
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_title.xml
...tal_skins/erp5_short_message/SMSGateway_view/my_title.xml
+96
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_title_mode.xml
...kins/erp5_short_message/SMSGateway_view/my_title_mode.xml
+96
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSTool_afterSend.xml
...tem/portal_skins/erp5_short_message/SMSTool_afterSend.xml
+71
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSTool_pushNewSMS.xml
...em/portal_skins/erp5_short_message/SMSTool_pushNewSMS.xml
+110
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSTool_setMessageDelivery.xml
...l_skins/erp5_short_message/SMSTool_setMessageDelivery.xml
+82
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSTool_viewSMSGatewayList.xml
...l_skins/erp5_short_message/SMSTool_viewSMSGatewayList.xml
+152
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSTool_viewSMSGatewayList/listbox.xml
...erp5_short_message/SMSTool_viewSMSGatewayList/listbox.xml
+116
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/ShortMessage_afterClone.xml
...rtal_skins/erp5_short_message/ShortMessage_afterClone.xml
+69
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/ShortMessage_init.xml
...tem/portal_skins/erp5_short_message/ShortMessage_init.xml
+95
-0
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/ShortMessage_send.xml
...tem/portal_skins/erp5_short_message/ShortMessage_send.xml
+96
-0
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow.xml
...em/portal_workflow/short_message_interaction_workflow.xml
+46
-0
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/interactions.xml
...kflow/short_message_interaction_workflow/interactions.xml
+28
-0
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/interactions/Event_start.xml
...message_interaction_workflow/interactions/Event_start.xml
+90
-0
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/scripts.xml
...l_workflow/short_message_interaction_workflow/scripts.xml
+28
-0
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/scripts/ShortMessage_send.xml
...essage_interaction_workflow/scripts/ShortMessage_send.xml
+69
-0
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/variables.xml
...workflow/short_message_interaction_workflow/variables.xml
+22
-0
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/worklists.xml
...workflow/short_message_interaction_workflow/worklists.xml
+22
-0
bt5/erp5_short_message/bt/copyright_list
bt5/erp5_short_message/bt/copyright_list
+1
-0
bt5/erp5_short_message/bt/dependency_list
bt5/erp5_short_message/bt/dependency_list
+1
-0
bt5/erp5_short_message/bt/description
bt5/erp5_short_message/bt/description
+1
-0
bt5/erp5_short_message/bt/license
bt5/erp5_short_message/bt/license
+1
-0
bt5/erp5_short_message/bt/maintainer_list
bt5/erp5_short_message/bt/maintainer_list
+2
-0
bt5/erp5_short_message/bt/revision
bt5/erp5_short_message/bt/revision
+1
-0
bt5/erp5_short_message/bt/template_action_path_list
bt5/erp5_short_message/bt/template_action_path_list
+4
-0
bt5/erp5_short_message/bt/template_base_category_list
bt5/erp5_short_message/bt/template_base_category_list
+1
-0
bt5/erp5_short_message/bt/template_format_version
bt5/erp5_short_message/bt/template_format_version
+1
-0
bt5/erp5_short_message/bt/template_portal_type_allowed_content_type_list
...message/bt/template_portal_type_allowed_content_type_list
+3
-0
bt5/erp5_short_message/bt/template_portal_type_base_category_list
..._short_message/bt/template_portal_type_base_category_list
+1
-0
bt5/erp5_short_message/bt/template_portal_type_id_list
bt5/erp5_short_message/bt/template_portal_type_id_list
+4
-0
bt5/erp5_short_message/bt/template_skin_id_list
bt5/erp5_short_message/bt/template_skin_id_list
+1
-0
bt5/erp5_short_message/bt/template_workflow_id_list
bt5/erp5_short_message/bt/template_workflow_id_list
+1
-0
bt5/erp5_short_message/bt/title
bt5/erp5_short_message/bt/title
+1
-0
bt5/erp5_short_message/bt/version
bt5/erp5_short_message/bt/version
+1
-0
product/ERP5ShortMessage/Document/DummyGateway.py
product/ERP5ShortMessage/Document/DummyGateway.py
+163
-0
product/ERP5ShortMessage/Document/EssendexGateway.py
product/ERP5ShortMessage/Document/EssendexGateway.py
+372
-0
product/ERP5ShortMessage/Document/MobytGateway.py
product/ERP5ShortMessage/Document/MobytGateway.py
+294
-0
product/ERP5ShortMessage/Document/__init__.py
product/ERP5ShortMessage/Document/__init__.py
+0
-0
product/ERP5ShortMessage/Errors.py
product/ERP5ShortMessage/Errors.py
+39
-0
product/ERP5ShortMessage/Permissions.py
product/ERP5ShortMessage/Permissions.py
+27
-0
product/ERP5ShortMessage/PropertySheet/SMSGateway.py
product/ERP5ShortMessage/PropertySheet/SMSGateway.py
+71
-0
product/ERP5ShortMessage/PropertySheet/__init__.py
product/ERP5ShortMessage/PropertySheet/__init__.py
+0
-0
product/ERP5ShortMessage/README.txt
product/ERP5ShortMessage/README.txt
+6
-0
product/ERP5ShortMessage/Tool/SMSTool.py
product/ERP5ShortMessage/Tool/SMSTool.py
+105
-0
product/ERP5ShortMessage/Tool/__init__.py
product/ERP5ShortMessage/Tool/__init__.py
+0
-0
product/ERP5ShortMessage/__init__.py
product/ERP5ShortMessage/__init__.py
+61
-0
product/ERP5ShortMessage/dtml/explainSMSTool.dtml
product/ERP5ShortMessage/dtml/explainSMSTool.dtml
+14
-0
product/ERP5ShortMessage/interfaces/__init__.py
product/ERP5ShortMessage/interfaces/__init__.py
+0
-0
product/ERP5ShortMessage/interfaces/sms_gateway.py
product/ERP5ShortMessage/interfaces/sms_gateway.py
+47
-0
product/ERP5ShortMessage/refresh.txt
product/ERP5ShortMessage/refresh.txt
+0
-0
product/ERP5ShortMessage/tool.png
product/ERP5ShortMessage/tool.png
+0
-0
product/ERP5ShortMessage/version.txt
product/ERP5ShortMessage/version.txt
+1
-0
No files found.
bt5/erp5_short_message/ActionTemplateItem/portal_types/Dummy%20Gateway/view.xml
0 → 100644
View file @
8b7fde47
<?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>
10.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}/SMSGateway_view
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/ActionTemplateItem/portal_types/Essendex%20Gateway/view.xml
0 → 100644
View file @
8b7fde47
<?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>
10.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}/SMSGateway_view
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/ActionTemplateItem/portal_types/Mobyt%20Gateway/view.xml
0 → 100644
View file @
8b7fde47
<?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>
10.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}/SMSGateway_view
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/ActionTemplateItem/portal_types/SMS%20Tool/view.xml
0 → 100644
View file @
8b7fde47
<?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>
10.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}/SMSTool_viewSMSGatewayList
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/CategoryTemplateItem/portal_categories/gateway.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Base Category"
module=
"erp5.portal_type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_Add_portal_content_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Add_portal_folders_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Copy_or_Move_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</string>
<string>
Manager
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
_Delete_objects_Permission
</string>
</key>
<value>
<tuple>
<string>
Assignor
</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>
Manager
</string>
<string>
Owner
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
The gateway make reference to an object used to make a link to the outside
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
gateway
</string>
</value>
</item>
<item>
<key>
<string>
portal_type
</string>
</key>
<value>
<string>
Base Category
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Gateway
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
0 → 100644
View file @
8b7fde47
<allowed_content_type_list>
<portal_type
id=
"SMS Tool"
>
<item>
Dummy Gateway
</item>
<item>
Essendex Gateway
</item>
<item>
Mobyt Gateway
</item>
</portal_type>
</allowed_content_type_list>
\ No newline at end of file
bt5/erp5_short_message/PortalTypeBaseCategoryTemplateItem/base_category_list.xml
0 → 100644
View file @
8b7fde47
<base_category_list>
<portal_type
id=
"Short Message"
>
<item>
gateway
</item>
</portal_type>
</base_category_list>
\ No newline at end of file
bt5/erp5_short_message/PortalTypeTemplateItem/portal_types/Dummy%20Gateway.xml
0 → 100644
View file @
8b7fde47
<?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>
<dictionary>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
content_icon
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Dummy Gateway
</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>
DummyGateway
</string>
</value>
</item>
<item>
<key>
<string>
type_mixin
</string>
</key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TranslationInformation"
module=
"Products.ERP5Type.TranslationProviderBase"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
domain_name
</string>
</key>
<value>
<string>
erp5_content
</string>
</value>
</item>
<item>
<key>
<string>
property_name
</string>
</key>
<value>
<string>
short_title
</string>
</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_content
</string>
</value>
</item>
<item>
<key>
<string>
property_name
</string>
</key>
<value>
<string>
title
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/PortalTypeTemplateItem/portal_types/Essendex%20Gateway.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ERP5TypeInformation"
module=
"Products.ERP5Type.ERP5Type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_property_domain_dict
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
content_icon
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
factory
</string>
</key>
<value>
<string>
addEssendexGateway
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Essendex Gateway
</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>
EssendexGateway
</string>
</value>
</item>
<item>
<key>
<string>
type_mixin
</string>
</key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TranslationInformation"
module=
"Products.ERP5Type.TranslationProviderBase"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
domain_name
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
property_name
</string>
</key>
<value>
<string>
short_title
</string>
</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>
<none/>
</value>
</item>
<item>
<key>
<string>
property_name
</string>
</key>
<value>
<string>
title
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/PortalTypeTemplateItem/portal_types/Mobyt%20Gateway.xml
0 → 100644
View file @
8b7fde47
<?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>
<dictionary>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
content_icon
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Mobyt Gateway
</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>
MobytGateway
</string>
</value>
</item>
<item>
<key>
<string>
type_mixin
</string>
</key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TranslationInformation"
module=
"Products.ERP5Type.TranslationProviderBase"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
domain_name
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
property_name
</string>
</key>
<value>
<string>
short_title
</string>
</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>
<none/>
</value>
</item>
<item>
<key>
<string>
property_name
</string>
</key>
<value>
<string>
title
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/PortalTypeTemplateItem/portal_types/SMS%20Tool.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ERP5TypeInformation"
module=
"Products.ERP5Type.ERP5Type"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_property_domain_dict
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
short_title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</string>
</persistent>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
content_icon
</string>
</key>
<value>
<none/>
</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>
id
</string>
</key>
<value>
<string>
SMS Tool
</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_mixin
</string>
</key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<global
name=
"TranslationInformation"
module=
"Products.ERP5Type.TranslationProviderBase"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
domain_name
</string>
</key>
<value>
<string>
erp5_content
</string>
</value>
</item>
<item>
<key>
<string>
property_name
</string>
</key>
<value>
<string>
short_title
</string>
</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_content
</string>
</value>
</item>
<item>
<key>
<string>
property_name
</string>
</key>
<value>
<string>
title
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Folder"
module=
"OFS.Folder"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
erp5_short_message
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/Event_viewSendActionDialog.xml
0 → 100644
View file @
8b7fde47
<?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>
Workflow_statusModify
</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>
group_list
</string>
</key>
<value>
<list>
<string>
left
</string>
</list>
</value>
</item>
<item>
<key>
<string>
groups
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
left
</string>
</key>
<value>
<list>
<string>
your_comment
</string>
<string>
your_send_mail
</string>
<string>
your_workflow_action
</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Event_viewSendActionDialog
</string>
</value>
</item>
<item>
<key>
<string>
method
</string>
</key>
<value>
<string>
POST
</string>
</value>
</item>
<item>
<key>
<string>
name
</string>
</key>
<value>
<string>
Base_viewWorkflowActionDialog
</string>
</value>
</item>
<item>
<key>
<string>
pt
</string>
</key>
<value>
<string>
form_dialog
</string>
</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>
Validate Workflow Action
</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>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/Event_viewSendActionDialog/your_comment.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"TextAreaField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_comment
</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>
line_too_long
</string>
</key>
<value>
<string>
A line was too long.
</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>
You entered too many characters.
</string>
</value>
</item>
<item>
<key>
<string>
too_many_lines
</string>
</key>
<value>
<string>
You entered too many lines.
</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>
height
</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>
max_linelength
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_lines
</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>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
width
</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>
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>
height
</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>
max_linelength
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_lines
</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>
unicode
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
width
</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>
Comments which can be read by internal users but unlike description, are not printed out on official documents.
</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>
height
</string>
</key>
<value>
<int>
10
</int>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_linelength
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
max_lines
</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>
Comments
</string>
</value>
</item>
<item>
<key>
<string>
unicode
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
whitespace_preserve
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
width
</string>
</key>
<value>
<int>
80
</int>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record
id=
"2"
aka=
"AAAAAAAAAAI="
>
<pickle>
<tuple>
<tuple>
<string>
Products.Formulator.TALESField
</string>
<string>
TALESMethod
</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
python: \'\'
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/Event_viewSendActionDialog/your_send_mail.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"CheckBoxField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_send_mail
</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>
</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>
hidden
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
title
</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>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAI=
</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>
title
</string>
</key>
<value>
<persistent>
<string
encoding=
"base64"
>
AAAAAAAAAAM=
</string>
</persistent>
</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>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
When checked, this event will actually be sent to each recipient.
</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>
hidden
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Send
</string>
</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: here.getPortalType() in (\'Mail Message\', \'Short Message\')
</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: "%s %s" % (here.Base_translateString("Send"),here.Base_translateString(here.getPortalType()))
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/Event_viewSendActionDialog/your_workflow_action.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"StringField"
module=
"Products.Formulator.StandardFields"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
your_workflow_action
</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>
<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>
<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>
<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>
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>
1
</int>
</value>
</item>
<item>
<key>
<string>
max_length
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
required
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string></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>
<tuple>
<tuple>
<string>
Products.Formulator.TALESField
</string>
<string>
TALESMethod
</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_text
</string>
</key>
<value>
<string>
request/workflow_action | request/field_my_workflow_action | nothing
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view.xml
0 → 100644
View file @
8b7fde47
<?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_edit
</string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
edit_order
</string>
</key>
<value>
<list/>
</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>
group_list
</string>
</key>
<value>
<list>
<string>
left
</string>
<string>
right
</string>
<string>
center
</string>
<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/>
</value>
</item>
<item>
<key>
<string>
center
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
left
</string>
</key>
<value>
<list>
<string>
my_title
</string>
<string>
my_reference
</string>
<string>
my_gateway_user
</string>
<string>
my_gateway_password
</string>
<string>
my_gateway_account
</string>
<string>
my_gateway_account_id
</string>
<string>
my_default_sender
</string>
</list>
</value>
</item>
<item>
<key>
<string>
right
</string>
</key>
<value>
<list>
<string>
my_simulation_mode
</string>
<string>
my_title_mode
</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
SMSGateway_view
</string>
</value>
</item>
<item>
<key>
<string>
method
</string>
</key>
<value>
<string>
POST
</string>
</value>
</item>
<item>
<key>
<string>
name
</string>
</key>
<value>
<string>
SMSGateway_view
</string>
</value>
</item>
<item>
<key>
<string>
pt
</string>
</key>
<value>
<string>
form_view
</string>
</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></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>
<item>
<key>
<string>
update_action_title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_default_sender.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_default_sender
</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>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_string_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Default Sender
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_gateway_account.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_gateway_account
</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>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_string_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Account
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_gateway_account_id.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_gateway_account_id
</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>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_string_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Accound ID
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_gateway_password.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
default
</string>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_gateway_password
</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>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</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>
default
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_password
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Password
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_gateway_user.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_gateway_user
</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>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_string_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
User
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_reference.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_reference
</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>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_string_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Reference
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_simulation_mode.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_simulation_mode
</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>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_checkbox
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Active Simulation
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_title.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_title
</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>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_string_field
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Title
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSGateway_view/my_title_mode.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
title
</string>
</list>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
my_title_mode
</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>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_checkbox
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Active Title Mode
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSTool_afterSend.xml
0 → 100644
View file @
8b7fde47
<?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>
"""Save the message id of the relative document"""\n
if document_relative_url:\n
document = context.getPortalObject().restrictedTraverse(document_relative_url)\n
document.edit(destination_reference=message_id_list[0],\n
gateway = gateway_relative_url)\n
</string>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
message_id_list, document_relative_url=None, gateway_relative_url=None, **kw
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
SMSTool_afterSend
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSTool_pushNewSMS.xml
0 → 100644
View file @
8b7fde47
<?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>
"""Create new SMS from a push of the sms gateway\n
Parameter: \n
message_id -- Reference of the message in gateway side (String)\n
sender -- Phone number of the sender (String)\n
recipient -- Phone number of the recipient (String)\n
text_content -- the message (String)\n
message_type -- Type of message (String)\n
reception_date -- The date when the message was received (DateTime)"""\n
#XXX-Should be replace by portal_contribution\n
module = context.getDefaultModule("Short Message")\n
event = module.newContent(portal_type="Short Message",\n
sender=sender,\n
recipient=recipient,\n
content_type=message_type,\n
text_content=text_content,\n
start_date=reception_date,\n
#XXX-Fx : See with JPS for a new event implementation\n
#XXX-Fx : DestinationReference property must be replace by a category\n
destination_reference=message_id,\n
)\n
\n
#Mark the message as received\n
event.receive()\n
\n
#Search sender and recipient\n
def searchParentOfTelephoneNumber(phone_number):\n
getResultValue = context.portal_catalog.getResultValue\n
\n
phone = getResultValue(url_string={\'query\':phone_number, \'key\':\'ExactMatch\'}, portal_type=\'Telephone\', parent_portal_type=\'Person\')\n
if phone is None:\n
phone = getResultValue(url_string={\'query\':phone_number, \'key\':\'ExactMatch\'}, portal_type=\'Telephone\', parent_portal_type=\'Organisation\')\n
if phone is not None:\n
return phone.getParentValue()\n
\n
return None\n
\n
event.setSourceValue(searchParentOfTelephoneNumber(sender))\n
event.setDestinationValue(searchParentOfTelephoneNumber(recipient))\n
event.setGateway(context.getRelativeUrl())\n
#context.log("new SMS added at %s" % event.getRelativeUrl())\n
</string>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
message_id, sender, recipient, text_content, message_type, reception_date
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
SMSTool_pushNewSMS
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
XXX
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSTool_setMessageDelivery.xml
0 → 100644
View file @
8b7fde47
<?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
encoding=
"cdata"
>
<![CDATA[
"""Search the event and set it delivered\n
#XXX-Fx : See with JPS for a new event implementation\n
#XXX-Fx : DestinationReference property must be replace by a category (multiple reference)\n
#XXX-FX : Other possibility : use acknowledgment\n
"""\n
event = context.portal_catalog.getResultValue(portal_type=portal_type, destination_reference="%"+destination_reference+"%")\n
if event is not None:\n
#All sms must be delivered to set event as delivered\n
if event.getQuantity() >
1:\n
if event.isDelivered():\n
event.setStopDate(delivery_date)\n
event.deliver()\n
]]>
</string>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
delivery_date, portal_type, destination_reference
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
SMSTool_setMessageDelivery
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSTool_viewSMSGatewayList.xml
0 → 100644
View file @
8b7fde47
<?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></string>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
edit_order
</string>
</key>
<value>
<list/>
</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>
group_list
</string>
</key>
<value>
<list>
<string>
left
</string>
<string>
right
</string>
<string>
center
</string>
<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>
center
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
hidden
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
left
</string>
</key>
<value>
<list/>
</value>
</item>
<item>
<key>
<string>
right
</string>
</key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
SMSTool_viewSMSGatewayList
</string>
</value>
</item>
<item>
<key>
<string>
method
</string>
</key>
<value>
<string>
POST
</string>
</value>
</item>
<item>
<key>
<string>
name
</string>
</key>
<value>
<string>
SMSTool_viewSMSGatewayList
</string>
</value>
</item>
<item>
<key>
<string>
pt
</string>
</key>
<value>
<string>
form_list
</string>
</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></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>
<item>
<key>
<string>
update_action_title
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/SMSTool_viewSMSGatewayList/listbox.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"ProxyField"
module=
"Products.ERP5Form.ProxyField"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
delegated_list
</string>
</key>
<value>
<list>
<string>
columns
</string>
<string>
title
</string>
</list>
</value>
</item>
<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>
</dictionary>
</value>
</item>
<item>
<key>
<string>
overrides
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
tales
</string>
</key>
<value>
<dictionary>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string></string>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key>
<string>
values
</string>
</key>
<value>
<dictionary>
<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>
</list>
</value>
</item>
<item>
<key>
<string>
field_id
</string>
</key>
<value>
<string>
my_list_mode_listbox
</string>
</value>
</item>
<item>
<key>
<string>
form_id
</string>
</key>
<value>
<string>
Base_viewFieldLibrary
</string>
</value>
</item>
<item>
<key>
<string>
target
</string>
</key>
<value>
<string>
Click to edit the target
</string>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Gateways
</string>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/ShortMessage_afterClone.xml
0 → 100644
View file @
8b7fde47
<?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>
"""Clean gateway and destination reference"""\n
context.setGateway(None)\n
context.setDestinationReference(None)\n
</string>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ShortMessage_afterClone
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/ShortMessage_init.xml
0 → 100644
View file @
8b7fde47
<?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>
"""Owner Proxy Role allows anonymous users to create events\n
through web sites.\n
\n
Reference will be probably generated with dedicated tool\n
in near future\n
"""\n
portal = context.getPortalObject()\n
type_definition = context.getTypeInfo()\n
\n
short_portal_type = type_definition.getShortTitle()\n
if not short_portal_type:\n
short_portal_type = \'\'.join(s for s in type_definition.getId() if s.isupper())\n
\n
id_group = (\'reference\', short_portal_type)\n
default = 1\n
new_id = portal.portal_ids.generateNewId(id_group=id_group, default=default)\n
reference = \'%s-%s\' % (short_portal_type, new_id)\n
\n
# Set preferred text format and reference\n
context.edit(content_type=\'text/plain\',\n
reference=reference)\n
</string>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
*args, **kw
</string>
</value>
</item>
<item>
<key>
<string>
_proxy_roles
</string>
</key>
<value>
<tuple>
<string>
Owner
</string>
</tuple>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ShortMessage_init
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/SkinTemplateItem/portal_skins/erp5_short_message/ShortMessage_send.xml
0 → 100644
View file @
8b7fde47
<?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>
"""\n
Send the current sms by using a SMS gateway.\n
Use default mobile phone of source and destination\n
"""\n
\n
#Get recipients\n
if not to_url:\n
recipient_phone_list = [person.getDefaultMobileTelephoneValue() for person in context.getDestinationValueList()]\n
if None in recipient_phone_list:\n
raise ValueError, "All recipients should have a default mobile phone"\n
\n
to_url = [phone.asURL() for phone in recipient_phone_list]\n
if None in to_url:\n
raise ValueError, "All recipients should have a valid default mobile phone number"\n
\n
#Get sender\n
if not from_url:\n
if context.getSourceValue():\n
sender_phone = context.getSourceValue().getDefaultMobileTelephoneValue()\n
if not sender_phone:\n
raise ValueError, "The sender should have a default mobile phone"\n
#We use title of sender\n
from_title = sender_phone.getTitle() \n
from_url = sender_phone.asURL()\n
\n
if not body:\n
body = context.getTextContent()\n
\n
context.portal_sms.send(text=body,recipient=to_url,sender=from_url,sender_title=from_title,message_type="text", \n
test=download, document_relative_url=context.getRelativeUrl(), **kw)\n
</string>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
from_url=None, from_title=None, to_url=None, reply_url=None, subject=None, body=None, attachment_format=None, attachment_list=None,download=False,**kw
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ShortMessage_send
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"InteractionWorkflowDefinition"
module=
"Products.ERP5.InteractionWorkflow"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
creation_guard
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string>
Define all interaction arrount short message
</string>
</value>
</item>
<item>
<key>
<string>
groups
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
short_message_interaction_workflow
</string>
</value>
</item>
<item>
<key>
<string>
manager_bypass
</string>
</key>
<value>
<int>
0
</int>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Short Message Interaction Workflow Definition
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/interactions.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Interaction"
module=
"Products.ERP5.Interaction"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_mapping
</string>
</key>
<value>
<dictionary/>
</value>
</item>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
interactions
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/interactions/Event_start.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"InteractionDefinition"
module=
"Products.ERP5.Interaction"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
actbox_category
</string>
</key>
<value>
<string>
workflow
</string>
</value>
</item>
<item>
<key>
<string>
actbox_name
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
actbox_url
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
activate_script_name
</string>
</key>
<value>
<list>
<string>
ShortMessage_send
</string>
</list>
</value>
</item>
<item>
<key>
<string>
after_script_name
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
before_commit_script_name
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
description
</string>
</key>
<value>
<string></string>
</value>
</item>
<item>
<key>
<string>
guard
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
Event_start
</string>
</value>
</item>
<item>
<key>
<string>
method_id
</string>
</key>
<value>
<list>
<string>
start
</string>
</list>
</value>
</item>
<item>
<key>
<string>
once_per_transaction
</string>
</key>
<value>
<int>
1
</int>
</value>
</item>
<item>
<key>
<string>
portal_type_filter
</string>
</key>
<value>
<none/>
</value>
</item>
<item>
<key>
<string>
script_name
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
title
</string>
</key>
<value>
<string>
Send the sms when it\'s posted
</string>
</value>
</item>
<item>
<key>
<string>
trigger_type
</string>
</key>
<value>
<int>
2
</int>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/scripts.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Scripts"
module=
"Products.DCWorkflow.Scripts"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_mapping
</string>
</key>
<value>
<dictionary/>
</value>
</item>
<item>
<key>
<string>
_objects
</string>
</key>
<value>
<tuple/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
scripts
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/scripts/ShortMessage_send.xml
0 → 100644
View file @
8b7fde47
<?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>
"""Call send on the message"""\n
message = state_change[\'object\']\n
message.send(**state_change.kwargs)\n
</string>
</value>
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
state_change
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
ShortMessage_send
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/variables.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Variables"
module=
"Products.DCWorkflow.Variables"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_mapping
</string>
</key>
<value>
<dictionary/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
variables
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/WorkflowTemplateItem/portal_workflow/short_message_interaction_workflow/worklists.xml
0 → 100644
View file @
8b7fde47
<?xml version="1.0"?>
<ZopeData>
<record
id=
"1"
aka=
"AAAAAAAAAAE="
>
<pickle>
<global
name=
"Worklists"
module=
"Products.DCWorkflow.Worklists"
/>
</pickle>
<pickle>
<dictionary>
<item>
<key>
<string>
_mapping
</string>
</key>
<value>
<dictionary/>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
<value>
<string>
worklists
</string>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
bt5/erp5_short_message/bt/copyright_list
0 → 100644
View file @
8b7fde47
Nexedi SA 2010
\ No newline at end of file
bt5/erp5_short_message/bt/dependency_list
0 → 100644
View file @
8b7fde47
erp5_crm
\ No newline at end of file
bt5/erp5_short_message/bt/description
0 → 100644
View file @
8b7fde47
Experimental BT to provide Short Message Service in ERP5
\ No newline at end of file
bt5/erp5_short_message/bt/license
0 → 100644
View file @
8b7fde47
GPL
\ No newline at end of file
bt5/erp5_short_message/bt/maintainer_list
0 → 100644
View file @
8b7fde47
Fx Algrain
Seb
\ No newline at end of file
bt5/erp5_short_message/bt/revision
0 → 100644
View file @
8b7fde47
12
\ No newline at end of file
bt5/erp5_short_message/bt/template_action_path_list
0 → 100644
View file @
8b7fde47
Dummy Gateway | view
Essendex Gateway | view
Mobyt Gateway | view
SMS Tool | view
\ No newline at end of file
bt5/erp5_short_message/bt/template_base_category_list
0 → 100644
View file @
8b7fde47
gateway
\ No newline at end of file
bt5/erp5_short_message/bt/template_format_version
0 → 100644
View file @
8b7fde47
1
\ No newline at end of file
bt5/erp5_short_message/bt/template_portal_type_allowed_content_type_list
0 → 100644
View file @
8b7fde47
SMS Tool | Dummy Gateway
SMS Tool | Essendex Gateway
SMS Tool | Mobyt Gateway
\ No newline at end of file
bt5/erp5_short_message/bt/template_portal_type_base_category_list
0 → 100644
View file @
8b7fde47
Short Message | gateway
\ No newline at end of file
bt5/erp5_short_message/bt/template_portal_type_id_list
0 → 100644
View file @
8b7fde47
Dummy Gateway
Essendex Gateway
Mobyt Gateway
SMS Tool
\ No newline at end of file
bt5/erp5_short_message/bt/template_skin_id_list
0 → 100644
View file @
8b7fde47
erp5_short_message
\ No newline at end of file
bt5/erp5_short_message/bt/template_workflow_id_list
0 → 100644
View file @
8b7fde47
short_message_interaction_workflow
\ No newline at end of file
bt5/erp5_short_message/bt/title
0 → 100644
View file @
8b7fde47
erp5_short_message
\ No newline at end of file
bt5/erp5_short_message/bt/version
0 → 100644
View file @
8b7fde47
0.3
\ No newline at end of file
product/ERP5ShortMessage/Document/DummyGateway.py
0 → 100644
View file @
8b7fde47
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2011 Nexedi SA and Contributors. All Rights Reserved.
# Francois-Xavier Algrain <fxalgrain@tiolive.com>
#
# 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.
#
##############################################################################
"""Receive or send SMS"""
#Import python module
import
random
import
string
from
DateTime
import
DateTime
#Import Zope module
from
AccessControl
import
ClassSecurityInfo
,
\
Unauthorized
from
AccessControl.SecurityManagement
import
getSecurityManager
,
\
setSecurityManager
,
\
newSecurityManager
import
zope.interface
from
zLOG
import
LOG
,
INFO
from
Products.ERP5Type
import
Permissions
,
PropertySheet
,
interfaces
from
Products.ERP5Type.XMLObject
import
XMLObject
from
Products.ERP5Security.ERP5UserManager
import
SUPER_USER
#Product Module
from
Products.ERP5ShortMessage.Errors
import
SMSGatewayError
class
DummyGateway
(
XMLObject
):
"""Dummy SMS Gateway Implementation"""
meta_type
=
'Dummy Gateway'
portal_type
=
'Dummy Gateway'
security
=
ClassSecurityInfo
()
add_permission
=
Permissions
.
AddPortalContent
zope
.
interface
.
implements
(
interfaces
.
ISmsGateway
)
# Declarative security
security
=
ClassSecurityInfo
()
security
.
declareObjectProtected
(
Permissions
.
AccessContentsInformation
)
# Declarative properi ties
property_sheets
=
(
PropertySheet
.
Base
,
PropertySheet
.
XMLObject
,
PropertySheet
.
Reference
,
PropertySheet
.
SMSGateway
)
security
.
declarePublic
(
'getAllowedMessageType'
)
def
getAllowedMessageType
(
self
):
"""List of all message type"""
return
[
'text'
,]
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'send'
)
def
send
(
self
,
text
,
recipient
,
sender
=
None
,
sender_title
=
None
,
message_type
=
"text"
,
test
=
False
,
**
kw
):
"""Send a message.
Parameters:
text -- message
recipient -- phone url of destination_reference. Could be a list
sender -- phone url of source
sender_title -- Use it as source if the gateway has title mode enable
message_type -- Only 'text' is available today
test -- Force the test mode
Kw Parameters:
quality -- Quality of the SMS (default,n)
Return message id
"""
#Check messsage type
if
message_type
not
in
self
.
getAllowedMessageType
():
raise
ValueError
,
"Type of message in not allowed"
#Send message (or test)
if
test
or
self
.
isSimulationMode
():
LOG
(
"DummyGateway"
,
INFO
,
params
)
return
None
else
:
return
generateRandomMessageId
()
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'getMessageStatus'
)
def
getMessageStatus
(
self
,
message_id
):
"""Retrive the status of a message"""
return
"delivered"
security
.
declarePublic
(
'receive'
)
def
receive
(
self
,
REQUEST
):
"""Receive push notification from the gateway"""
#Get current user
sm
=
getSecurityManager
()
try
:
#Use SUPER_USER
portal_membership
=
self
.
getPortalObject
().
portal_membership
newSecurityManager
(
None
,
portal_membership
.
getMemberById
(
SUPER_USER
))
#Dummy notify only new SMS
self
.
notifyReception
(
REQUEST
.
get
(
"sender"
),
REQUEST
.
get
(
"text"
),
_generateRandomMessageId
())
finally
:
#Restore orinal user
setSecurityManager
(
sm
)
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'notifyReception'
)
def
notifyReception
(
self
,
sender
,
text
,
message_id
):
"""The gateway inform what we ha a new message.
"""
#Convert phone as erp5 compliant
def
parsePhoneNumber
(
number
):
#XXX: Should register well formatted number or brut number ?
#return number
return
"+%s(%s)-%s"
%
(
number
[
0
:
2
],
0
,
number
[
2
:])
#Create the new sms in activities
self
.
activate
(
activity
=
'SQLQueue'
).
SMSTool_pushNewSMS
(
message_id
=
message_id
,
sender
=
parsePhoneNumber
(
sender
),
recipient
=
None
,
text_content
=
text
,
message_type
=
'text/plain'
,
reception_date
=
DateTime
())
def
_generateRandomMessageId
():
letters
=
random
.
sample
(
string
.
ascii_lowercase
,
20
)
return
"%s-%s-%s-%s"
%
(
''
.
join
(
letters
[
0
:
5
]),
''
.
join
(
letters
[
5
:
10
]),
''
.
join
(
letters
[
10
:
15
]),
''
.
join
(
letters
[
15
:
20
]))
\ No newline at end of file
product/ERP5ShortMessage/Document/EssendexGateway.py
0 → 100644
View file @
8b7fde47
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
# Francois-Xavier Algrain <fxalgrain@tiolive.com>
#
# 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.
#
##############################################################################
"""Receive or send SMS"""
#Import python module
import
urllib
from
lxml
import
etree
from
DateTime
import
DateTime
#Import Zope module
from
AccessControl
import
ClassSecurityInfo
,
\
Unauthorized
from
AccessControl.SecurityManagement
import
getSecurityManager
,
\
setSecurityManager
,
\
newSecurityManager
import
zope.interface
from
zLOG
import
LOG
,
INFO
from
Products.ERP5Type
import
Permissions
,
PropertySheet
,
interfaces
from
Products.ERP5Type.XMLObject
import
XMLObject
from
Products.ERP5Security.ERP5UserManager
import
SUPER_USER
#Product Module
from
Products.ERP5ShortMessage.Errors
import
SMSGatewayError
class
EssendexGateway
(
XMLObject
):
"""Base of SMS an Gateway. You can use push notification for delivered and new message notification."""
meta_type
=
'Essendex Gateway'
portal_type
=
'Essendex Gateway'
security
=
ClassSecurityInfo
()
add_permission
=
Permissions
.
AddPortalContent
zope
.
interface
.
implements
(
interfaces
.
ISmsGateway
)
# Declarative security
security
=
ClassSecurityInfo
()
security
.
declareObjectProtected
(
Permissions
.
AccessContentsInformation
)
# Declarative properties
property_sheets
=
(
PropertySheet
.
Base
,
PropertySheet
.
XMLObject
,
PropertySheet
.
Reference
,
PropertySheet
.
SMSGateway
)
api_url
=
"https://www.esendex.com/secure/messenger/formpost"
security
.
declarePublic
(
'getAllowedMessageType'
)
def
getAllowedMessageType
(
self
):
"""List of all message type"""
return
[
'text'
,
'binary'
,
'smartMessage'
,
'unicode'
]
security
.
declarePrivate
(
"_fetchPageAsDict"
)
def
_fetchPageAsDict
(
self
,
page
):
"""Page result is like Key=value in text format.
We transform it to a more powerfull dictionnary"""
result
=
dict
()
index
=
0
#Read all lines
for
line
in
page
.
readlines
():
#Look is the line have multi key/value
parts
=
line
.
split
(
'&'
)
if
len
(
parts
)
==
1
:
data
=
parts
[
0
].
split
(
'='
)
#Remove \n et \r from value
result
[
data
[
0
]]
=
urllib
.
unquote
(
data
[
1
].
replace
(
'
\
r
'
,
''
).
replace
(
'
\
n
'
,
''
))
else
:
#Mutil values
subresult
=
{}
for
part
in
parts
:
data
=
part
.
split
(
'='
)
subresult
[
data
[
0
]]
=
urllib
.
unquote
(
data
[
1
].
replace
(
'
\
r
'
,
''
).
replace
(
'
\
n
'
,
''
))
result
[
index
]
=
subresult
#Increment index for next
index
+=
1
return
result
security
.
declarePrivate
(
"_transformPhoneUrlToGatewayNumber"
)
def
_transformPhoneUrlToGatewayNumber
(
self
,
phone
):
"""Transform url of phone number to a valid phone number (gateway side)"""
phone
=
phone
.
replace
(
'tel:'
,
''
).
replace
(
'+'
,
''
).
replace
(
'(0)'
,
''
).
replace
(
'-'
,
''
)
# Check that phone number can not be something not existing
assert
not
(
phone
.
startswith
(
'99000'
))
return
phone
security
.
declarePrivate
(
"_parsePhoneNumber"
)
def
_parsePhoneNumber
(
self
,
number
):
"""Convert phone number for erp5 compliance"""
return
"+%s(%s)-%s"
%
(
number
[
0
:
2
],
0
,
number
[
2
:])
security
.
declarePrivate
(
"_parsePhoneNumber"
)
def
_parseDate
(
self
,
string
):
"""Convert a string (like 2011-05-03 10:23:16Z) to a DateTime"""
return
DateTime
(
string
.
replace
(
'Z'
,
' GTM+2'
))
def
_convertTimeDeltaToSeconds
(
self
,
timedelta
):
""" Convert a timedelta to seconds """
return
timedelta
.
seconds
+
(
timedelta
.
days
*
24
*
60
*
60
)
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'send'
)
def
send
(
self
,
text
,
recipient
,
sender
=
None
,
sender_title
=
None
,
message_type
=
"text"
,
test
=
False
,
**
kw
):
"""Send a message.
Parameters:
text -- message
recipient -- phone url of destination_reference. Could be a list
sender -- phone url of source
sender_title -- Use it as source if the gateway has title mode enable
message_type -- Only 'text' is available today
test -- Force the test mode
Kw Parameters:
validity_period -- Validity Period of SMS (default,0)
Return message id (or list if multiple recipient)
"""
if
message_type
not
in
self
.
getAllowedMessageType
():
raise
ValueError
,
"Type of message in not allowed"
validity_period
=
kw
.
get
(
'validity_period'
,
0
)
if
not
isinstance
(
recipient
,
str
):
recipient
=
","
.
join
([
self
.
_transformPhoneUrlToGatewayNumber
(
x
)
for
x
in
recipient
])
else
:
recipient
=
self
.
_transformPhoneUrlToGatewayNumber
(
recipient
)
base_url
=
self
.
api_url
+
"/SendSMS.aspx"
params
=
{
'Username'
:
self
.
getGatewayUser
(),
'Password'
:
self
.
getGatewayPassword
(),
'Account'
:
self
.
getGatewayAccount
(),
'Recipient'
:
recipient
,
'Body'
:
text
,
'Type'
:
message_type
.
capitalize
(),
'ValidityPeriod'
:
validity_period
,
'PlainText'
:
1
,
}
if
sender_title
and
self
.
isTitleMode
():
params
[
'Originator'
]
=
sender_title
elif
sender
:
params
[
'Originator'
]
=
self
.
_transformPhoneUrlToGatewayNumber
(
sender
)
elif
self
.
getDefaultSender
():
params
[
'Originator'
]
=
self
.
getDefaultSender
()
if
test
or
self
.
isSimulationMode
():
params
[
'Test'
]
=
1
LOG
(
"EssendexGateway"
,
INFO
,
params
)
params
=
urllib
.
urlencode
(
params
)
page
=
urllib
.
urlopen
(
base_url
,
params
)
result
=
self
.
_fetchPageAsDict
(
page
)
if
result
[
'Result'
]
==
"OK"
:
message_ids
=
result
.
get
(
'MessageIDs'
,
""
)
#If a message is sent to multiple recipients, multiple IDs are returned
#each seperated by a comma.
return
message_ids
.
split
(
","
)
elif
result
[
'Result'
]
==
"Error"
:
#we get an error when call the gateway
raise
SMSGatewayError
,
urllib
.
unquote
(
result
.
get
(
'Message'
,
"Impossible to send the SMS"
))
elif
result
[
'Result'
]
==
"Test"
:
#just a test, no message id
return
None
else
:
raise
ValueError
(
"Unknown result"
,
0
,
result
)
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'getMessageStatus'
)
def
getMessageStatus
(
self
,
message_id
):
"""Retrive the status of a message"""
base_url
=
self
.
api_url
+
"/QueryStatus.aspx"
params
=
{
'Username'
:
self
.
getGatewayUser
(),
'Password'
:
self
.
getGatewayPassword
(),
'Account'
:
self
.
getGatewayAccount
(),
'PlainText'
:
1
,
'MessageID'
:
message_id
,
}
params
=
urllib
.
urlencode
(
params
)
page
=
urllib
.
urlopen
(
base_url
,
params
)
result
=
self
.
_fetchPageAsDict
(
page
)
if
result
[
'Result'
]
==
"OK"
:
return
result
.
get
(
'MessageStatus'
).
lower
()
elif
result
[
'Result'
]
==
"Error"
:
#we get an error when call the gateway
raise
SMSGatewayError
,
urllib
.
unquote
(
result
.
get
(
'Message'
,
"Impossible to get the message status"
))
security
.
declarePublic
(
'receive'
)
def
receive
(
self
,
REQUEST
):
"""Receive push notification"""
#XML is stored is BODY of request
datas
=
REQUEST
[
'BODY'
]
if
not
datas
:
raise
SMSGatewayError
,
"Impossible to notify nothing"
#Get current user
sm
=
getSecurityManager
()
try
:
#Use SUPER_USER
portal_membership
=
self
.
getPortalObject
().
portal_membership
newSecurityManager
(
None
,
portal_membership
.
getMemberById
(
SUPER_USER
))
#Parse XML
root
=
etree
.
fromstring
(
datas
)
#Choice action corresponding to the notification type
notification_type
=
root
.
tag
#Parse text XML Element to dict
xml
=
{}
for
child
in
root
.
getchildren
():
xml
[
child
.
tag
]
=
child
.
text
#Check Account id
if
xml
[
'AccountId'
]
!=
self
.
getGatewayAccountId
():
raise
Unauthorized
,
'Bad accound id (%s)'
%
xml
[
'AccountId'
]
if
notification_type
==
'InboundMessage'
:
self
.
notifyReception
(
xml
)
elif
notification_type
==
'MessageDelivered'
:
self
.
notifyDelivery
(
xml
)
elif
notification_type
==
'MessageError'
:
raise
SMSGatewayError
,
"'MessageError' notification is not implemented (%s)"
%
str
(
kw
)
elif
notification_type
==
'SubscriptionEvent'
:
raise
SMSGatewayError
,
"'MessageError' notification is not implemented (%s)"
%
str
(
kw
)
else
:
raise
SMSGatewayError
,
"Unknow '%s' notification (%s)"
%
(
notification_type
,
str
(
kw
))
finally
:
#Restore orinal user
setSecurityManager
(
sm
)
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'notifyReception'
)
def
notifyReception
(
self
,
xml
):
"""The gateway inform what we ha a new message.
root: lxml Element"""
"""
<InboundMessage>
<Id>{guid-of-push-notification}</Id>
<MessageId>{guid-of-inbound-message}</MessageId>
<AccountId>{guid-of-esendex-account-for-message}</AccountId>
<MessageText>{Message text of inbound message}</MessageText>
<From>{phone number of sender of the message}</From>
<To>{phone number of the recipient of the inbound message (the
virtual number of the esendex account in use)}</To>
</InboundMessage>
"""
#Create the new sms in activities
self
.
activate
(
activity
=
'SQLQueue'
,
priority
=
1
).
SMSTool_pushNewSMS
(
message_id
=
xml
[
'MessageId'
],
sender
=
self
.
_parsePhoneNumber
(
xml
[
'From'
]),
recipient
=
self
.
_parsePhoneNumber
(
xml
[
'To'
]),
text_content
=
xml
[
'MessageText'
],
message_type
=
'text/plain'
,
reception_date
=
DateTime
(),
mode
=
"push"
)
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'notifyDelivery'
)
def
notifyDelivery
(
self
,
xml
):
"""Handle delivery info
xml: lxml Element"""
"""
<MessageDelivered>
<Id>{guid-of-push-notification}</Id>
<MessageId>{guid-of-inbound-message}</MessageId>
<AccountId>{guid-of-esendex-account-for-message}</AccountId>
<OccurredAt>{the UTC DateTime (yyyy-MM-ddThh:mm:ss) that the
message was delivered to the recipient}</OccurredAt>
</MessageDelivered>
"""
#Convert date to DateTime
xml
[
'OccurredAt'
]
=
DateTime
(
xml
[
'OccurredAt'
][
0
:
19
])
self
.
activate
(
activity
=
'SQLQueue'
).
SMSTool_setMessageDelivery
(
portal_type
=
"Short Message"
,
destination_reference
=
xml
[
'MessageId'
],
delivery_date
=
xml
[
'OccurredAt'
])
def
pullLastMessageList
(
self
,
start_date
=
None
,
stop_date
=
None
):
"""Get last messsages on the gateway"""
if
start_date
is
not
None
or
stop_date
is
not
None
:
base_url
=
self
.
api_url
+
"/GetInboxMessage.aspx"
else
:
base_url
=
self
.
api_url
+
"/GetLatestInboxMessages.aspx"
params
=
{
'Username'
:
self
.
getGatewayUser
(),
'Password'
:
self
.
getGatewayPassword
(),
'Account'
:
self
.
getGatewayAccount
(),
'PlainText'
:
1
,
}
if
start_date
is
not
None
:
params
[
'StartDate'
]
=
start_date
.
strftime
(
'%d/%m/%Y %H:%M:%S'
)
if
stop_date
is
not
None
:
params
[
'EndDate'
]
=
stop_date
.
strftime
(
'%d/%m/%Y %H:%M:%S'
)
if
self
.
isSimulationMode
():
params
[
'Test'
]
=
1
LOG
(
"EssendexGateway"
,
INFO
,
params
)
params
=
urllib
.
urlencode
(
params
)
page
=
urllib
.
urlopen
(
base_url
,
params
)
result
=
self
.
_fetchPageAsDict
(
page
)
if
result
[
'Result'
]
==
"OK"
:
#Push all message
type_mapping
=
{
'Text'
:
'text/plain'
}
now
==
DateTime
()
for
key
,
value
in
result
.
items
():
if
type
(
key
)
==
int
:
reception_date
=
self
.
_parseDate
(
value
[
'ReceivedAt'
])
#Take only message received more than 10s
if
self
.
_convertTimeDeltaToSeconds
(
now
-
reception_date
)
>
10
:
self
.
activate
(
activity
=
'SQLQueue'
,
priority
=
2
).
SMSTool_pushNewSMS
(
message_id
=
value
[
'ID'
],
sender
=
self
.
_parsePhoneNumber
(
value
[
'Originator'
]),
recipient
=
self
.
_parsePhoneNumber
(
value
[
'Recipient'
]),
text_content
=
value
[
'Body'
],
message_type
=
type_mapping
[
value
[
'Type'
]],
reception_date
=
reception_date
,
mode
=
"pull"
)
elif
result
[
'Result'
]
==
"Test"
:
LOG
(
"EssendexGateway"
,
INFO
,
result
)
elif
result
[
'Result'
]
==
"Error"
:
#we get an error when call the gateway
raise
SMSGatewayError
,
urllib
.
unquote
(
result
.
get
(
'Message'
,
"Impossible to get last message list"
))
\ No newline at end of file
product/ERP5ShortMessage/Document/MobytGateway.py
0 → 100644
View file @
8b7fde47
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2011 Nexedi SA and Contributors. All Rights Reserved.
# Francois-Xavier Algrain <fxalgrain@tiolive.com>
#
# 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.
#
##############################################################################
"""Receive or send SMS"""
#Import python module
import
urllib
from
DateTime
import
DateTime
#Import Zope module
from
AccessControl
import
ClassSecurityInfo
,
\
Unauthorized
from
AccessControl.SecurityManagement
import
getSecurityManager
,
\
setSecurityManager
,
\
newSecurityManager
import
zope.interface
from
zLOG
import
LOG
,
INFO
from
Products.ERP5Type
import
Permissions
,
PropertySheet
,
interfaces
from
Products.ERP5Type.XMLObject
import
XMLObject
from
Products.ERP5Security.ERP5UserManager
import
SUPER_USER
#Product Module
from
Products.ERP5ShortMessage.Errors
import
SMSGatewayError
class
MobytGateway
(
XMLObject
):
"""Mobyt SMS Gateway Implementation"""
meta_type
=
'Mobyt Gateway'
portal_type
=
'Mobyt Gateway'
security
=
ClassSecurityInfo
()
add_permission
=
Permissions
.
AddPortalContent
zope
.
interface
.
implements
(
interfaces
.
ISmsGateway
)
# Declarative security
security
=
ClassSecurityInfo
()
security
.
declareObjectProtected
(
Permissions
.
AccessContentsInformation
)
# Declarative properi ties
property_sheets
=
(
PropertySheet
.
Base
,
PropertySheet
.
XMLObject
,
PropertySheet
.
Reference
,
PropertySheet
.
SMSGateway
)
api_url
=
"http://multilevel.mobyt.fr/sms"
security
.
declarePublic
(
'getAllowedMessageType'
)
def
getAllowedMessageType
(
self
):
"""List of all message type"""
return
[
'text'
,
'multitext'
,
'wappush'
,
'ucs2'
,
'multiucs2'
]
security
.
declarePrivate
(
"_fetchSendResponseAsDict"
)
def
_fetchSendResponseAsDict
(
self
,
page
):
"""Page result is like Key=value in text format.
We transform it to a more powerfull dictionnary"""
result
=
dict
()
lines
=
page
.
readlines
()
assert
len
(
lines
)
==
1
,
"Multi lines response is not managed %s"
%
lines
line
=
lines
[
0
]
parts
=
line
.
split
(
' '
)
#Format is 'Status Message'
result
[
'status'
]
=
parts
[
0
]
result
[
'status_info'
]
=
' '
.
join
(
parts
[
1
:])
return
result
security
.
declarePrivate
(
"_fetchStatusResponseAsDict"
)
def
_fetchStatusResponseAsDict
(
self
,
page
):
"""Page result is like Key=value in text format.
We transform it to a more powerfull dictionnary"""
result
=
dict
()
lines
=
page
.
readlines
()
#First line is special : CSV column title or error inform
line
=
lines
[
0
]
if
line
[
0
:
1
]
==
"KO"
:
result
[
'status'
]
=
"KO"
result
[
'status_info'
]
=
line
[
2
:]
return
result
def
_cleanText
(
s
):
return
s
.
replace
(
'
\
r
'
,
''
).
replace
(
'
\
n
'
,
''
)
column_name_list
=
line
.
split
(
','
)
column_count
=
len
(
column_name_list
)
#Clean last colum
column_name_list
[
-
1
]
=
_cleanText
(
column_name_list
[
-
1
])
result
[
'status'
]
=
"OK"
row_list
=
[]
#Batch other line to get all status
for
line
in
lines
[
1
:]:
row
=
{}
column_value_list
=
line
.
split
(
','
)
column_value_list
[
-
1
]
=
_cleanText
(
column_value_list
[
-
1
])
for
i
in
range
(
0
,
column_count
):
row
[
column_name_list
[
i
]]
=
column_value_list
[
i
]
row_list
.
append
(
row
)
result
[
'status_info'
]
=
row_list
return
result
security
.
declarePrivate
(
"_transformPhoneUrlToGatewayNumber"
)
def
_transformPhoneUrlToGatewayNumber
(
self
,
phone
):
"""Transform url of phone number to a valid phone number (gateway side)"""
phone
=
phone
.
replace
(
'tel:'
,
''
).
replace
(
'(0)'
,
''
).
replace
(
'-'
,
''
)
# Check that phone number can not be something not existing
assert
not
(
phone
.
startswith
(
'99000'
))
return
phone
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'send'
)
def
send
(
self
,
text
,
recipient
,
sender
=
None
,
sender_title
=
None
,
message_type
=
"text"
,
test
=
False
,
**
kw
):
"""Send a message.
Parameters:
text -- message
recipient -- phone url of destination_reference. Could be a list
sender -- phone url of source
sender_title -- Use it as source if the gateway has title mode enable
message_type -- Only 'text' is available today
test -- Force the test mode
Kw Parameters:
quality -- Quality of the SMS (default,n)
Return message id
"""
#Check messsage type
if
message_type
not
in
self
.
getAllowedMessageType
():
raise
ValueError
,
"Type of message in not allowed"
#Check message qualit
quality
=
kw
.
get
(
'quality'
,
'n'
)
#Allow sender personalization and status of SMS
assert
quality
in
[
'n'
,
'l'
,
'll'
],
"Unknown quality : '%s'"
%
quality
#Recipients
if
not
isinstance
(
recipient
,
str
):
recipient_count
=
len
(
recipient
)
recipient
=
","
.
join
([
self
.
_transformPhoneUrlToGatewayNumber
(
x
)
for
x
in
recipient
])
else
:
recipient
=
self
.
_transformPhoneUrlToGatewayNumber
(
recipient
)
recipient_count
=
1
if
recipient_count
>
1
:
base_url
=
self
.
api_url
+
"/batch.php"
#Multi recipient
else
:
base_url
=
self
.
api_url
+
"/send.php"
#Common params
params
=
{
"user"
:
self
.
getGatewayUser
(),
"pass"
:
self
.
getGatewayPassword
(),
"rcpt"
:
recipient
,
"data"
:
text
,
"qty"
:
quality
,
"return_id"
:
1
}
#Define sender
if
sender_title
and
self
.
isTitleMode
()
and
quality
==
'n'
:
params
[
'sender'
]
=
sender_title
elif
sender
:
params
[
'sender'
]
=
self
.
_transformPhoneUrlToGatewayNumber
(
sender
)
elif
self
.
getDefaultSender
():
params
[
'sender'
]
=
self
.
getDefaultSender
()
#Define type of message
if
message_type
!=
"text"
:
assert
quality
==
'n'
,
"This type of message require top level messsage quality"
assert
message_type
in
self
.
getAllowedMessageType
(),
"Unknown message type"
param
[
'operation'
]
=
message_type
.
capitalize
()
#Send message (or test)
if
test
or
self
.
isSimulationMode
():
LOG
(
"MobytGateway"
,
INFO
,
params
)
result
=
{
'status'
:
"Test"
}
else
:
LOG
(
'MobytGateway, sending to with params'
,
0
,
(
base_url
,
params
))
params
=
urllib
.
urlencode
(
params
)
page
=
urllib
.
urlopen
(
base_url
,
params
)
result
=
self
.
_fetchSendResponseAsDict
(
page
)
#Check result and return
if
result
[
'status'
]
==
"OK"
:
return
[
result
.
get
(
'status_info'
,
""
)]
#return message id (gateway side)
elif
result
[
'status'
]
==
"KO"
:
#we get an error when call the gateway
raise
SMSGatewayError
,
urllib
.
unquote
(
result
.
get
(
'status_info'
,
"Impossible to send the SMS"
))
elif
result
[
'status'
]
==
"Test"
:
#just a test, no message id
return
None
else
:
raise
ValueError
(
"Unknown result"
,
0
,
result
)
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'getMessageStatus'
)
def
getMessageStatus
(
self
,
message_id
):
"""Retrive the status of a message"""
base_url
=
self
.
api_url
+
"/batch-status.php"
params
=
{
"user"
:
self
.
getGatewayUser
(),
"pass"
:
self
.
getGatewayPassword
(),
"id"
:
message_id
,
"type"
:
'notify'
,
"schema"
:
1
}
params
=
urllib
.
urlencode
(
params
)
page
=
urllib
.
urlopen
(
base_url
,
params
)
result
=
self
.
_fetchStatusResponseAsDict
(
page
)
if
result
[
'status'
]
==
"OK"
:
row_list
=
result
.
get
(
'status_info'
)
#return only status_text list
if
len
(
row_list
)
==
1
:
return
row_list
[
0
].
get
(
'status_text'
).
lower
()
else
:
status_list
=
[]
for
row
in
row_list
:
status_list
.
append
(
row
.
get
(
'status_text'
).
lower
())
return
status_list
elif
result
[
'status'
]
==
"KO"
:
#we get an error when call the gateway
raise
SMSGatewayError
,
urllib
.
unquote
(
result
.
get
(
'status_info'
,
"Impossible to get the message status"
))
security
.
declarePublic
(
'receive'
)
def
receive
(
self
,
REQUEST
):
"""Receive push notification from the gateway"""
#Get current user
sm
=
getSecurityManager
()
try
:
#Use SUPER_USER
portal_membership
=
self
.
getPortalObject
().
portal_membership
newSecurityManager
(
None
,
portal_membership
.
getMemberById
(
SUPER_USER
))
#Mobyt notify only new SMS
self
.
notifyReception
(
REQUEST
.
get
(
"orig"
),
REQUEST
.
get
(
"text"
),
REQUEST
.
get
(
"ticket"
))
finally
:
#Restore orinal user
setSecurityManager
(
sm
)
security
.
declareProtected
(
Permissions
.
ManagePortal
,
'notifyReception'
)
def
notifyReception
(
self
,
sender
,
text
,
message_id
):
"""The gateway inform what we ha a new message.
"""
#Convert phone as erp5 compliant
def
parsePhoneNumber
(
number
):
#XXX: Should register well formatted number or brut number ?
#return number
return
"+%s(%s)-%s"
%
(
number
[
0
:
2
],
0
,
number
[
2
:])
#Create the new sms in activities
self
.
activate
(
activity
=
'SQLQueue'
).
SMSTool_pushNewSMS
(
message_id
=
message_id
,
sender
=
parsePhoneNumber
(
sender
),
recipient
=
None
,
text_content
=
text
,
message_type
=
'text/plain'
,
reception_date
=
DateTime
())
product/ERP5ShortMessage/Document/__init__.py
0 → 100644
View file @
8b7fde47
product/ERP5ShortMessage/Errors.py
0 → 100644
View file @
8b7fde47
##############################################################################
#
# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
# Francois-Xavier Algrain <fxalgrain@tiolive.com>
#
# 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.
#
##############################################################################
"""Exception Classes for ERP5Configurator"""
# These classes are placed here so that they can be imported into TTW Python
# scripts. To do so, add the following line to your Py script:
# from Products.ERP5.Errors import DeferredCatalogError
from
Products.PythonScripts.Utility
import
allow_class
from
Products.CMFCore.WorkflowCore
import
WorkflowException
class
SMSGatewayError
(
Exception
):
pass
allow_class
(
SMSGatewayError
)
product/ERP5ShortMessage/Permissions.py
0 → 100644
View file @
8b7fde47
##############################################################################
#
# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
# Francois-Xavier Algrain <fxalgrain@tiolive.com>
#
# 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.
#
##############################################################################
\ No newline at end of file
product/ERP5ShortMessage/PropertySheet/SMSGateway.py
0 → 100644
View file @
8b7fde47
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
# Francois-Xavier Algrain <fxalgrain@tiolive.com>
#
# 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.
#
##############################################################################
class
SMSGateway
:
"""
Agent properties for Agent objects
"""
_properties
=
(
{
'id'
:
'gateway_user'
,
'description'
:
'User name to connect '
,
'type'
:
'string'
,
'mode'
:
'w'
},
{
'id'
:
'gateway_password'
,
'description'
:
'Password to connect'
,
'type'
:
'string'
,
'mode'
:
'w'
},
{
'id'
:
'gateway_account'
,
'description'
:
'Account to use.'
,
'type'
:
'string'
,
'mode'
:
'w'
},
{
'id'
:
'gateway_account_id'
,
'description'
:
'Id of the accound. Can be used for push notification'
,
'type'
:
'string'
,
'mode'
:
'w'
},
{
'id'
:
'default_sender'
,
'description'
:
'Default sender when send message.'
,
'type'
:
'string'
,
'mode'
:
'w'
},
{
'id'
:
'simulation_mode'
,
'description'
:
'Force the simulation mode.'
,
'type'
:
'boolean'
,
'mode'
:
'w'
},
{
'id'
:
'title_mode'
,
'description'
:
'Allow or not to send by title'
,
'type'
:
'boolean'
,
'mode'
:
'w'
},
)
\ No newline at end of file
product/ERP5ShortMessage/PropertySheet/__init__.py
0 → 100644
View file @
8b7fde47
product/ERP5ShortMessage/README.txt
0 → 100644
View file @
8b7fde47
ERP5ShortMessage
The ERP5ShortMessage product provides support for sending or receiving SMS from
within the Zope environment.
product/ERP5ShortMessage/Tool/SMSTool.py
0 → 100644
View file @
8b7fde47
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
# François-Xavier Algrain <fxalgrain@tiolive.com>
#
# 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
AccessControl
import
ClassSecurityInfo
from
Products.ERP5Type.Tool.BaseTool
import
BaseTool
from
Products.ERP5Type.Permissions
import
ManagePortal
from
Globals
import
DTMLFile
from
Products.ERP5ShortMessage
import
_dtmldir
class
SMSTool
(
BaseTool
):
"""
This tool manages gadgets.
It is used as a central point to manage gadgets (ERP5 or external ones)...
"""
id
=
'portal_sms'
meta_type
=
'ERP5 SMS Tool'
portal_type
=
'SMS Tool'
# Declarative Security
security
=
ClassSecurityInfo
()
security
.
declareProtected
(
ManagePortal
,
'manage_overview'
)
manage_overview
=
DTMLFile
(
'explainSMSTool'
,
_dtmldir
)
security
.
declareProtected
(
ManagePortal
,
'send'
)
def
send
(
self
,
text
,
recipient
,
sender
=
None
,
sender_title
=
None
,
message_type
=
"text"
,
test
=
False
,
gateway_reference
=
'default'
,
document_relative_url
=
None
,
activate_kw
=
None
,
**
kw
):
"""
document_relative_url (optional) : allows to send back result to a document
activate_kw (optional) : Call SMSTool_afterSend if founded in activity with
message_id_list and document_relative_url
"""
gateway
=
self
.
find
(
gateway_reference
)
message_id_list
=
gateway
.
send
(
text
=
text
,
recipient
=
recipient
,
sender
=
sender
,
sender_title
=
sender_title
,
message_type
=
message_type
,
test
=
test
,
**
kw
)
if
getattr
(
self
,
'SMSTool_afterSend'
):
# We need to use activities in order to avoid any conflict
send_activate_kw
=
{
'activity'
:
'SQLQueue'
}
if
activate_kw
is
not
None
:
send_activate_kw
.
update
(
**
activate_kw
)
self
.
activate
(
**
send_activate_kw
).
SMSTool_afterSend
(
message_id_list
,
document_relative_url
=
document_relative_url
,
gateway_relative_url
=
gateway
.
getRelativeUrl
(),
**
kw
)
security
.
declareProtected
(
ManagePortal
,
'getMessageStatus'
)
def
getMessageStatus
(
self
,
message_id
,
gateway_reference
=
'default'
):
gateway
=
self
.
find
(
gateway_reference
)
return
gateway
.
getMessageStatus
(
message_id
)
security
.
declarePublic
(
'isSendByTitleAllowed'
)
def
isSendByTitleAllowed
(
self
,
gateway_reference
=
'default'
):
"""Define the support or not to use the title of the telephone instead of
the number when send a message."""
gateway
=
self
.
find
(
gateway_reference
)
return
gateway
.
isTitleMode
()
security
.
declarePublic
(
'find'
)
def
find
(
self
,
gateway_reference
=
'default'
):
"""Search the gateway by his reference"""
result
=
self
.
searchFolder
(
reference
=
gateway_reference
)
if
len
(
result
)
>
0
:
return
result
[
0
].
getObject
()
else
:
raise
ValueError
,
"Impossible to find gateway with reference %s"
%
gateway_reference
product/ERP5ShortMessage/Tool/__init__.py
0 → 100644
View file @
8b7fde47
product/ERP5ShortMessage/__init__.py
0 → 100644
View file @
8b7fde47
##############################################################################
#
# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
# Francois-Xavier Algrain <fxalgrain@tiolive.com>
#
# 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.
#
##############################################################################
"""
ERP5ShortMessage is a product containing everything needed to implement
Short Message management in ERP5.
"""
# Update ERP5 Globals
from
Products.ERP5Type.Utils
import
initializeProduct
,
updateGlobals
import
sys
,
Permissions
this_module
=
sys
.
modules
[
__name__
]
document_classes
=
updateGlobals
(
this_module
,
globals
(),
permissions_module
=
Permissions
)
from
Tool
import
SMSTool
# Define object classes and tools
object_classes
=
()
portal_tools
=
(
SMSTool
.
SMSTool
,
)
content_classes
=
()
content_constructors
=
()
# Finish installation
def
initialize
(
context
):
import
Document
initializeProduct
(
context
,
this_module
,
globals
(),
document_module
=
Document
,
document_classes
=
document_classes
,
object_classes
=
object_classes
,
portal_tools
=
portal_tools
,
content_constructors
=
content_constructors
,
content_classes
=
content_classes
)
from
AccessControl.SecurityInfo
import
allow_module
allow_module
(
'Products.ERP5ShortMessage.Errors'
)
product/ERP5ShortMessage/dtml/explainSMSTool.dtml
0 → 100644
View file @
8b7fde47
<dtml-var manage_page_header>
<dtml-var manage_tabs>
<h3>Explain SMS Tool</h3>
<p>
SMS Tool provides all to send and receive sms with one or more sms gateway.
</p>
<p>
You need to have a SMS Gateway with reference egal to "default" to send sms.
Other reference can be used for specific send.
</p>
<dtml-var manage_page_footer>
product/ERP5ShortMessage/interfaces/__init__.py
0 → 100644
View file @
8b7fde47
product/ERP5ShortMessage/interfaces/sms_gateway.py
0 → 100644
View file @
8b7fde47
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2010 Nexedi SA and Contributors. All Rights Reserved.
# François-Xavier Algrain <fxalgrain@tiolive.com>
#
# 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
zope.interface
import
Interface
class
ISmsGateway
(
Interface
):
def
send
(
self
,
text
,
recipient
,
sender
=
None
,
sender_title
=
None
,
message_type
=
"text"
,
test
=
False
,
**
kw
):
"""Send a message."""
def
receive
(
self
,
REQUEST
):
"""Public handler to push notification from the gateway"""
def
getAllowedMessageType
(
self
):
"""List of all allowed message type when send a message."""
def
getMessageStatus
(
self
,
message_id
):
"""Retrive the status of a message
Should return x in ['sent', 'delivered', 'queued', 'failed']"""
\ No newline at end of file
product/ERP5ShortMessage/refresh.txt
0 → 100644
View file @
8b7fde47
product/ERP5ShortMessage/tool.png
0 → 100644
View file @
8b7fde47
287 Bytes
product/ERP5ShortMessage/version.txt
0 → 100644
View file @
8b7fde47
ERP5ShortMessage-0-0-1
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