Browse Source

insertion module V8 from AK

pull/128/head
Valentin Chemiere 7 years ago
committed by MonsieurB
parent
commit
4823d06c3f
  1. 69
      smsclient_core/README.rst
  2. 26
      smsclient_core/__init__.py
  3. 43
      smsclient_core/__openerp__.py
  4. 403
      smsclient_core/i18n/ar.po
  5. 410
      smsclient_core/i18n/ca.po
  6. 403
      smsclient_core/i18n/de.po
  7. 412
      smsclient_core/i18n/es.po
  8. 410
      smsclient_core/i18n/fr.po
  9. 403
      smsclient_core/i18n/pt_BR.po
  10. BIN
      smsclient_core/images/client.jpeg
  11. BIN
      smsclient_core/images/gateway.jpeg
  12. BIN
      smsclient_core/images/gateway_access.jpeg
  13. BIN
      smsclient_core/images/send_sms.jpeg
  14. BIN
      smsclient_core/images/sms.jpeg
  15. 8
      smsclient_core/security/groups.xml
  16. 4
      smsclient_core/security/ir.model.access.csv
  17. 4
      smsclient_core/security/ir.rule.csv
  18. 32
      smsclient_core/serveraction.py
  19. 22
      smsclient_core/serveraction_view.xml
  20. 266
      smsclient_core/sms_gateway.py
  21. 16
      smsclient_core/sms_gateway_data.xml
  22. 165
      smsclient_core/sms_gateway_view.xml
  23. 16
      smsclient_core/smstemplate.py
  24. 23
      smsclient_core/smstemplate_view.xml
  25. BIN
      smsclient_core/static/src/img/icon.png
  26. 22
      smsclient_core/wizard/__init__.py
  27. 97
      smsclient_core/wizard/mass_sms.py
  28. 55
      smsclient_core/wizard/mass_sms_view.xml

69
smsclient_core/README.rst

@ -0,0 +1,69 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:alt: License: AGPL-3
SMS client core
===============
This module provides base function to send sms. It is not meant to work alone and needs a least one provider module.
Installation
============
To install this module, you need to:
* Install a provider module after
Configuration
=============
To configure this module, you need to:
* Configure your provider account
Usage
=====
To use this module, you need to:
* got to partner menu
* select on or multiple partner
* go to more and will found some wizards to send sms
Known issues / Roadmap
======================
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/{project_repo}/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
`here <https://github.com/OCA/{project_repo}/issues/new?body=module:%20{module_name}%0Aversion:%20{version}%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits
=======
Contributors
------------
* Valentin Chemiere <valentin.chemiere@akretion.com>
* Yvan Party <yvan@julius.fr>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit http://odoo-community.org.

26
smsclient_core/__init__.py

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2013 Julius Network Solutions SARL <contact@julius.fr>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import sms_gateway
from . import serveraction
from . import wizard
from . import smstemplate

43
smsclient_core/__openerp__.py

@ -0,0 +1,43 @@
# coding: utf-8
# © 2004-2009 OpenERP SA (<http://openerp.com>)
# © 2011 SYLEAM (<http://syleam.fr/>)
# © 2013 Julius Network Solutions SARL <contact@julius.fr>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "SMS Client Core",
"version": "8.0.1",
"depends": ["base",
"email_template",
'base_phone',
'server_environment',
],
"author": "Julius Network Solutions,SYLEAM,OpenERP SA,Akretion,"
"Odoo Community Association (OCA)",
'images': [
'images/sms.jpeg',
'images/gateway.jpeg',
'images/gateway_access.jpeg',
'images/client.jpeg',
'images/send_sms.jpeg'
],
"summary": """
Sending SMSs very easily, individually or collectively.
""",
"website": "http://julius.fr",
"category": "Phone",
"demo": [],
"data": [
"security/groups.xml",
"security/ir.model.access.csv",
"security/ir.rule.csv",
"sms_gateway_view.xml",
"serveraction_view.xml",
"sms_gateway_data.xml",
"wizard/mass_sms_view.xml",
"smstemplate_view.xml"
],
"installable": True,
}

403
smsclient_core/i18n/ar.po

@ -0,0 +1,403 @@
# Arabic translation for openerp-gateway
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openerp-gateway package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-gateway\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-09-10 10:24+0000\n"
"PO-Revision-Date: 2011-11-21 12:03+0000\n"
"Last-Translator: kifcaliph <kifcaliph@hotmail.com>\n"
"Language-Team: Arabic <ar@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-11-22 05:44+0000\n"
"X-Generator: Launchpad (build 14299)\n"
#. module: gateway
#: selection:sms.gateway,method:0
msgid "SMPP Method"
msgstr ""
#. module: gateway
#: field:sms.gateway,property_ids:0
msgid "Parameters"
msgstr "المحددات"
#. module: gateway
#: field:sms.gateway,url:0
msgid "Gateway URL"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,sms:0
msgid "SMS"
msgstr "رسالة قصيرة (SMS)"
#. module: gateway
#: field:ir.actions.server,sms_server:0
msgid "SMS Server"
msgstr "خادم الـSMS"
#. module: gateway
#: field:sms.sms,msg:0
msgid "SMS Text"
msgstr ""
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:43
#, python-format
msgid "Gateway already verified!"
msgstr ""
#. module: gateway
#: field:sms.sms,name:0
msgid "SMS Request"
msgstr ""
#. module: gateway
#: wizard_view:sms.gateway.code.send,init:0
#: wizard_button:sms.gateway.code.send,init,send:0
msgid "Send Code"
msgstr ""
#. module: gateway
#: field:sms.gateway.parms,value:0
msgid "Property value"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
#: view:sms.sms:0
msgid "SMS Message"
msgstr "رسالة قصيرة (SMS)"
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Not Verified"
msgstr ""
#. module: gateway
#: help:sms.gateway.parms,type:0
msgid "If parameter concern a value to substitute, indicate it"
msgstr ""
#. module: gateway
#: selection:sms.sms,state:0
msgid "Sent"
msgstr "تم الإرسال"
#. module: gateway
#: help:sms.gateway.code.verify,init,code:0
msgid "Enter the verification code that you get in your verification sms"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway
msgid "SMS Client"
msgstr ""
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_send_code
msgid "Send Verification Code"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,name:0
msgid "Description"
msgstr "الوصف"
#. module: gateway
#: view:sms.gateway:0
msgid "Permission"
msgstr "الصلاحية"
#. module: gateway
#: help:sms.gateway.parms,value:0
msgid "Value associate on the property for the URL"
msgstr ""
#. module: gateway
#: field:sms.gateway,code:0
#: wizard_field:sms.gateway.code.verify,init,code:0
msgid "Verification Code"
msgstr ""
#. module: gateway
#: code:addons/gateway/wizard/sendcode.py:54
#, python-format
msgid "Verification Failed. Please check the Server Configuration!"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:72
#, python-format
msgid "This method is not implemented (%s)"
msgstr ""
#. module: gateway
#: help:sms.gateway.code.send,init,smsto:0
msgid ""
"Enter the Mobile No on which you want to receive the Verification Code"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:114
#, python-format
msgid "SMS Sent"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Recipient No"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,date_create:0
#: field:sms.sms,date_create:0
msgid "Date"
msgstr ""
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Waiting for Verification"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_parms
msgid "SMS Client Properties"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Password"
msgstr ""
#. module: gateway
#: field:sms.gateway,users_id:0
msgid "Users Allowed"
msgstr ""
#. module: gateway
#: help:sms.gateway.parms,name:0
msgid "Name of the property whom appear on the URL"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "User"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,user_id:0
msgid "Username"
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_queue
#: model:ir.actions.act_window,name:gateway.action_sms.sms_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_queue
#: view:sms.sms:0
msgid "Message Queue"
msgstr ""
#. module: gateway
#: view:sms.gateway.history:0
#: view:sms.sms:0
msgid "Gateway History"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_ir_actions_server
msgid "ir.actions.server"
msgstr ""
#. module: gateway
#: help:ir.actions.server,sms_server:0
msgid "Select the SMS Gateway configuration to use with this action"
msgstr ""
#. module: gateway
#: help:sms.gateway,body:0
msgid ""
"The message text that will be send along with the email which is send "
"through this server"
msgstr ""
#. module: gateway
#: wizard_button:sms.gateway.code.send,init,end:0
#: wizard_button:sms.gateway.code.verify,init,end:0
msgid "Cancel"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "Access Permission"
msgstr ""
#. module: gateway
#: help:sms.gateway,url:0
msgid "Base url for message"
msgstr ""
#. module: gateway
#: wizard_field:sms.gateway.code.send,init,smsto:0
#: field:sms.gateway.history,to:0
#: field:sms.sms,mobile:0
msgid "Mobile No"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:72
#: code:addons/gateway/wizard/sendcode.py:54
#: code:addons/gateway/wizard/verifycode.py:43
#: code:addons/gateway/wizard/verifycode.py:48
#: selection:sms.sms,state:0
#, python-format
msgid "Error"
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_history
msgid "SMS History"
msgstr ""
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:48
#, python-format
msgid "Verification failed. Invalid Verification Code!"
msgstr ""
#. module: gateway
#: selection:sms.sms,state:0
msgid "Queued"
msgstr ""
#. module: gateway
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server
msgid "Gateway List"
msgstr ""
#. module: gateway
#: field:sms.gateway,history_line:0
msgid "History"
msgstr ""
#. module: gateway
#: field:sms.gateway,method:0
#: field:sms.gateway.parms,type:0
msgid "API Method"
msgstr ""
#. module: gateway
#: field:sms.gateway,state:0
msgid "Gateway Status"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "Permission Error!"
msgstr ""
#. module: gateway
#: wizard_view:sms.gateway.code.verify,init:0
#: wizard_button:sms.gateway.code.verify,init,check:0
msgid "Verify Code"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Sender Name"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "Gateway Parameters"
msgstr ""
#. module: gateway
#: selection:sms.sms,state:0
msgid "Waiting"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "General"
msgstr ""
#. module: gateway
#: selection:sms.gateway,method:0
msgid "HTTP Method"
msgstr ""
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_verify_code
msgid "Verify SMS Gateway"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_history
msgid "SMS Client History"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms.sms
msgid "SMS Queue"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "You have no permission to access %s "
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_history_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_history
msgid "SMS Gateway History"
msgstr ""
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Verified"
msgstr ""
#. module: gateway
#: field:sms.gateway,name:0
msgid "Gateway Name"
msgstr ""
#. module: gateway
#: view:sms.sms:0
#: field:sms.sms,error:0
msgid "Last Error"
msgstr ""
#. module: gateway
#: field:sms.gateway,body:0
msgid "Message"
msgstr ""
#. module: gateway
#: field:sms.sms,state:0
msgid "Message Status"
msgstr ""
#. module: gateway
#: field:sms.gateway.parms,name:0
msgid "Property name"
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_server
#: view:sms.gateway:0
#: field:sms.gateway.history,gateway_id:0
#: field:sms.gateway.parms,gateway_id:0
#: field:sms.sms,gateway_id:0
msgid "SMS Gateway"
msgstr ""

410
smsclient_core/i18n/ca.po

@ -0,0 +1,410 @@
# Catalan translation for openerp-gateway
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openerp-gateway package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-gateway\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-09-10 10:24+0000\n"
"PO-Revision-Date: 2012-02-25 17:41+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: Catalan <ca@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-26 05:17+0000\n"
"X-Generator: Launchpad (build 14860)\n"
#. module: gateway
#: selection:sms.gateway,method:0
msgid "SMPP Method"
msgstr "Mètode SMPP"
#. module: gateway
#: field:sms.gateway,property_ids:0
msgid "Parameters"
msgstr "Paràmetres"
#. module: gateway
#: field:sms.gateway,url:0
msgid "Gateway URL"
msgstr "URL de la passarel·la"
#. module: gateway
#: field:sms.gateway.history,sms:0
msgid "SMS"
msgstr "SMS"
#. module: gateway
#: field:ir.actions.server,sms_server:0
msgid "SMS Server"
msgstr "Servidor SMS"
#. module: gateway
#: field:sms.sms,msg:0
msgid "SMS Text"
msgstr "Text del SMS"
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:43
#, python-format
msgid "Gateway already verified!"
msgstr "La passarel·la ja està verificada!"
#. module: gateway
#: field:sms.sms,name:0
msgid "SMS Request"
msgstr "Petició SMS"
#. module: gateway
#: wizard_view:sms.gateway.code.send,init:0
#: wizard_button:sms.gateway.code.send,init,send:0
msgid "Send Code"
msgstr "Envia codi"
#. module: gateway
#: field:sms.gateway.parms,value:0
msgid "Property value"
msgstr "Valor propietat"
#. module: gateway
#: selection:sms.gateway.parms,type:0
#: view:sms.sms:0
msgid "SMS Message"
msgstr "Missatge SMS"
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Not Verified"
msgstr "No verificat"
#. module: gateway
#: help:sms.gateway.parms,type:0
msgid "If parameter concern a value to substitute, indicate it"
msgstr "Si el paràmetre es refereix a un valor a substituir, indiqueu-lo."
#. module: gateway
#: selection:sms.sms,state:0
msgid "Sent"
msgstr "Enviat"
#. module: gateway
#: help:sms.gateway.code.verify,init,code:0
msgid "Enter the verification code that you get in your verification sms"
msgstr ""
"Introduïu el codi de verificació que heu rebut en el vostre SMS de "
"verificació."
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway
msgid "SMS Client"
msgstr "Client SMS"
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_send_code
msgid "Send Verification Code"
msgstr "Envia codi de verificació"
#. module: gateway
#: field:sms.gateway.history,name:0
msgid "Description"
msgstr "Descripció"
#. module: gateway
#: view:sms.gateway:0
msgid "Permission"
msgstr "Permís"
#. module: gateway
#: help:sms.gateway.parms,value:0
msgid "Value associate on the property for the URL"
msgstr "Valor associat a la propietat per la URL."
#. module: gateway
#: field:sms.gateway,code:0
#: wizard_field:sms.gateway.code.verify,init,code:0
msgid "Verification Code"
msgstr "Codi de verificació"
#. module: gateway
#: code:addons/gateway/wizard/sendcode.py:54
#, python-format
msgid "Verification Failed. Please check the Server Configuration!"
msgstr "Ha fallat la verificació. Comproveu la configuració del servidor!"
#. module: gateway
#: code:addons/gateway/gateway.py:72
#, python-format
msgid "This method is not implemented (%s)"
msgstr "Aquest mètode no està implementat (%s)"
#. module: gateway
#: help:sms.gateway.code.send,init,smsto:0
msgid ""
"Enter the Mobile No on which you want to receive the Verification Code"
msgstr "Introduïu el Nº de móbil a on voleu rebre el codi de verificació."
#. module: gateway
#: code:addons/gateway/gateway.py:114
#, python-format
msgid "SMS Sent"
msgstr "SMS enviat"
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Recipient No"
msgstr "Nº recepció"
#. module: gateway
#: field:sms.gateway.history,date_create:0
#: field:sms.sms,date_create:0
msgid "Date"
msgstr "Data"
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Waiting for Verification"
msgstr "Esperant verificació"
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_parms
msgid "SMS Client Properties"
msgstr "Propietats client SMS"
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Password"
msgstr "Contrasenya"
#. module: gateway
#: field:sms.gateway,users_id:0
msgid "Users Allowed"
msgstr "Usuaris permesos"
#. module: gateway
#: help:sms.gateway.parms,name:0
msgid "Name of the property whom appear on the URL"
msgstr "Nom de la propietat que apareix a la URL."
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "User"
msgstr "Usuari"
#. module: gateway
#: field:sms.gateway.history,user_id:0
msgid "Username"
msgstr "Nom d'usuari"
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_queue
#: model:ir.actions.act_window,name:gateway.action_sms.sms_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_queue
#: view:sms.sms:0
msgid "Message Queue"
msgstr "Cua de missatges"
#. module: gateway
#: view:sms.gateway.history:0
#: view:sms.sms:0
msgid "Gateway History"
msgstr "Historial de la passarel·la"
#. module: gateway
#: model:ir.model,name:gateway.model_ir_actions_server
msgid "ir.actions.server"
msgstr "ir.accions.servidor"
#. module: gateway
#: help:ir.actions.server,sms_server:0
msgid "Select the SMS Gateway configuration to use with this action"
msgstr ""
"Seleccioneu la configuració de la passarel·la SMS que s'utilitzarà amb "
"aquesta acció."
#. module: gateway
#: help:sms.gateway,body:0
msgid ""
"The message text that will be send along with the email which is send "
"through this server"
msgstr ""
"El text del missatge que serà enviat junt amb l'Email que és enviat "
"mitjançant aquest servidor."
#. module: gateway
#: wizard_button:sms.gateway.code.send,init,end:0
#: wizard_button:sms.gateway.code.verify,init,end:0
msgid "Cancel"
msgstr "Cancel·la"
#. module: gateway
#: view:sms.gateway:0
msgid "Access Permission"
msgstr "Permís d'accés"
#. module: gateway
#: help:sms.gateway,url:0
msgid "Base url for message"
msgstr "URL base pel missatge"
#. module: gateway
#: wizard_field:sms.gateway.code.send,init,smsto:0
#: field:sms.gateway.history,to:0
#: field:sms.sms,mobile:0
msgid "Mobile No"
msgstr "Núm. mòbil"
#. module: gateway
#: code:addons/gateway/gateway.py:72
#: code:addons/gateway/wizard/sendcode.py:54
#: code:addons/gateway/wizard/verifycode.py:43
#: code:addons/gateway/wizard/verifycode.py:48
#: selection:sms.sms,state:0
#, python-format
msgid "Error"
msgstr "Error"
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_history
msgid "SMS History"
msgstr "Historial SMS"
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:48
#, python-format
msgid "Verification failed. Invalid Verification Code!"
msgstr "Ha fallat la verificació. Codi de verificació invàlid!"
#. module: gateway
#: selection:sms.sms,state:0
msgid "Queued"
msgstr "En cua"
#. module: gateway
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server
msgid "Gateway List"
msgstr "Llista passarel·la"
#. module: gateway
#: field:sms.gateway,history_line:0
msgid "History"
msgstr "Historial"
#. module: gateway
#: field:sms.gateway,method:0
#: field:sms.gateway.parms,type:0
msgid "API Method"
msgstr "Mètode API"
#. module: gateway
#: field:sms.gateway,state:0
msgid "Gateway Status"
msgstr "Estat passarel·la"
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "Permission Error!"
msgstr "Error dels permisos!"
#. module: gateway
#: wizard_view:sms.gateway.code.verify,init:0
#: wizard_button:sms.gateway.code.verify,init,check:0
msgid "Verify Code"
msgstr "Verifica codi"
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Sender Name"
msgstr "Nom del remitent"
#. module: gateway
#: view:sms.gateway:0
msgid "Gateway Parameters"
msgstr "Paràmetres passarel·la"
#. module: gateway
#: selection:sms.sms,state:0
msgid "Waiting"
msgstr "En espera"
#. module: gateway
#: view:sms.gateway:0
msgid "General"
msgstr "General"
#. module: gateway
#: selection:sms.gateway,method:0
msgid "HTTP Method"
msgstr "Mètode HTTP"
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_verify_code
msgid "Verify SMS Gateway"
msgstr "Verifica passarel·la SMS"
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_history
msgid "SMS Client History"
msgstr "Historial client SMS"
#. module: gateway
#: model:ir.model,name:gateway.model_sms.sms
msgid "SMS Queue"
msgstr "Cua SMS"
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "You have no permission to access %s "
msgstr "No teniu permisos per accedir %s "
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_history_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_history
msgid "SMS Gateway History"
msgstr "Historial passarel·la SMS"
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Verified"
msgstr "Verificat"
#. module: gateway
#: field:sms.gateway,name:0
msgid "Gateway Name"
msgstr "Nom passarel·la"
#. module: gateway
#: view:sms.sms:0
#: field:sms.sms,error:0
msgid "Last Error"
msgstr "Últim error"
#. module: gateway
#: field:sms.gateway,body:0
msgid "Message"
msgstr "Missatge"
#. module: gateway
#: field:sms.sms,state:0
msgid "Message Status"
msgstr "Estat del missatge"
#. module: gateway
#: field:sms.gateway.parms,name:0
msgid "Property name"
msgstr "Nom de la propietat"
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_server
#: view:sms.gateway:0
#: field:sms.gateway.history,gateway_id:0
#: field:sms.gateway.parms,gateway_id:0
#: field:sms.sms,gateway_id:0
msgid "SMS Gateway"
msgstr "Passarel·la SMS"

403
smsclient_core/i18n/de.po

@ -0,0 +1,403 @@
# German translation for openerp-gateway
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openerp-gateway package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-gateway\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-09-10 10:24+0000\n"
"PO-Revision-Date: 2012-01-01 14:14+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-01-02 05:19+0000\n"
"X-Generator: Launchpad (build 14560)\n"
#. module: gateway
#: selection:sms.gateway,method:0
msgid "SMPP Method"
msgstr ""
#. module: gateway
#: field:sms.gateway,property_ids:0
msgid "Parameters"
msgstr ""
#. module: gateway
#: field:sms.gateway,url:0
msgid "Gateway URL"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,sms:0
msgid "SMS"
msgstr ""
#. module: gateway
#: field:ir.actions.server,sms_server:0
msgid "SMS Server"
msgstr ""
#. module: gateway
#: field:sms.sms,msg:0
msgid "SMS Text"
msgstr ""
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:43
#, python-format
msgid "Gateway already verified!"
msgstr ""
#. module: gateway
#: field:sms.sms,name:0
msgid "SMS Request"
msgstr ""
#. module: gateway
#: wizard_view:sms.gateway.code.send,init:0
#: wizard_button:sms.gateway.code.send,init,send:0
msgid "Send Code"
msgstr ""
#. module: gateway
#: field:sms.gateway.parms,value:0
msgid "Property value"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
#: view:sms.sms:0
msgid "SMS Message"
msgstr ""
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Not Verified"
msgstr ""
#. module: gateway
#: help:sms.gateway.parms,type:0
msgid "If parameter concern a value to substitute, indicate it"
msgstr ""
#. module: gateway
#: selection:sms.sms,state:0
msgid "Sent"
msgstr ""
#. module: gateway
#: help:sms.gateway.code.verify,init,code:0
msgid "Enter the verification code that you get in your verification sms"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway
msgid "SMS Client"
msgstr ""
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_send_code
msgid "Send Verification Code"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,name:0
msgid "Description"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "Permission"
msgstr ""
#. module: gateway
#: help:sms.gateway.parms,value:0
msgid "Value associate on the property for the URL"
msgstr ""
#. module: gateway
#: field:sms.gateway,code:0
#: wizard_field:sms.gateway.code.verify,init,code:0
msgid "Verification Code"
msgstr ""
#. module: gateway
#: code:addons/gateway/wizard/sendcode.py:54
#, python-format
msgid "Verification Failed. Please check the Server Configuration!"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:72
#, python-format
msgid "This method is not implemented (%s)"
msgstr ""
#. module: gateway
#: help:sms.gateway.code.send,init,smsto:0
msgid ""
"Enter the Mobile No on which you want to receive the Verification Code"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:114
#, python-format
msgid "SMS Sent"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Recipient No"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,date_create:0
#: field:sms.sms,date_create:0
msgid "Date"
msgstr ""
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Waiting for Verification"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_parms
msgid "SMS Client Properties"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Password"
msgstr ""
#. module: gateway
#: field:sms.gateway,users_id:0
msgid "Users Allowed"
msgstr ""
#. module: gateway
#: help:sms.gateway.parms,name:0
msgid "Name of the property whom appear on the URL"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "User"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,user_id:0
msgid "Username"
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_queue
#: model:ir.actions.act_window,name:gateway.action_sms.sms_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_queue
#: view:sms.sms:0
msgid "Message Queue"
msgstr ""
#. module: gateway
#: view:sms.gateway.history:0
#: view:sms.sms:0
msgid "Gateway History"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_ir_actions_server
msgid "ir.actions.server"
msgstr ""
#. module: gateway
#: help:ir.actions.server,sms_server:0
msgid "Select the SMS Gateway configuration to use with this action"
msgstr ""
#. module: gateway
#: help:sms.gateway,body:0
msgid ""
"The message text that will be send along with the email which is send "
"through this server"
msgstr ""
#. module: gateway
#: wizard_button:sms.gateway.code.send,init,end:0
#: wizard_button:sms.gateway.code.verify,init,end:0
msgid "Cancel"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "Access Permission"
msgstr ""
#. module: gateway
#: help:sms.gateway,url:0
msgid "Base url for message"
msgstr ""
#. module: gateway
#: wizard_field:sms.gateway.code.send,init,smsto:0
#: field:sms.gateway.history,to:0
#: field:sms.sms,mobile:0
msgid "Mobile No"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:72
#: code:addons/gateway/wizard/sendcode.py:54
#: code:addons/gateway/wizard/verifycode.py:43
#: code:addons/gateway/wizard/verifycode.py:48
#: selection:sms.sms,state:0
#, python-format
msgid "Error"
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_history
msgid "SMS History"
msgstr ""
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:48
#, python-format
msgid "Verification failed. Invalid Verification Code!"
msgstr ""
#. module: gateway
#: selection:sms.sms,state:0
msgid "Queued"
msgstr ""
#. module: gateway
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server
msgid "Gateway List"
msgstr ""
#. module: gateway
#: field:sms.gateway,history_line:0
msgid "History"
msgstr ""
#. module: gateway
#: field:sms.gateway,method:0
#: field:sms.gateway.parms,type:0
msgid "API Method"
msgstr ""
#. module: gateway
#: field:sms.gateway,state:0
msgid "Gateway Status"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "Permission Error!"
msgstr ""
#. module: gateway
#: wizard_view:sms.gateway.code.verify,init:0
#: wizard_button:sms.gateway.code.verify,init,check:0
msgid "Verify Code"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Sender Name"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "Gateway Parameters"
msgstr ""
#. module: gateway
#: selection:sms.sms,state:0
msgid "Waiting"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "General"
msgstr ""
#. module: gateway
#: selection:sms.gateway,method:0
msgid "HTTP Method"
msgstr ""
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_verify_code
msgid "Verify SMS Gateway"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_history
msgid "SMS Client History"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms.sms
msgid "SMS Queue"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "You have no permission to access %s "
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_history_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_history
msgid "SMS Gateway History"
msgstr ""
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Verified"
msgstr ""
#. module: gateway
#: field:sms.gateway,name:0
msgid "Gateway Name"
msgstr ""
#. module: gateway
#: view:sms.sms:0
#: field:sms.sms,error:0
msgid "Last Error"
msgstr ""
#. module: gateway
#: field:sms.gateway,body:0
msgid "Message"
msgstr ""
#. module: gateway
#: field:sms.sms,state:0
msgid "Message Status"
msgstr ""
#. module: gateway
#: field:sms.gateway.parms,name:0
msgid "Property name"
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_server
#: view:sms.gateway:0
#: field:sms.gateway.history,gateway_id:0
#: field:sms.gateway.parms,gateway_id:0
#: field:sms.sms,gateway_id:0
msgid "SMS Gateway"
msgstr ""

412
smsclient_core/i18n/es.po

@ -0,0 +1,412 @@
# Spanish translation for openerp-gateway
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openerp-gateway package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-gateway\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-09-10 10:24+0000\n"
"PO-Revision-Date: 2012-02-25 17:40+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-26 05:17+0000\n"
"X-Generator: Launchpad (build 14860)\n"
#. module: gateway
#: selection:sms.gateway,method:0
msgid "SMPP Method"
msgstr "Método SMPP"
#. module: gateway
#: field:sms.gateway,property_ids:0
msgid "Parameters"
msgstr "Parámetros"
#. module: gateway
#: field:sms.gateway,url:0
msgid "Gateway URL"
msgstr "URL de la pasarela"
#. module: gateway
#: field:sms.gateway.history,sms:0
msgid "SMS"
msgstr "SMS"
#. module: gateway
#: field:ir.actions.server,sms_server:0
msgid "SMS Server"
msgstr "Servidor SMS"
#. module: gateway
#: field:sms.sms,msg:0
msgid "SMS Text"
msgstr "Texto SMS"
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:43
#, python-format
msgid "Gateway already verified!"
msgstr "¡La pasarela ya está verificada!"
#. module: gateway
#: field:sms.sms,name:0
msgid "SMS Request"
msgstr "Petición SMS"
#. module: gateway
#: wizard_view:sms.gateway.code.send,init:0
#: wizard_button:sms.gateway.code.send,init,send:0
msgid "Send Code"
msgstr "Enviar código"
#. module: gateway
#: field:sms.gateway.parms,value:0
msgid "Property value"
msgstr "Valor propiedad"
#. module: gateway
#: selection:sms.gateway.parms,type:0
#: view:sms.sms:0
msgid "SMS Message"
msgstr "Mensaje SMS"
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Not Verified"
msgstr "No verificado"
#. module: gateway
#: help:sms.gateway.parms,type:0
msgid "If parameter concern a value to substitute, indicate it"
msgstr "Si el parámetro se refiere a un valor a sustituir, indíquelo."
#. module: gateway
#: selection:sms.sms,state:0
msgid "Sent"
msgstr "Enviado"
#. module: gateway
#: help:sms.gateway.code.verify,init,code:0
msgid "Enter the verification code that you get in your verification sms"
msgstr ""
"Introduzca el código de verificación que ha recibido en su SMS de "
"verificación."
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway
msgid "SMS Client"
msgstr "Cliente SMS"
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_send_code
msgid "Send Verification Code"
msgstr "Enviar código de verificación"
#. module: gateway
#: field:sms.gateway.history,name:0
msgid "Description"
msgstr "Descripción"
#. module: gateway
#: view:sms.gateway:0
msgid "Permission"
msgstr "Permiso"
#. module: gateway
#: help:sms.gateway.parms,value:0
msgid "Value associate on the property for the URL"
msgstr "Valor asociado a la propieda para la URL."
#. module: gateway
#: field:sms.gateway,code:0
#: wizard_field:sms.gateway.code.verify,init,code:0
msgid "Verification Code"
msgstr "Código de verificación"
#. module: gateway
#: code:addons/gateway/wizard/sendcode.py:54
#, python-format
msgid "Verification Failed. Please check the Server Configuration!"
msgstr ""
"Ha fallado la verificación. ¡Compruebe la configuración del servidor!"
#. module: gateway
#: code:addons/gateway/gateway.py:72
#, python-format
msgid "This method is not implemented (%s)"
msgstr "Este método no está implementado (%s)"
#. module: gateway
#: help:sms.gateway.code.send,init,smsto:0
msgid ""
"Enter the Mobile No on which you want to receive the Verification Code"
msgstr ""
"Introduzca el Nº de móvil en el que desea recibir el código de verificación."
#. module: gateway
#: code:addons/gateway/gateway.py:114
#, python-format
msgid "SMS Sent"
msgstr "SMS enviado"
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Recipient No"
msgstr "Nº recepción"
#. module: gateway
#: field:sms.gateway.history,date_create:0
#: field:sms.sms,date_create:0
msgid "Date"
msgstr "Fecha"
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Waiting for Verification"
msgstr "Esperando verificación"
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_parms
msgid "SMS Client Properties"
msgstr "Propiedades cliente SMS"
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Password"
msgstr "Contraseña"
#. module: gateway
#: field:sms.gateway,users_id:0
msgid "Users Allowed"
msgstr "Usuarios permitidos"
#. module: gateway
#: help:sms.gateway.parms,name:0
msgid "Name of the property whom appear on the URL"
msgstr "Nombre de la propiedad que aparece en la URL."
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "User"
msgstr "Usuario"
#. module: gateway
#: field:sms.gateway.history,user_id:0
msgid "Username"
msgstr "Nombre de usuario"
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_queue
#: model:ir.actions.act_window,name:gateway.action_sms.sms_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_queue
#: view:sms.sms:0
msgid "Message Queue"
msgstr "Cola de mensajes"
#. module: gateway
#: view:sms.gateway.history:0
#: view:sms.sms:0
msgid "Gateway History"
msgstr "Historial de la pasarela"
#. module: gateway
#: model:ir.model,name:gateway.model_ir_actions_server
msgid "ir.actions.server"
msgstr "ir.acciones.servidor"
#. module: gateway
#: help:ir.actions.server,sms_server:0
msgid "Select the SMS Gateway configuration to use with this action"
msgstr ""
"Seleccione la configuración de la pasarela SMS que se utilizará con esta "
"acción."
#. module: gateway
#: help:sms.gateway,body:0
msgid ""
"The message text that will be send along with the email which is send "
"through this server"
msgstr ""
"El texto del mensaje que será enviado junto con el Email que es enviado "
"mediante este servidor."
#. module: gateway
#: wizard_button:sms.gateway.code.send,init,end:0
#: wizard_button:sms.gateway.code.verify,init,end:0
msgid "Cancel"
msgstr "Cancelar"
#. module: gateway
#: view:sms.gateway:0
msgid "Access Permission"
msgstr "Permiso de acceso"
#. module: gateway
#: help:sms.gateway,url:0
msgid "Base url for message"
msgstr "URL base para el mensaje."
#. module: gateway
#: wizard_field:sms.gateway.code.send,init,smsto:0
#: field:sms.gateway.history,to:0
#: field:sms.sms,mobile:0
msgid "Mobile No"
msgstr "Núm. móvil"
#. module: gateway
#: code:addons/gateway/gateway.py:72
#: code:addons/gateway/wizard/sendcode.py:54
#: code:addons/gateway/wizard/verifycode.py:43
#: code:addons/gateway/wizard/verifycode.py:48
#: selection:sms.sms,state:0
#, python-format
msgid "Error"
msgstr "Error"
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_history
msgid "SMS History"
msgstr "Historial SMS"
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:48
#, python-format
msgid "Verification failed. Invalid Verification Code!"
msgstr "Ha fallado la verificación. ¡Código de verificación inválido!"
#. module: gateway
#: selection:sms.sms,state:0
msgid "Queued"
msgstr "En cola"
#. module: gateway
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server
msgid "Gateway List"
msgstr "Lista pasarela"
#. module: gateway
#: field:sms.gateway,history_line:0
msgid "History"
msgstr "Historial"
#. module: gateway
#: field:sms.gateway,method:0
#: field:sms.gateway.parms,type:0
msgid "API Method"
msgstr "Método API"
#. module: gateway
#: field:sms.gateway,state:0
msgid "Gateway Status"
msgstr "Estado pasarela"
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "Permission Error!"
msgstr "¡Error de los permisos!"
#. module: gateway
#: wizard_view:sms.gateway.code.verify,init:0
#: wizard_button:sms.gateway.code.verify,init,check:0
msgid "Verify Code"
msgstr "Verificar código"
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Sender Name"
msgstr "Nombre del remitente"
#. module: gateway
#: view:sms.gateway:0
msgid "Gateway Parameters"
msgstr "Parámetros pasarela"
#. module: gateway
#: selection:sms.sms,state:0
msgid "Waiting"
msgstr "En espera"
#. module: gateway
#: view:sms.gateway:0
msgid "General"
msgstr "General"
#. module: gateway
#: selection:sms.gateway,method:0
msgid "HTTP Method"
msgstr "Método HTTP"
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_verify_code
msgid "Verify SMS Gateway"
msgstr "Verificar pasarela SMS"
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_history
msgid "SMS Client History"
msgstr "Historial cliente SMS"
#. module: gateway
#: model:ir.model,name:gateway.model_sms.sms
msgid "SMS Queue"
msgstr "Cola SMS"
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "You have no permission to access %s "
msgstr "No tiene permisos para acceder %s "
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_history_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_history
msgid "SMS Gateway History"
msgstr "Historial pasarela SMS"
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Verified"
msgstr "Verificado"
#. module: gateway
#: field:sms.gateway,name:0
msgid "Gateway Name"
msgstr "Nombre pasarela"
#. module: gateway
#: view:sms.sms:0
#: field:sms.sms,error:0
msgid "Last Error"
msgstr "Último error"
#. module: gateway
#: field:sms.gateway,body:0
msgid "Message"
msgstr "Mensaje"
#. module: gateway
#: field:sms.sms,state:0
msgid "Message Status"
msgstr "Estado del mensaje"
#. module: gateway
#: field:sms.gateway.parms,name:0
msgid "Property name"
msgstr "Nombre de la propiedad"
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_server
#: view:sms.gateway:0
#: field:sms.gateway.history,gateway_id:0
#: field:sms.gateway.parms,gateway_id:0
#: field:sms.sms,gateway_id:0
msgid "SMS Gateway"
msgstr "Pasarela SMS"

410
smsclient_core/i18n/fr.po

@ -0,0 +1,410 @@
# French translation for openerp-gateway
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openerp-gateway package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-gateway\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-09-10 10:24+0000\n"
"PO-Revision-Date: 2011-09-10 12:22+0000\n"
"Last-Translator: Christophe Chauvet - http://www.syleam.fr/ <Unknown>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2011-09-11 05:02+0000\n"
"X-Generator: Launchpad (build 13900)\n"
#. module: gateway
#: selection:sms.gateway,method:0
msgid "SMPP Method"
msgstr "Methode SMPP"
#. module: gateway
#: field:sms.gateway,property_ids:0
msgid "Parameters"
msgstr "Paramètres"
#. module: gateway
#: field:sms.gateway,url:0
msgid "Gateway URL"
msgstr "URL de la passerelle"
#. module: gateway
#: field:sms.gateway.history,sms:0
msgid "SMS"
msgstr "SMS"
#. module: gateway
#: field:ir.actions.server,sms_server:0
msgid "SMS Server"
msgstr "Serveur de SMS"
#. module: gateway
#: field:sms.sms,msg:0
msgid "SMS Text"
msgstr "Texte du SMS"
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:43
#, python-format
msgid "Gateway already verified!"
msgstr "Cette passerelle a déjà été vérifié"
#. module: gateway
#: field:sms.sms,name:0
msgid "SMS Request"
msgstr "Requête par SMS"
#. module: gateway
#: wizard_view:sms.gateway.code.send,init:0
#: wizard_button:sms.gateway.code.send,init,send:0
msgid "Send Code"
msgstr "Envoyer le code"
#. module: gateway
#: field:sms.gateway.parms,value:0
msgid "Property value"
msgstr "Valeur de la propriété"
#. module: gateway
#: selection:sms.gateway.parms,type:0
#: view:sms.sms:0
msgid "SMS Message"
msgstr "Message SMS"
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Not Verified"
msgstr "Non vérifié"
#. module: gateway
#: help:sms.gateway.parms,type:0
msgid "If parameter concern a value to substitute, indicate it"
msgstr "Si le paramètre concerne une valeur à substituer, indiquer le"
#. module: gateway
#: selection:sms.sms,state:0
msgid "Sent"
msgstr "Envoyer"
#. module: gateway
#: help:sms.gateway.code.verify,init,code:0
msgid "Enter the verification code that you get in your verification sms"
msgstr ""
"Saisissez le code de vérification du SMS que vous avez reçu dans votre SMS "
"de vérification"
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway
msgid "SMS Client"
msgstr "Client SMS"
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_send_code
msgid "Send Verification Code"
msgstr "Envoyer le code de vérification"
#. module: gateway
#: field:sms.gateway.history,name:0
msgid "Description"
msgstr "Description"
#. module: gateway
#: view:sms.gateway:0
msgid "Permission"
msgstr "Permission"
#. module: gateway
#: help:sms.gateway.parms,value:0
msgid "Value associate on the property for the URL"
msgstr "Valeur associé à la propriété pour l'adresse"
#. module: gateway
#: field:sms.gateway,code:0
#: wizard_field:sms.gateway.code.verify,init,code:0
msgid "Verification Code"
msgstr "Code de vérifcation"
#. module: gateway
#: code:addons/gateway/wizard/sendcode.py:54
#, python-format
msgid "Verification Failed. Please check the Server Configuration!"
msgstr ""
"Échec de vérification. Merci de vérifier le serveur de configuration!"
#. module: gateway
#: code:addons/gateway/gateway.py:72
#, python-format
msgid "This method is not implemented (%s)"
msgstr "Cette méthode n'est pas implémentée (%s)"
#. module: gateway
#: help:sms.gateway.code.send,init,smsto:0
msgid ""
"Enter the Mobile No on which you want to receive the Verification Code"
msgstr ""
"Saisissez le numéro de mobile sur lequel vous souhaitez recevoir votre code "
"de vérification"
#. module: gateway
#: code:addons/gateway/gateway.py:114
#, python-format
msgid "SMS Sent"
msgstr "SMS envoyé"
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Recipient No"
msgstr "N° du destinataire"
#. module: gateway
#: field:sms.gateway.history,date_create:0
#: field:sms.sms,date_create:0
msgid "Date"
msgstr "Date"
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Waiting for Verification"
msgstr "En attente de vérification"
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_parms
msgid "SMS Client Properties"
msgstr "Propriétés du client SMS"
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Password"
msgstr "Mot de Passe"
#. module: gateway
#: field:sms.gateway,users_id:0
msgid "Users Allowed"
msgstr "Utilisateurs autorisés"
#. module: gateway
#: help:sms.gateway.parms,name:0
msgid "Name of the property whom appear on the URL"
msgstr "Nom de la propriété qui apparaîtra dans l'adresse"
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "User"
msgstr "Utilisateur"
#. module: gateway
#: field:sms.gateway.history,user_id:0
msgid "Username"
msgstr "Nom d’utilisateur"
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_queue
#: model:ir.actions.act_window,name:gateway.action_sms.sms_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_queue
#: view:sms.sms:0
msgid "Message Queue"
msgstr "File d'attente des messages"
#. module: gateway
#: view:sms.gateway.history:0
#: view:sms.sms:0
msgid "Gateway History"
msgstr "Historique de la passerelle"
#. module: gateway
#: model:ir.model,name:gateway.model_ir_actions_server
msgid "ir.actions.server"
msgstr "ir.actions.server"
#. module: gateway
#: help:ir.actions.server,sms_server:0
msgid "Select the SMS Gateway configuration to use with this action"
msgstr ""
"Sélectionner la configuration de la passerelle SMS à utiliser pour cette "
"action"
#. module: gateway
#: help:sms.gateway,body:0
msgid ""
"The message text that will be send along with the email which is send "
"through this server"
msgstr "Le message texte qui sera envoyé avec l'email envoyé par ce serveur"
#. module: gateway
#: wizard_button:sms.gateway.code.send,init,end:0
#: wizard_button:sms.gateway.code.verify,init,end:0
msgid "Cancel"
msgstr "Annuler"
#. module: gateway
#: view:sms.gateway:0
msgid "Access Permission"
msgstr "Droit d'accès"
#. module: gateway
#: help:sms.gateway,url:0
msgid "Base url for message"
msgstr "Adresse de base pour le message"
#. module: gateway
#: wizard_field:sms.gateway.code.send,init,smsto:0
#: field:sms.gateway.history,to:0
#: field:sms.sms,mobile:0
msgid "Mobile No"
msgstr "N° de portable"
#. module: gateway
#: code:addons/gateway/gateway.py:72
#: code:addons/gateway/wizard/sendcode.py:54
#: code:addons/gateway/wizard/verifycode.py:43
#: code:addons/gateway/wizard/verifycode.py:48
#: selection:sms.sms,state:0
#, python-format
msgid "Error"
msgstr "Erreur"
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_history
msgid "SMS History"
msgstr "Historique des SMS"
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:48
#, python-format
msgid "Verification failed. Invalid Verification Code!"
msgstr "Échec de vérification. Code de vérification non valide!"
#. module: gateway
#: selection:sms.sms,state:0
msgid "Queued"
msgstr "En file d'attente"
#. module: gateway
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server
msgid "Gateway List"
msgstr "Liste des passerelles"
#. module: gateway
#: field:sms.gateway,history_line:0
msgid "History"
msgstr "Historique"
#. module: gateway
#: field:sms.gateway,method:0
#: field:sms.gateway.parms,type:0
msgid "API Method"
msgstr "Méthode de l'API"
#. module: gateway
#: field:sms.gateway,state:0
msgid "Gateway Status"
msgstr "État de la passerelle"
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "Permission Error!"
msgstr "Erreur de permission !"
#. module: gateway
#: wizard_view:sms.gateway.code.verify,init:0
#: wizard_button:sms.gateway.code.verify,init,check:0
msgid "Verify Code"
msgstr "Code de vérification"
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Sender Name"
msgstr "Nom de l'expéditeur"
#. module: gateway
#: view:sms.gateway:0
msgid "Gateway Parameters"
msgstr "Paramètres de la passerelle"
#. module: gateway
#: selection:sms.sms,state:0
msgid "Waiting"
msgstr "En attente"
#. module: gateway
#: view:sms.gateway:0
msgid "General"
msgstr "Générale"
#. module: gateway
#: selection:sms.gateway,method:0
msgid "HTTP Method"
msgstr "Méthode HTTP"
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_verify_code
msgid "Verify SMS Gateway"
msgstr "Vérification de la passerelle SMS"
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_history
msgid "SMS Client History"
msgstr "Historique du client SMS"
#. module: gateway
#: model:ir.model,name:gateway.model_sms.sms
msgid "SMS Queue"
msgstr "File d'attente des SMS"
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "You have no permission to access %s "
msgstr "Vous n'avez pas le droit d'accès à %s "
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_history_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_history
msgid "SMS Gateway History"
msgstr "Historique de la passerelle SMS"
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Verified"
msgstr "Vérifié"
#. module: gateway
#: field:sms.gateway,name:0
msgid "Gateway Name"
msgstr "Nom de la passerelle"
#. module: gateway
#: view:sms.sms:0
#: field:sms.sms,error:0
msgid "Last Error"
msgstr "Dernière erreur"
#. module: gateway
#: field:sms.gateway,body:0
msgid "Message"
msgstr "Message"
#. module: gateway
#: field:sms.sms,state:0
msgid "Message Status"
msgstr "État du message"
#. module: gateway
#: field:sms.gateway.parms,name:0
msgid "Property name"
msgstr "Nom de la propriété"
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_server
#: view:sms.gateway:0
#: field:sms.gateway.history,gateway_id:0
#: field:sms.gateway.parms,gateway_id:0
#: field:sms.sms,gateway_id:0
msgid "SMS Gateway"
msgstr "Passerelle SMS"

403
smsclient_core/i18n/pt_BR.po

@ -0,0 +1,403 @@
# Brazilian Portuguese translation for openerp-gateway
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openerp-gateway package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openerp-gateway\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-09-10 10:24+0000\n"
"PO-Revision-Date: 2012-04-10 12:48+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-11 04:57+0000\n"
"X-Generator: Launchpad (build 15070)\n"
#. module: gateway
#: selection:sms.gateway,method:0
msgid "SMPP Method"
msgstr ""
#. module: gateway
#: field:sms.gateway,property_ids:0
msgid "Parameters"
msgstr ""
#. module: gateway
#: field:sms.gateway,url:0
msgid "Gateway URL"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,sms:0
msgid "SMS"
msgstr ""
#. module: gateway
#: field:ir.actions.server,sms_server:0
msgid "SMS Server"
msgstr ""
#. module: gateway
#: field:sms.sms,msg:0
msgid "SMS Text"
msgstr ""
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:43
#, python-format
msgid "Gateway already verified!"
msgstr ""
#. module: gateway
#: field:sms.sms,name:0
msgid "SMS Request"
msgstr ""
#. module: gateway
#: wizard_view:sms.gateway.code.send,init:0
#: wizard_button:sms.gateway.code.send,init,send:0
msgid "Send Code"
msgstr ""
#. module: gateway
#: field:sms.gateway.parms,value:0
msgid "Property value"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
#: view:sms.sms:0
msgid "SMS Message"
msgstr ""
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Not Verified"
msgstr ""
#. module: gateway
#: help:sms.gateway.parms,type:0
msgid "If parameter concern a value to substitute, indicate it"
msgstr ""
#. module: gateway
#: selection:sms.sms,state:0
msgid "Sent"
msgstr ""
#. module: gateway
#: help:sms.gateway.code.verify,init,code:0
msgid "Enter the verification code that you get in your verification sms"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway
msgid "SMS Client"
msgstr ""
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_send_code
msgid "Send Verification Code"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,name:0
msgid "Description"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "Permission"
msgstr ""
#. module: gateway
#: help:sms.gateway.parms,value:0
msgid "Value associate on the property for the URL"
msgstr ""
#. module: gateway
#: field:sms.gateway,code:0
#: wizard_field:sms.gateway.code.verify,init,code:0
msgid "Verification Code"
msgstr ""
#. module: gateway
#: code:addons/gateway/wizard/sendcode.py:54
#, python-format
msgid "Verification Failed. Please check the Server Configuration!"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:72
#, python-format
msgid "This method is not implemented (%s)"
msgstr ""
#. module: gateway
#: help:sms.gateway.code.send,init,smsto:0
msgid ""
"Enter the Mobile No on which you want to receive the Verification Code"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:114
#, python-format
msgid "SMS Sent"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Recipient No"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,date_create:0
#: field:sms.sms,date_create:0
msgid "Date"
msgstr ""
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Waiting for Verification"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_parms
msgid "SMS Client Properties"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Password"
msgstr ""
#. module: gateway
#: field:sms.gateway,users_id:0
msgid "Users Allowed"
msgstr ""
#. module: gateway
#: help:sms.gateway.parms,name:0
msgid "Name of the property whom appear on the URL"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "User"
msgstr ""
#. module: gateway
#: field:sms.gateway.history,user_id:0
msgid "Username"
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_queue
#: model:ir.actions.act_window,name:gateway.action_sms.sms_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_queue
#: view:sms.sms:0
msgid "Message Queue"
msgstr ""
#. module: gateway
#: view:sms.gateway.history:0
#: view:sms.sms:0
msgid "Gateway History"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_ir_actions_server
msgid "ir.actions.server"
msgstr ""
#. module: gateway
#: help:ir.actions.server,sms_server:0
msgid "Select the SMS Gateway configuration to use with this action"
msgstr ""
#. module: gateway
#: help:sms.gateway,body:0
msgid ""
"The message text that will be send along with the email which is send "
"through this server"
msgstr ""
#. module: gateway
#: wizard_button:sms.gateway.code.send,init,end:0
#: wizard_button:sms.gateway.code.verify,init,end:0
msgid "Cancel"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "Access Permission"
msgstr ""
#. module: gateway
#: help:sms.gateway,url:0
msgid "Base url for message"
msgstr ""
#. module: gateway
#: wizard_field:sms.gateway.code.send,init,smsto:0
#: field:sms.gateway.history,to:0
#: field:sms.sms,mobile:0
msgid "Mobile No"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:72
#: code:addons/gateway/wizard/sendcode.py:54
#: code:addons/gateway/wizard/verifycode.py:43
#: code:addons/gateway/wizard/verifycode.py:48
#: selection:sms.sms,state:0
#, python-format
msgid "Error"
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.act_sms_gateway_2_sms_history
msgid "SMS History"
msgstr ""
#. module: gateway
#: code:addons/gateway/wizard/verifycode.py:48
#, python-format
msgid "Verification failed. Invalid Verification Code!"
msgstr ""
#. module: gateway
#: selection:sms.sms,state:0
msgid "Queued"
msgstr ""
#. module: gateway
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server
msgid "Gateway List"
msgstr ""
#. module: gateway
#: field:sms.gateway,history_line:0
msgid "History"
msgstr ""
#. module: gateway
#: field:sms.gateway,method:0
#: field:sms.gateway.parms,type:0
msgid "API Method"
msgstr ""
#. module: gateway
#: field:sms.gateway,state:0
msgid "Gateway Status"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "Permission Error!"
msgstr ""
#. module: gateway
#: wizard_view:sms.gateway.code.verify,init:0
#: wizard_button:sms.gateway.code.verify,init,check:0
msgid "Verify Code"
msgstr ""
#. module: gateway
#: selection:sms.gateway.parms,type:0
msgid "Sender Name"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "Gateway Parameters"
msgstr ""
#. module: gateway
#: selection:sms.sms,state:0
msgid "Waiting"
msgstr ""
#. module: gateway
#: view:sms.gateway:0
msgid "General"
msgstr ""
#. module: gateway
#: selection:sms.gateway,method:0
msgid "HTTP Method"
msgstr ""
#. module: gateway
#: model:ir.actions.wizard,name:gateway.sms_gateway_verify_code
msgid "Verify SMS Gateway"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms_gateway_history
msgid "SMS Client History"
msgstr ""
#. module: gateway
#: model:ir.model,name:gateway.model_sms.sms
msgid "SMS Queue"
msgstr ""
#. module: gateway
#: code:addons/gateway/gateway.py:69
#, python-format
msgid "You have no permission to access %s "
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_history_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_sms_server_history
msgid "SMS Gateway History"
msgstr ""
#. module: gateway
#: selection:sms.gateway,state:0
msgid "Verified"
msgstr ""
#. module: gateway
#: field:sms.gateway,name:0
msgid "Gateway Name"
msgstr ""
#. module: gateway
#: view:sms.sms:0
#: field:sms.sms,error:0
msgid "Last Error"
msgstr ""
#. module: gateway
#: field:sms.gateway,body:0
msgid "Message"
msgstr ""
#. module: gateway
#: field:sms.sms,state:0
msgid "Message Status"
msgstr ""
#. module: gateway
#: field:sms.gateway.parms,name:0
msgid "Property name"
msgstr ""
#. module: gateway
#: model:ir.actions.act_window,name:gateway.action_sms_gateway_tree
#: model:ir.ui.menu,name:gateway.menu_gateway_administration_server
#: view:sms.gateway:0
#: field:sms.gateway.history,gateway_id:0
#: field:sms.gateway.parms,gateway_id:0
#: field:sms.sms,gateway_id:0
msgid "SMS Gateway"
msgstr ""

BIN
smsclient_core/images/client.jpeg

After

Width: 1301  |  Height: 359  |  Size: 43 KiB

BIN
smsclient_core/images/gateway.jpeg

After

Width: 1301  |  Height: 418  |  Size: 59 KiB

BIN
smsclient_core/images/gateway_access.jpeg

After

Width: 1301  |  Height: 413  |  Size: 56 KiB

BIN
smsclient_core/images/send_sms.jpeg

After

Width: 897  |  Height: 480  |  Size: 23 KiB

BIN
smsclient_core/images/sms.jpeg

After

Width: 1301  |  Height: 359  |  Size: 43 KiB

8
smsclient_core/security/groups.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="group_sms_user" model="res.groups">
<field name="name">SMS / User</field>
</record>
</data>
</openerp>

4
smsclient_core/security/ir.model.access.csv

@ -0,0 +1,4 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_sms_gateway_global","sms.gateway Global","model_sms_gateway",,1,0,0,0
"access_sms_sms_global","sms.sms Global","model_sms_sms",,1,0,0,0
"access_sms_sms_user","sms.sms User","model_sms_sms","group_sms_user",1,1,1,1

4
smsclient_core/security/ir.rule.csv

@ -0,0 +1,4 @@
id,name,model_id:id,groups:id,perm_read,perm_write,perm_create,perm_unlink,domain_force
edit_access_sms,Edit Access Sms,model_sms_sms,,True,True,True,True,"[('company_id','=', user.company_id.id)]"
edit_access_sms_gateway,Edit Access Sms Gateway,model_sms_gateway,,False,True,True,True,"[('company_id','=', user.company_id.id)]"
read_access_sms_gateway,Read Access Sms Gateway,model_sms_gateway,,True,False,False,False,"['|', '|', ('company_id','=', user.company_id.id),('company_id','child_of',[user.company_id.id]),('company_id','=',user.company_id.parent_id.id)]"

32
smsclient_core/serveraction.py

@ -0,0 +1,32 @@
# coding: utf-8
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2013 Julius Network Solutions SARL <contact@julius.fr>
# Copyright (C) 2015 Valentin Chemiere <valentin.chemiere@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
from openerp import models, fields
_logger = logging.getLogger('gateway')
class ServerAction(models.Model):
"""
Possibility to specify the SMS Gateway when configure this server action
"""
_inherit = 'ir.actions.server'
mobile = fields.Char(
string='Mobile No',
help="Field to be used to fetch the mobile number, e.g. you select"
" the invoice model and `object.invoice_address_id.mobile` "
"will be the field providing the correct mobile number.")
sms = fields.Char('SMS', size=160, translate=True)
sms_server = fields.Many2one(
'sms.gateway', string='SMS Server',
help='Select the SMS Gateway configuration to use with this action.')
sms_template_id = fields.Many2one(
'email.template', string='SMS Template',
help='Select the SMS Template configuration to use with this action.')

22
smsclient_core/serveraction_view.xml

@ -0,0 +1,22 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="view_server_statistics_graph">
<field name="name">ir.actions.server.form.inherit</field>
<field name="model">ir.actions.server</field>
<field name="inherit_id" ref="base.view_server_action_form"/>
<field name="arch" type="xml">
<page name="code" position="after" autofocus="autofocus">
<page string="SMS" name="sms" attrs="{'invisible': [('state', '!=', 'sms')]}">
<group>
<field name="sms"/>
<field name="mobile"/>
<field name="sms_server" invisible="1"/>
<field name="sms_template_id" domain="[('sms_template','=',True)]" attrs="{'required':[('state','=','sms')]}"/>
</group>
</page>
</page>
</field>
</record>
</data>
</openerp>

266
smsclient_core/sms_gateway.py

@ -0,0 +1,266 @@
# coding: utf-8
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2011 SYLEAM (<http://syleam.fr/>)
# Copyright (C) 2013 Julius Network Solutions SARL <contact@julius.fr>
# Copyright (C) 2015 Valentin Chemiere <valentin.chemiere@akretion.com>
# Copyright (C) 2015 Sébastien BEAU <sebastien.beau@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
from openerp import models, fields, api, _
from openerp.addons.server_environment import serv_config
_logger = logging.getLogger(__name__)
PRIORITY_LIST = [
('0', '0'),
('1', '1'),
('2', '2'),
('3', '3')
]
CLASSES_LIST = [
('0', 'Flash'),
('1', 'Phone display'),
('2', 'SIM'),
('3', 'Toolkit')
]
class SMSClient(models.Model):
_name = 'sms.gateway'
_description = 'SMS Client'
@api.model
def get_method(self):
return []
@api.multi
def _get_provider_conf(self):
for sms_provider in self:
global_section_name = 'sms_provider'
config_vals = {}
if serv_config.has_section(global_section_name):
config_vals.update(serv_config.items(global_section_name))
custom_section_name = '.'.join((global_section_name,
sms_provider.name))
if serv_config.has_section(custom_section_name):
config_vals.update(serv_config.items(custom_section_name))
for key in config_vals:
sms_provider[key] = config_vals[key]
name = fields.Char('Gateway Name', required=True)
url = fields.Char(
string='Gateway URL', compute='_get_provider_conf',
help='Base url for message')
url_visible = fields.Boolean(default=False)
method = fields.Selection(
string='API Method',
selection='get_method')
state = fields.Selection([
('new', 'Not Verified'),
('waiting', 'Waiting for Verification'),
('confirm', 'Verified'),
], 'Gateway Status', index=True, readonly=True, default='new')
user_ids = fields.Many2many(
'res.users',
string='Users Allowed')
sms_account = fields.Char(compute='_get_provider_conf')
sms_account_visible = fields.Boolean(default=False)
login_provider = fields.Char(compute='_get_provider_conf')
login_provider_visible = fields.Boolean(default=False)
password_provider = fields.Char(compute='_get_provider_conf')
password_provider_visible = fields.Boolean(default=False)
from_provider = fields.Char(compute='_get_provider_conf')
from_provider_visible = fields.Boolean(default=False)
code = fields.Char('Verification Code')
code_visible = fields.Boolean(default=False)
body = fields.Text(
string='Message',
help="The message text that will be send along with the"
" email which is send through this server.")
validity = fields.Integer(
default=10,
help="The maximum time - in minute(s) - before the message "
"is dropped.")
validity_visible = fields.Boolean(default=False)
classes = fields.Selection(
CLASSES_LIST, 'Class',
default='1',
help='The SMS class: flash(0),phone display(1),SIM(2),toolkit(3)')
classes_visible = fields.Boolean(default=False)
deferred = fields.Integer(
default=0,
help='The time -in minute(s)- to wait before sending the message.')
deferred_visible = fields.Boolean(default=False)
priority = fields.Selection(
PRIORITY_LIST, string='Priority', default='3',
help='The priority of the message')
priority_visible = fields.Boolean(default=False)
coding = fields.Selection([
('1', '7 bit'),
('2', 'Unicode')
], 'Coding',
help='The SMS coding: 1 for 7 bit (160 chracters max'
'lenght) or 2 for unicode (70 characters max'
'lenght)',
default='1'
)
coding_visible = fields.Boolean(default=False)
tag = fields.Char('Tag', help='an optional tag')
tag_visible = fields.Boolean(default=False)
nostop = fields.Boolean(
default=True,
help='Do not display STOP clause in the message, this requires that '
'this is not an advertising message.')
nostop_visible = fields.Boolean(default=False)
char_limit = fields.Boolean('Character Limit', default=True)
char_limit_visible = fields.Boolean(default=False)
default_gateway = fields.Boolean(default=False)
company_id = fields.Many2one('res.company')
@api.onchange('method')
def onchange_method(self):
if not self.method:
self.url_visible = False
self.sms_account_visible = False
self.login_provider_visible = False
self.password_provider_visible = False
self.from_provider_visible = False
self.validity_visible = False
self.classes_visible = False
self.deferred_visible = False
self.nostop_visible = False
self.priority_visible = False
self.coding_visible = False
self.tag_visible = False
self.char_limit_visible = False
@api.multi
def _check_permissions(self):
self.ensure_one()
if self.env.uid not in self.sudo().user_ids.ids:
return False
return True
@api.model
def _run_send_sms(self, domain=None):
if domain is None:
domain = []
domain.append(('state', '=', 'draft'))
sms = self.env['sms.sms'].search(domain)
return sms.send()
class SmsSms(models.Model):
_name = 'sms.sms'
_description = 'SMS'
_rec_name = 'mobile'
message = fields.Text(
size=256,
required=True,
readonly=True,
states={'draft': [('readonly', False)]})
mobile = fields.Char(
required=True,
readonly=True,
states={'draft': [('readonly', False)]})
gateway_id = fields.Many2one(
'sms.gateway',
'SMS Gateway',
readonly=True,
states={'draft': [('readonly', False)]})
state = fields.Selection([
('draft', 'Queued'),
('sent', 'Sent'),
('cancel', 'Cancel'),
('error', 'Error'),
], 'Message Status',
select=True,
readonly=True,
default='draft')
error = fields.Text(
'Last Error',
size=256,
readonly=True,
states={'draft': [('readonly', False)]})
validity = fields.Integer(
'Validity',
readonly=True,
states={'draft': [('readonly', False)]},
help='The maximum time -in minute(s)- before the message is dropped.')
classes = fields.Selection(
readonly=True,
states={'draft': [('readonly', False)]},
selection=CLASSES_LIST,
help='The sms class: flash(0), phone display(1), SIM(2), toolkit(3)')
deferred = fields.Integer(
readonly=True,
states={'draft': [('readonly', False)]},
help='The time -in minute(s)- to wait before sending the message.')
priority = fields.Selection(
readonly=True,
states={'draft': [('readonly', False)]},
selection=PRIORITY_LIST,
help='The priority of the message ')
coding = fields.Selection([
('1', '7 bit'),
('2', 'Unicode')
], readonly=True,
states={'draft': [('readonly', False)]},
help='The sms coding: 1 for 7 bit or 2 for unicode')
tag = fields.Char(
size=256,
readonly=True,
states={'draft': [('readonly', False)]},
help='An optional tag')
nostop = fields.Boolean(
'NoStop',
readonly=True,
states={'draft': [('readonly', False)]},
help='Do not display STOP clause in the message, this requires that'
'this is not an advertising message.')
partner_id = fields.Many2one(
'res.partner',
readonly=True,
states={'draft': [('readonly', False)]},
string='Partner')
company_id = fields.Many2one(
'res.company',
readonly=True,
states={'draft': [('readonly', False)]})
@api.onchange('partner_id')
def onchange_partner_id(self):
self.mobile = self.partner_id.mobile
@api.multi
def send(self):
for sms in self:
if sms.gateway_id.char_limit and len(sms.message) > 160:
sms.write({
'state': 'error',
'error': _('Size of SMS should not be more then 160 char'),
})
if not hasattr(sms, "_send_%s" % sms.gateway_id.method):
raise NotImplemented
else:
try:
with sms._cr.savepoint():
getattr(sms, "_send_%s" % sms.gateway_id.method)()
sms.write({'state': 'sent', 'error': ''})
except Exception, e:
_logger.error('Failed to send sms %s', e)
sms.write({'error': e, 'state': 'error'})
sms._cr.commit()
return True
@api.multi
def cancel(self):
self.write({'state': 'cancel'})
@api.multi
def retry(self):
self.write({'state': 'draft'})

16
smsclient_core/sms_gateway_data.xml

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data noupdate="1">
<record id="ir_cron_crm_action" model="ir.cron">
<field name="name">Send SMS</field>
<field name="interval_number">1</field>
<field name="interval_type">minutes</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall"/>
<field eval="'sms.gateway'" name="model"/>
<field eval="'_run_send_sms'" name="function"/>
<field eval="'()'" name="args"/>
<field name="active" eval="False"/>
</record>
</data>
</openerp>

165
smsclient_core/sms_gateway_view.xml

@ -0,0 +1,165 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- ************************************************************** -->
<!-- ** SMS Gateway list ****************************************** -->
<!-- ************************************************************** -->
<record model="ir.ui.view" id="sms_gateway_form">
<field name="model">sms.gateway</field>
<field name="priority" eval="8"/>
<field name="arch" type="xml">
<form string="SMS Gateway">
<sheet>
<group col="2">
<h1><field name="name" nolabel="1" placeholder="Name" colspan="2"/></h1>
<field name="method" nolabel="1" placeholder="Method" colspan="2"/>
<field name="default_gateway"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<notebook colspan="4">
<page string="General">
<group col="4">
<field name="url" colspan="4" attrs="{'invisible': [('url_visible', '=', False),]}"/>
<field name="url_visible" invisible="1"/>
<field name="sms_account" attrs="{'invisible': [('sms_account_visible', '=', False),]}"/>
<field name="sms_account_visible" invisible="1"/>
<field name="login_provider" attrs="{'invisible': [('login_provider_visible', '=', False),]}"/>
<field name="login_provider_visible" invisible="1"/>
<field name="password_provider" attrs="{'invisible': [('password_provider_visible', '=', False),]}"/>
<field name="password_provider_visible" invisible="1"/>
<field name="from_provider" attrs="{'invisible': [('from_provider_visible', '=', False),]}"/>
<field name="from_provider_visible" invisible="1"/>
<field name="state"/>
</group>
</page>
<page string="Permission">
<separator string="Access Permission"
colspan="4" />
<field name="user_ids" colspan="4" nolabel="1"/>
</page>
<page string="Additional option">
<group>
<group>
<field name="validity" attrs="{'invisible': [('validity_visible', '=', False),]}"/>
<field name="validity_visible" invisible="1"/>
<field name="classes" attrs="{'invisible': [('classes_visible', '=', False),]}"/>
<field name="classes_visible" invisible="1"/>
<field name="deferred" attrs="{'invisible': [('deferred_visible', '=', False),]}"/>
<field name="deferred_visible" invisible="1"/>
<field name="nostop" attrs="{'invisible': [('nostop_visible', '=', False),]}"/>
<field name="nostop_visible" invisible="1"/>
</group>
<group>
<field name="priority" attrs="{'invisible': [('priority_visible', '=', False),]}"/>
<field name="priority_visible" invisible="1"/>
<field name="coding" attrs="{'invisible': [('coding_visible', '=', False),]}"/>
<field name="coding_visible" invisible="1"/>
<field name="tag" attrs="{'invisible': [('tag_visible', '=', False),]}"/>
<field name="tag_visible" invisible="1"/>
<field name="char_limit" attrs="{'invisible': [('char_limit_visible', '=', False),]}"/>
<field name="char_limit_visible" invisible="1"/>
</group>
</group>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record model="ir.ui.view" id="sms_gateway_tree">
<field name="model">sms.gateway</field>
<field name="priority" eval="8"/>
<field name="arch" type="xml">
<tree string="SMS Gateways">
<field name="name"/>
<field name="method"/>
<field name="url"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_sms_gateway_tree">
<field name="name">SMS Gateway</field>
<field name="res_model">sms.gateway</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree</field>
<field name="view_id" ref="sms_gateway_tree" />
</record>
<menuitem name="SMS Gateway"
id="menu_gateway_administration_sms_server"
sequence="100"
parent="base_phone.menu_config_phone"
action="action_sms_gateway_tree"/>
<record model="ir.ui.view" id="sms_sms_tree">
<field name="model">sms.sms</field>
<field name="arch" type="xml">
<tree string="Sms">
<field name="create_date"/>
<field name="mobile"/>
<field name="message"/>
<field name="state"/>
<field name="gateway_id"/>
<button string="Send" states="draft" type="object" name="send" icon="gtk-ok"/>
<button string="Retry" states="error" type="object" name="retry" icon="gtk-redo"/>
<button string="Cancel" states="draft,error" type="object" name="cancel" icon="terp-gtk-stop"/>
<field name="state"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="sms_sms_form">
<field name="model">sms.sms</field>
<field name="arch" type="xml">
<form string="Sms">
<header>
<button string="Send" states="draft" type="object" name="send"/>
<button string="Retry" states="error" type="object" name="retry"/>
<button string="Cancel" states="draft,error" type="object" name="cancel"/>
<field name="state" widget="statusbar" statusbar_visible="draft,send"/>
</header>
<sheet>
<label for="partner_id" class="oe_edit_only"/>
<h1><field name="partner_id"/></h1>
<label for="mobile" class="oe_edit_only"/>
<h1><field name="mobile"/></h1>
<group>
<field name="create_date" readonly="True"/>
<field name="gateway_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<separator string="SMS Message" colspan="4"/>
<field name="message" colspan="4" nolabel="1"/>
<separator string="Last Error" colspan="4"/>
<field name="error" colspan="4" nolabel="1"/>
</group>
</sheet>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_sms_sms_tree">
<field name="name">Sms</field>
<field name="res_model">sms.sms</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree</field>
<field name="view_id" ref="sms_sms_tree" />
</record>
<menuitem name="SMS Message"
id="menu_gateway_administration_sms"
sequence="110"
parent="base_phone.menu_config_phone"
action="action_sms_sms_tree"/>
<act_window context="{'gateway_id': active_id}"
domain="[('gateway_id', '=', active_id)]"
id="act_sms_gateway_2_sms"
name="Sms Message"
res_model="sms.sms"
src_model="sms.gateway"/>
</data>
</openerp>

16
smsclient_core/smstemplate.py

@ -0,0 +1,16 @@
# coding: utf-8
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2013 Julius Network Solutions SARL <contact@julius.fr>
# Copyright (C) 2015 Valentin Chemiere <valentin.chemiere@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import models, fields
class email_template(models.Model):
_inherit = "email.template"
sms_template = fields.Boolean('SMS Template')
mobile_to = fields.Char('To (Mobile)')
gateway_id = fields.Many2one('sms.gateway', 'SMS Gateway')

23
smsclient_core/smstemplate_view.xml

@ -0,0 +1,23 @@
<?xml version="1.0"?>
<openerp>
<data>
<!-- ************************************************************** -->
<!-- ** SMS Template ****************************************** -->
<!-- ************************************************************** -->
<record model="ir.ui.view" id="email_template_form">
<field name="name">email.template.form</field>
<field name="model">email.template</field>
<field name="inherit_id" ref="email_template.email_template_form"/>
<field name="arch" type="xml">
<field name="email_to" position="after">
<field name="mobile_to"/>
</field>
<field name="lang" position="before">
<field name="sms_template"/>
<field name="gateway_id"/>
</field>
</field>
</record>
</data>
</openerp>

BIN
smsclient_core/static/src/img/icon.png

After

Width: 224  |  Height: 225  |  Size: 34 KiB

22
smsclient_core/wizard/__init__.py

@ -0,0 +1,22 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>)
# Copyright (C) 2013 Julius Network Solutions SARL <contact@julius.fr>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
#
##############################################################################
from . import mass_sms

97
smsclient_core/wizard/mass_sms.py

@ -0,0 +1,97 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>)
# Copyright (C) 2013 Julius Network Solutions SARL <contact@julius.fr>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
#
##############################################################################
from openerp import models, fields, api
class WizardSendSms(models.TransientModel):
_name = 'wizard.send.sms'
@api.model
def _default_get_gateway(self):
return self.env['sms.gateway'].search([], limit=1).id
@api.model
def _default_get_partner(self):
if self._context.get('active_model') == 'res.partner':
return self._context.get('active_ids')
@api.onchange('gateway_id')
def onchange_gateway_mass(self):
for key in ['validity', 'classes', 'deferred', 'priority',
'coding', 'tag', 'nostop']:
self[key] = self.gateway_id[key]
@api.model
def _prepare_sms_vals(self, partner):
return {
'gateway_id': self.gateway_id.id,
'state': 'draft',
'message': self.message,
'validity': self.validity,
'classes': self.classes,
'deferred': self.deferred,
'priority': self.priority,
'coding': self.coding,
'tag': self.tag,
'nostop': self.nostop,
'partner_id': partner.id,
'mobile': partner.mobile,
}
@api.multi
def send(self):
sms_obj = self.env['sms.sms']
partner_obj = self.env['res.partner']
for partner in partner_obj.browse(self._context.get('active_ids')):
vals = self._prepare_sms_vals(partner)
sms_obj.create(vals)
gateway_id = fields.Many2one(
'sms.gateway',
required=True,
default=_default_get_gateway)
message = fields.Text(required=True)
validity = fields.Integer(
help='The maximum time -in minute(s)- before the message is dropped')
classes = fields.Selection([
('0', 'Flash'),
('1', 'Phone display'),
('2', 'SIM'),
('3', 'Toolkit'),
], help='The sms class: flash(0),phone display(1),SIM(2),toolkit(3)')
deferred = fields.Integer(
help='The time -in minute(s)- to wait before sending the message')
priority = fields.Selection([
('0', '0'),
('1', '1'),
('2', '2'),
('3', '3')
], help='The priority of the message')
coding = fields.Selection([
('1', '7 bit'),
('2', 'Unicode')
], help='The sms coding: 1 for 7 bit or 2 for unicode')
tag = fields.Char(size=256, help='An optional tag')
nostop = fields.Boolean(
help='Do not display STOP clause in the message, this requires that '
'this is not an advertising message')
partner_ids = fields.Many2many('res.partner', default=_default_get_partner)

55
smsclient_core/wizard/mass_sms_view.xml

@ -0,0 +1,55 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="view_wizard_send_sms">
<field name="model">wizard.send.sms</field>
<field name="arch" type="xml">
<form string="SMS Gateway - Sens SMS" version="7.0">
<group string="Gateway" colspan="4">
<field name="gateway_id"/>
</group>
<notebook>
<page string="Message">
<field name="message" colspan="4" nolabel="1"/>
<!-- TODO limit to 10 the number of partner to show -->
<field name="partner_ids" colspan="4" nolabel="1">
<tree options="{'limit': 10}">
<field name="name"/>
<field name="mobile"/>
</tree>
</field>
</page>
<page string="Additional option">
<group>
<group>
<field name="validity"/>
<field name="classes"/>
<field name="deferred"/>
<field name="nostop"/>
</group>
<group>
<field name="priority"/>
<field name="coding"/>
<field name="tag"/>
</group>
</group>
</page>
</notebook>
<footer>
<button string="Send SMS" name="send" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<act_window name="Send an SMS"
res_model="wizard.send.sms"
src_model="res.partner"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_wizard_send_sms" />
</data>
</openerp>
Loading…
Cancel
Save