Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5_fork
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
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Eteri
erp5_fork
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
Hide 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