Commit e9244759 董杰

0723

1 个父辈 bd62eccd
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from . import models from . import models
from . import report
\ No newline at end of file \ No newline at end of file
from . import report
from . import wizard
\ No newline at end of file \ No newline at end of file
...@@ -32,5 +32,7 @@ ...@@ -32,5 +32,7 @@
'report/purchase_invoice_report_views.xml', 'report/purchase_invoice_report_views.xml',
'views/base_menu.xml', 'views/base_menu.xml',
'views/report_menu.xml', 'views/report_menu.xml',
'wizard/update_date_view.xml',
], ],
} }
\ No newline at end of file \ No newline at end of file
...@@ -57,9 +57,21 @@ ...@@ -57,9 +57,21 @@
<!-- <xpath expr="//button[@name='action_invoice_open']" position="before"> <!-- <xpath expr="//button[@name='action_invoice_open']" position="before">
<button name="teller_accept" string="出纳审核" type="object" states="open" class="oe_highlight" groups="acct_base.acc_account_user_group"/> <button name="teller_accept" string="出纳审核" type="object" states="open" class="oe_highlight" groups="acct_base.acc_account_user_group"/>
</xpath> --> </xpath> -->
<xpath expr="//button[@name='action_invoice_sent'][1]" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//button[@name='action_invoice_sent'][2]" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//button[@name='preview_invoice']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
<xpath expr="//button[@name='action_invoice_open']" position="before"> <xpath expr="//button[@name='action_invoice_open']" position="before">
<button name="boss_accept" string="财务审核" type="object" states="teller" class="oe_highlight" groups="acct_base.acc_account_user_group"/> <button name="boss_accept" string="财务审核" type="object" states="teller" class="oe_highlight" groups="acct_base.acc_account_user_group"/>
</xpath> </xpath>
<xpath expr="//button[@name='action_invoice_open']" position="before">
<button name="%(update_date_wizard)d" states="open" type="action" string="更新到期日期" class="oe_highlight"/>
</xpath>
<xpath expr="//button[@name='action_invoice_open']" position="after"> <xpath expr="//button[@name='action_invoice_open']" position="after">
<button name="add_sale_discount_line" string="添加折扣" type="object" states="draft" class="oe_highlight" groups="base.group_user"/> <button name="add_sale_discount_line" string="添加折扣" type="object" states="draft" class="oe_highlight" groups="base.group_user"/>
</xpath> </xpath>
...@@ -90,25 +102,32 @@ ...@@ -90,25 +102,32 @@
</tree> </tree>
</field> </field>
<group class="oe_subtotal_footer oe_right"> <group class="oe_subtotal_footer oe_right">
<field name="invoice_acc_total" nolabel="1" widget="monetary" options="{'currency_field': 'currency_id'}" class="oe_subtotal_footer_separator" /> <field name="invoice_acc_total" nolabel="1" widget="monetary" options="{'currency_field': 'currency_id'}" class="oe_subtotal_footer_separator"/>
</group> </group>
</page> </page>
</xpath> </xpath>
</field> </field>
</record> </record>
<!-- account.invoice tree视图 --> <!-- 账单增加搜索条件视图 -->
<!-- <record model="ir.ui.view" id="account_invoice_acc_tree_view"> <record id="acc_account_invoice_search_inherit_view" model="ir.ui.view">
<field name="name">account.invoice.acc.tree</field> <field name="name">acc.account.invoice.search</field>
<field name="model">account.invoice</field> <field name="model">account.invoice</field>
<field name="inherit_id" ref="product.product_template_tree_view"/> <field name="mode">primary</field>
<field name="inherit_id" ref="account.view_account_invoice_filter"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<field name="name" position="after"> <xpath expr="//field[@name='user_id']" position="after">
<field name="internal_des"/> <separator/>
<field name="partner_code"/> <!-- <filter name="state" string="未到货" domain="[('state','=', 'draft')]"/> -->
<field name="product_model"/> <!-- <filter string="My Activities" name="activities_my" domain="[('activity_ids.user_id', '=', uid)]"/>
</field> <separator/> -->
<filter string="逾期账单" name="activities_overdue" domain="[('date_due', '&lt;', context_today().strftime('%Y-%m-%d'))]"/>
<filter string="今日到期账单" name="activities_today" domain="[('date_due', '=', context_today().strftime('%Y-%m-%d'))]"/>
<filter string="本月到期账单" name="month"
domain="[('date_due','&gt;=', time.strftime('%Y-%m-01')),('date_due','&lt;', (context_today() + relativedelta(months=1)).strftime('%Y-%m-01') ) ]"/>
<!-- <filter string="Future Activities" name="activities_upcoming_all" domain="[('activity_ids.date_deadline', '&gt;', context_today().strftime('%Y-%m-%d')) ]"/> -->
</xpath>
</field> </field>
</record> --> </record>
</data> </data>
</openerp> </openerp>
# -*- coding: utf-8 -*-
from . import update_date
\ No newline at end of file \ No newline at end of file
#coding=utf-8
from odoo import models,fields,api, _
import datetime
import logging
from odoo.exceptions import UserError, ValidationError
_logger = logging.getLogger(__name__)
class UpdateDate(models.TransientModel):
_name = "update.date"
date_due = fields.Date(string='到期日期',required=True)
@api.multi
def update_date_due(self):
date_due = self.date_due
context = dict(self._context or {})
active_id = context.get('active_id', False)
# if active_id:
# before_model = self.env['before.purchase'].browse(active_id)
# for line in before_model.order_line:
# if line.brand == brand:
# line.write()
if active_id:
active_model = self.env['account.invoice'].browse(active_id)
# cr = self.env.cr
# cr.execute("""
# UPDATE account_invoice
# SET partner_id = %s
# WHERE
# brand = '%s'
# AND order_id = %s
# """% (partner_id.id,brand,active_id)
# )
active_model.write({'date_due':date_due})
return True
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!--导数据-->
<record id="update_date_form_view" model="ir.ui.view">
<field name="name">更新账单到期日期</field>
<field name="model">update.date</field>
<field name="arch" type="xml">
<form string="updatedate">
<sheet>
<group>
<field name='date_due'/>
</group>
<footer name="codes">
<button class="oe_stat_button" name="update_date_due" string="更新" type="object"/>
</footer>
</sheet>
</form>
</field>
</record>
<record id="update_date_wizard" model="ir.actions.act_window">
<field name="name">更新到期日期</field>
<field name="res_model">update.date</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<!-- <field name="context">{"type":"vmc_watergodcard"}</field> -->
<field name="view_id" ref="update_date_form_view"/>
<field name="target">new</field>
</record>
<!-- <menuitem id="import_bom_data" name="供应商数据导入" parent="acct_data_import_menu" sequence="1" action="import_partner_data_wizard"/> -->
</data>
</odoo>
\ No newline at end of file \ No newline at end of file
...@@ -71,6 +71,7 @@ class AccHrExpenseSheet(models.Model): ...@@ -71,6 +71,7 @@ class AccHrExpenseSheet(models.Model):
subjects = "{}费用报销单{}审批".format(self.employee_id.name,self.name) subjects = "{}费用报销单{}审批".format(self.employee_id.name,self.name)
message = "{}的费用报销单{}需要您审批,请及时处理".format(self.employee_id.name,self.name) message = "{}的费用报销单{}需要您审批,请及时处理".format(self.employee_id.name,self.name)
self.env['acc.tools'].send_report_email(subjects,message,toaddrs) self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
self.env.user.notify_success(message='提交成功')
@api.multi @api.multi
def approve_expense_sheets(self): def approve_expense_sheets(self):
...@@ -100,6 +101,7 @@ class AccHrExpenseSheet(models.Model): ...@@ -100,6 +101,7 @@ class AccHrExpenseSheet(models.Model):
subjects = "{}费用报销单{}审批".format(self.employee_id.name,self.name) subjects = "{}费用报销单{}审批".format(self.employee_id.name,self.name)
message = "{}的费用报销单{}管理部已批准,请及时处理".format(self.employee_id.name,self.name) message = "{}的费用报销单{}管理部已批准,请及时处理".format(self.employee_id.name,self.name)
self.env['acc.tools'].send_report_email(subjects,message,toaddrs) self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
self.env.user.notify_success(message='审核成功')
return True return True
def save_exel(self, header, body, file_name): def save_exel(self, header, body, file_name):
......
...@@ -156,7 +156,7 @@ ...@@ -156,7 +156,7 @@
<th style="width:8%;"> <th style="width:8%;">
供应商编号 供应商编号
</th> </th>
<th style="width:20%;"> <th style="width:15%;">
描述 描述
</th> </th>
<th style="width:8%;"> <th style="width:8%;">
...@@ -165,6 +165,9 @@ ...@@ -165,6 +165,9 @@
<th style="width:7%;"> <th style="width:7%;">
数量 数量
</th> </th>
<th style="width:5%;">
单位
</th>
<th style="width:9%;"> <th style="width:9%;">
单价 单价
</th> </th>
...@@ -200,9 +203,9 @@ ...@@ -200,9 +203,9 @@
<td class="text-center"> <td class="text-center">
<span t-esc="'{:,}'.format(int(line.product_qty))"/> <span t-esc="'{:,}'.format(int(line.product_qty))"/>
</td> </td>
<!-- <td class="text-center"> <td class="text-center">
<span t-field="line.product_uom.name" groups="product.group_uom"/> <span t-field="line.product_id.product_tmpl_id.uom_po_id"/>
</td> --> </td>
<td class="text-center"> <td class="text-center">
<span t-field="line.price_unit" t-options='{"widget": "monetary", "display_currency": o.currency_id}'/> <span t-field="line.price_unit" t-options='{"widget": "monetary", "display_currency": o.currency_id}'/>
</td> </td>
......
...@@ -384,6 +384,7 @@ class AccSaleOrder(models.Model): ...@@ -384,6 +384,7 @@ class AccSaleOrder(models.Model):
# for remove_id in remove_ids: # for remove_id in remove_ids:
# 删除的东西怎么处理? # 删除的东西怎么处理?
self.change_bom_record() self.change_bom_record()
self.env.user.notify_success(message='变更成功')
# self.write({'before_purchase_id':bp_obj.id}) # self.write({'before_purchase_id':bp_obj.id})
# #
# #
...@@ -534,6 +535,7 @@ class AccSaleOrder(models.Model): ...@@ -534,6 +535,7 @@ class AccSaleOrder(models.Model):
subjects = "销售单{}已提交需要您确认,请及时处理".format(self.name) subjects = "销售单{}已提交需要您确认,请及时处理".format(self.name)
message = "销售单{}已提交需要您确认,请及时处理".format(self.name) message = "销售单{}已提交需要您确认,请及时处理".format(self.name)
self.env['acc.tools'].send_report_email(subjects,message,toaddrs) self.env['acc.tools'].send_report_email(subjects,message,toaddrs)
self.env.user.notify_success(message='提交成功')
return True return True
# @api.multi # @api.multi
......
==========
Web Notify
==========
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
:target: https://github.com/OCA/web/tree/12.0/web_notify
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-12-0/web-12-0-web_notify
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/162/12.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
Send instant notification messages to the user in live.
This technical module allows you to send instant notification messages from the server to the user in live.
Two kinds of notification are supported.
* Success: Displayed in a `success` theme color flying popup div
* Danger: Displayed in a `danger` theme color flying popup div
* Warning: Displayed in a `warning` theme color flying popup div
* Information: Displayed in a `info` theme color flying popup div
* Default: Displayed in a `default` theme color flying popup div
**Table of contents**
.. contents::
:local:
Installation
============
This module is based on the Instant Messaging Bus. To work properly, the server must be launched in gevent mode.
Usage
=====
To send a notification to the user you just need to call one of the new methods defined on res.users:
.. code-block:: python
self.env.user.notify_success(message='My success message')
or
.. code-block:: python
self.env.user.notify_danger(message='My danger message')
or
.. code-block:: python
self.env.user.notify_warning(message='My warning message')
or
.. code-block:: python
self.env.user.notify_info(message='My information message')
or
.. code-block:: python
self.env.user.notify_default(message='My default message')
.. figure:: https://raw.githubusercontent.com/OCA/web/12.0/web_notify/static/description/notifications_screenshot.png
:scale: 80 %
:alt: Sample notifications
You can test the behaviour of the notifications by installing this module in a demo database.
Access the users form through Settings -> Users & Companies. You'll see a tab called "Test web notify", here you'll find two buttons that'll allow you test the module.
.. figure:: https://raw.githubusercontent.com/OCA/web/12.0/web_notify/static/description/test_notifications_demo.png
:scale: 80 %
:alt: Sample notifications
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/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 <https://github.com/OCA/web/issues/new?body=module:%20web_notify%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
~~~~~~~
* ACSONE SA/NV
* AdaptiveCity
Contributors
~~~~~~~~~~~~
* Laurent Mignon <laurent.mignon@acsone.eu>
* Serpent Consulting Services Pvt. Ltd.<jay.vora@serpentcs.com>
* Aitor Bouzas <aitor.bouzas@adaptivecity.com>
* Shepilov Vladislav <shepilov.v@protonmail.com>
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
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.
This module is part of the `OCA/web <https://github.com/OCA/web/tree/12.0/web_notify>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
# pylint: disable=missing-docstring
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import models
# pylint: disable=missing-docstring
# Copyright 2016 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
'name': 'Web Notify',
'summary': """
Send notification messages to user""",
'version': '12.0.1.0.0',
'license': 'AGPL-3',
'author': 'ACSONE SA/NV,'
'AdaptiveCity,'
'Odoo Community Association (OCA)',
'website': 'https://github.com/OCA/web',
'depends': [
'web',
'bus',
'base',
],
'data': [
'views/web_notify.xml'
],
'demo': [
'views/res_users_demo.xml'
],
'installable': True,
}
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_notify
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2020-02-12 17:13+0000\n"
"Last-Translator: Hans Henrik Gabelgaard <hhg@gabelgaard.org>\n"
"Language-Team: none\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.10\n"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:44
#, python-format
msgid "Danger"
msgstr "Fare"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:60
#, python-format
msgid "Default"
msgstr "Standard"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:54
#, python-format
msgid "Information"
msgstr "Information"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_danger_channel_name
msgid "Notify Danger Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_default_channel_name
msgid "Notify Default Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_info_channel_name
msgid "Notify Info Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_success_channel_name
msgid "Notify Success Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_warning_channel_name
msgid "Notify Warning Channel Name"
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:75
#, python-format
msgid "Sending a notification to another user is forbidden."
msgstr "Afsendelse af notifikation til anden bruger er ikke tilladt."
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:38
#, python-format
msgid "Success"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test danger notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test default notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test info notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test success notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test warning notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test web notify"
msgstr ""
#. module: web_notify
#: model:ir.model,name:web_notify.model_res_users
msgid "Users"
msgstr "Brugere"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:50
#, python-format
msgid "Warning"
msgstr "Advarsel"
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_notify
#
# Translators:
# Niki Waibel <niki.waibel@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-02-03 01:37+0000\n"
"PO-Revision-Date: 2017-02-03 01:37+0000\n"
"Last-Translator: Niki Waibel <niki.waibel@gmail.com>, 2017\n"
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:44
#, python-format
msgid "Danger"
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:60
#, python-format
msgid "Default"
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:54
#, python-format
msgid "Information"
msgstr "Information"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_danger_channel_name
#, fuzzy
msgid "Notify Danger Channel Name"
msgstr "Name des Warnungen-Kanals"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_default_channel_name
#, fuzzy
msgid "Notify Default Channel Name"
msgstr "Name des Informationen-Kanals"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_info_channel_name
#, fuzzy
msgid "Notify Info Channel Name"
msgstr "Name des Informationen-Kanals"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_success_channel_name
#, fuzzy
msgid "Notify Success Channel Name"
msgstr "Name des Informationen-Kanals"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_warning_channel_name
#, fuzzy
msgid "Notify Warning Channel Name"
msgstr "Name des Warnungen-Kanals"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:75
#, python-format
msgid "Sending a notification to another user is forbidden."
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:38
#, python-format
msgid "Success"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test danger notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test default notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test info notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test success notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test warning notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test web notify"
msgstr ""
#. module: web_notify
#: model:ir.model,name:web_notify.model_res_users
msgid "Users"
msgstr "Benutzer"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:50
#, python-format
msgid "Warning"
msgstr "Warnung"
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_notify
#
# Translators:
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-12-23 02:13+0000\n"
"PO-Revision-Date: 2020-07-09 18:19+0000\n"
"Last-Translator: claudiagn <claudia.gargallo@qubiq.es>\n"
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.10\n"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:44
#, python-format
msgid "Danger"
msgstr "Peligro"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:60
#, python-format
msgid "Default"
msgstr "Por defecto"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:54
#, python-format
msgid "Information"
msgstr "Información"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_danger_channel_name
#, fuzzy
msgid "Notify Danger Channel Name"
msgstr "Nombre del canal de avisos notificados"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_default_channel_name
#, fuzzy
msgid "Notify Default Channel Name"
msgstr "Nombre del canal de información notificada"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_info_channel_name
#, fuzzy
msgid "Notify Info Channel Name"
msgstr "Nombre del canal de información notificada"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_success_channel_name
#, fuzzy
msgid "Notify Success Channel Name"
msgstr "Nombre del canal de información notificada"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_warning_channel_name
#, fuzzy
msgid "Notify Warning Channel Name"
msgstr "Nombre del canal de avisos notificados"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:75
#, python-format
msgid "Sending a notification to another user is forbidden."
msgstr "Enviar una notificación a otro usuario está prohibido."
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:38
#, python-format
msgid "Success"
msgstr "Éxito"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test danger notification"
msgstr "Notificación test de peligro"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test default notification"
msgstr "Notificación test por defecto"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test info notification"
msgstr "Notificación test de info"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test success notification"
msgstr "Notificación test de éxito"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test warning notification"
msgstr "Notificación test de aviso"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test web notify"
msgstr "Test de notificación web"
#. module: web_notify
#: model:ir.model,name:web_notify.model_res_users
msgid "Users"
msgstr "Usuarios"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:50
#, python-format
msgid "Warning"
msgstr "Advertencia"
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_notify
#
# Translators:
# Bole <bole@dajmi5.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-28 18:03+0000\n"
"PO-Revision-Date: 2019-11-18 14:34+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\n"
"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 3.8\n"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:44
#, python-format
msgid "Danger"
msgstr "Opasnost"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:60
#, python-format
msgid "Default"
msgstr "Zadano"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:54
#, python-format
msgid "Information"
msgstr "Informacija"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_danger_channel_name
msgid "Notify Danger Channel Name"
msgstr "Naziv kanala upozorenja"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_default_channel_name
msgid "Notify Default Channel Name"
msgstr "Naziv kanala informacija"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_info_channel_name
#, fuzzy
msgid "Notify Info Channel Name"
msgstr "Naziv kanala informacija"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_success_channel_name
#, fuzzy
msgid "Notify Success Channel Name"
msgstr "Naziv kanala informacija"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_warning_channel_name
#, fuzzy
msgid "Notify Warning Channel Name"
msgstr "Naziv kanala upozorenja"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:75
#, python-format
msgid "Sending a notification to another user is forbidden."
msgstr "Slanje obavijesti drugom korisniku je zabranjeno."
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:38
#, python-format
msgid "Success"
msgstr "Uspješno"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test danger notification"
msgstr "Testiraj obavjesti o opasnosti"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test default notification"
msgstr "Testiraj zadane obavijesti"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test info notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test success notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test warning notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test web notify"
msgstr ""
#. module: web_notify
#: model:ir.model,name:web_notify.model_res_users
msgid "Users"
msgstr "Korisnici"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:50
#, python-format
msgid "Warning"
msgstr "Upozorenje"
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_notify
#
# Translators:
# Peter Hageman <hageman.p@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-13 16:07+0000\n"
"PO-Revision-Date: 2017-07-13 16:07+0000\n"
"Last-Translator: Peter Hageman <hageman.p@gmail.com>, 2017\n"
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/"
"teams/23907/nl_NL/)\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:44
#, python-format
msgid "Danger"
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:60
#, python-format
msgid "Default"
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:54
#, python-format
msgid "Information"
msgstr "Informatie"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_danger_channel_name
msgid "Notify Danger Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_default_channel_name
msgid "Notify Default Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_info_channel_name
msgid "Notify Info Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_success_channel_name
msgid "Notify Success Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_warning_channel_name
msgid "Notify Warning Channel Name"
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:75
#, python-format
msgid "Sending a notification to another user is forbidden."
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:38
#, python-format
msgid "Success"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test danger notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test default notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test info notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test success notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test warning notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test web notify"
msgstr ""
#. module: web_notify
#: model:ir.model,name:web_notify.model_res_users
msgid "Users"
msgstr "Gebruikers"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:50
#, python-format
msgid "Warning"
msgstr "Waarschuwing"
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_notify
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2019-11-17 14:35+0000\n"
"Last-Translator: Pedro Castro Silva <pedrocs@exo.pt>\n"
"Language-Team: none\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.8\n"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:44
#, python-format
msgid "Danger"
msgstr "Perigo"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:60
#, python-format
msgid "Default"
msgstr "Predefinido"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:54
#, python-format
msgid "Information"
msgstr "Informação"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_danger_channel_name
msgid "Notify Danger Channel Name"
msgstr "Nome do Canal de Notificações de Perigo"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_default_channel_name
msgid "Notify Default Channel Name"
msgstr "Nome do Canal de Notificações Predefinidas"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_info_channel_name
msgid "Notify Info Channel Name"
msgstr "Nome do Canal de Notificações Info"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_success_channel_name
msgid "Notify Success Channel Name"
msgstr "Nome do Canal de Notificações de Sucesso"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_warning_channel_name
msgid "Notify Warning Channel Name"
msgstr "Nome do Canal de Notificações de Aviso"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:75
#, python-format
msgid "Sending a notification to another user is forbidden."
msgstr "Enviar uma notificação a outro utilizador é proibido."
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:38
#, python-format
msgid "Success"
msgstr "Sucesso"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test danger notification"
msgstr "Testar notificação de perigo"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test default notification"
msgstr "Testar notificação predefinida"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test info notification"
msgstr "Testar notificação de info"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test success notification"
msgstr "Testar notificação de sucesso"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test warning notification"
msgstr "Testar notificação de aviso"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test web notify"
msgstr "Testar notificação web"
#. module: web_notify
#: model:ir.model,name:web_notify.model_res_users
msgid "Users"
msgstr "Utilizadores"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:50
#, python-format
msgid "Warning"
msgstr "Aviso"
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_notify
#
# Translators:
# Rodrigo de Almeida Sottomaior Macedo <rmsolucoeseminformatic4@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-22 08:27+0000\n"
"PO-Revision-Date: 2019-08-30 15:23+0000\n"
"Last-Translator: Rodrigo Macedo <rmsolucoeseminformatic4@gmail.com>\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/"
"23907/pt_BR/)\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 3.8\n"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:44
#, python-format
msgid "Danger"
msgstr "Perigo"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:60
#, python-format
msgid "Default"
msgstr "Padrão"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:54
#, python-format
msgid "Information"
msgstr "Informação"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_danger_channel_name
msgid "Notify Danger Channel Name"
msgstr "Notificar o nome do canal de perigo"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_default_channel_name
msgid "Notify Default Channel Name"
msgstr "Notificar o nome do canal padrão"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_info_channel_name
msgid "Notify Info Channel Name"
msgstr "Notificar o nome do canal de informações"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_success_channel_name
msgid "Notify Success Channel Name"
msgstr "Notificar o nome do canal de sucesso"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_warning_channel_name
msgid "Notify Warning Channel Name"
msgstr "Notificar o nome do canal de alerta"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:75
#, python-format
msgid "Sending a notification to another user is forbidden."
msgstr "É proibido enviar uma notificação para outro usuário."
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:38
#, python-format
msgid "Success"
msgstr "Sucesso"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test danger notification"
msgstr "Notificação de teste de perigo"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test default notification"
msgstr "Notificação de Teste padrão"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test info notification"
msgstr "Notificação de Teste informativo"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test success notification"
msgstr "Notificação de Teste de sucesso"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test warning notification"
msgstr "Notificação de Teste de alerta"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test web notify"
msgstr "Notificação de Web Teste"
#. module: web_notify
#: model:ir.model,name:web_notify.model_res_users
msgid "Users"
msgstr "Usuários"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:50
#, python-format
msgid "Warning"
msgstr "Alerta"
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_notify
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:44
#, python-format
msgid "Danger"
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:60
#, python-format
msgid "Default"
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:54
#, python-format
msgid "Information"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_danger_channel_name
msgid "Notify Danger Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_default_channel_name
msgid "Notify Default Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_info_channel_name
msgid "Notify Info Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_success_channel_name
msgid "Notify Success Channel Name"
msgstr ""
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_warning_channel_name
msgid "Notify Warning Channel Name"
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:75
#, python-format
msgid "Sending a notification to another user is forbidden."
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:38
#, python-format
msgid "Success"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test danger notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test default notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test info notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test success notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test warning notification"
msgstr ""
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test web notify"
msgstr ""
#. module: web_notify
#: model:ir.model,name:web_notify.model_res_users
msgid "Users"
msgstr ""
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:50
#, python-format
msgid "Warning"
msgstr ""
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * web_notify
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2019-09-01 12:52+0000\n"
"Last-Translator: 黎伟杰 <674416404@qq.com>\n"
"Language-Team: none\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 3.8\n"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:44
#, python-format
msgid "Danger"
msgstr "危险"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:60
#, python-format
msgid "Default"
msgstr "默认"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:54
#, python-format
msgid "Information"
msgstr "信息"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_danger_channel_name
msgid "Notify Danger Channel Name"
msgstr "通知危险频道名称"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_default_channel_name
msgid "Notify Default Channel Name"
msgstr "通知默认频道名称"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_info_channel_name
msgid "Notify Info Channel Name"
msgstr "通知信息频道名称"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_success_channel_name
msgid "Notify Success Channel Name"
msgstr "通知成功频道名称"
#. module: web_notify
#: model:ir.model.fields,field_description:web_notify.field_res_users__notify_warning_channel_name
msgid "Notify Warning Channel Name"
msgstr "通知警告频道名称"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:75
#, python-format
msgid "Sending a notification to another user is forbidden."
msgstr "禁止向其他用户发送通知。"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:38
#, python-format
msgid "Success"
msgstr "成功"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test danger notification"
msgstr "测试危险通知"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test default notification"
msgstr "测试默认通知"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test info notification"
msgstr "测试信息通知"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test success notification"
msgstr "测试成功通知"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test warning notification"
msgstr "测试警告通知"
#. module: web_notify
#: model_terms:ir.ui.view,arch_db:web_notify.view_users_form_simple_modif_inherit
msgid "Test web notify"
msgstr "测试网站通知"
#. module: web_notify
#: model:ir.model,name:web_notify.model_res_users
msgid "Users"
msgstr "用户"
#. module: web_notify
#: code:addons/web_notify/models/res_users.py:50
#, python-format
msgid "Warning"
msgstr "警告"
# pylint: disable=missing-docstring
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import res_users
# pylint: disable=missing-docstring
# Copyright 2016 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, exceptions, fields, models
DEFAULT_MESSAGE = "Default message"
SUCCESS = "success"
DANGER = "danger"
WARNING = "warning"
INFO = "info"
DEFAULT = "default"
class ResUsers(models.Model):
_inherit = "res.users"
@api.depends("create_date")
def _compute_channel_names(self):
for record in self:
res_id = record.id
record.notify_success_channel_name = "notify_success_%s" % res_id
record.notify_danger_channel_name = "notify_danger_%s" % res_id
record.notify_warning_channel_name = "notify_warning_%s" % res_id
record.notify_info_channel_name = "notify_info_%s" % res_id
record.notify_default_channel_name = "notify_default_%s" % res_id
notify_success_channel_name = fields.Char(compute="_compute_channel_names")
notify_danger_channel_name = fields.Char(compute="_compute_channel_names")
notify_warning_channel_name = fields.Char(compute="_compute_channel_names")
notify_info_channel_name = fields.Char(compute="_compute_channel_names")
notify_default_channel_name = fields.Char(compute="_compute_channel_names")
def notify_success(
self, message="Default message", title=None, sticky=False
):
title = title or _("Success")
self._notify_channel(SUCCESS, message, title, sticky)
def notify_danger(
self, message="Default message", title=None, sticky=False
):
title = title or _("Danger")
self._notify_channel(DANGER, message, title, sticky)
def notify_warning(
self, message="Default message", title=None, sticky=False
):
title = title or _("Warning")
self._notify_channel(WARNING, message, title, sticky)
def notify_info(self, message="Default message", title=None, sticky=False):
title = title or _("Information")
self._notify_channel(INFO, message, title, sticky)
def notify_default(
self, message="Default message", title=None, sticky=False
):
title = title or _("Default")
self._notify_channel(DEFAULT, message, title, sticky)
def _notify_channel(
self,
type_message=DEFAULT,
message=DEFAULT_MESSAGE,
title=None,
sticky=False,
):
# pylint: disable=protected-access
if not self.env.user._is_admin() and any(
user.id != self.env.uid for user in self
):
raise exceptions.UserError(
_("Sending a notification to another user is forbidden.")
)
channel_name_field = "notify_{}_channel_name".format(type_message)
bus_message = {
"type": type_message,
"message": message,
"title": title,
"sticky": sticky,
}
notifications = [
(record[channel_name_field], bus_message) for record in self
]
self.env["bus.bus"].sendmany(notifications)
* Laurent Mignon <laurent.mignon@acsone.eu>
* Serpent Consulting Services Pvt. Ltd.<jay.vora@serpentcs.com>
* Aitor Bouzas <aitor.bouzas@adaptivecity.com>
* Shepilov Vladislav <shepilov.v@protonmail.com>
Send instant notification messages to the user in live.
This technical module allows you to send instant notification messages from the server to the user in live.
Two kinds of notification are supported.
* Success: Displayed in a `success` theme color flying popup div
* Danger: Displayed in a `danger` theme color flying popup div
* Warning: Displayed in a `warning` theme color flying popup div
* Information: Displayed in a `info` theme color flying popup div
* Default: Displayed in a `default` theme color flying popup div
This module is based on the Instant Messaging Bus. To work properly, the server must be launched in gevent mode.
To send a notification to the user you just need to call one of the new methods defined on res.users:
.. code-block:: python
self.env.user.notify_success(message='My success message')
or
.. code-block:: python
self.env.user.notify_danger(message='My danger message')
or
.. code-block:: python
self.env.user.notify_warning(message='My warning message')
or
.. code-block:: python
self.env.user.notify_info(message='My information message')
or
.. code-block:: python
self.env.user.notify_default(message='My default message')
.. figure:: static/description/notifications_screenshot.png
:scale: 80 %
:alt: Sample notifications
You can test the behaviour of the notifications by installing this module in a demo database.
Access the users form through Settings -> Users & Companies. You'll see a tab called "Test web notify", here you'll find two buttons that'll allow you test the module.
.. figure:: static/description/test_notifications_demo.png
:scale: 80 %
:alt: Sample notifications
odoo.define('web_notify.WebClient', function (require) {
"use strict";
var WebClient = require('web.WebClient');
var base_bus = require('bus.Longpolling');
var session = require('web.session');
require('bus.BusService');
WebClient.include({
show_application: function () {
var res = this._super();
this.start_polling();
return res;
},
start_polling: function () {
this.channel_success = 'notify_success_' + session.uid;
this.channel_danger = 'notify_danger_' + session.uid;
this.channel_warning = 'notify_warning_' + session.uid;
this.channel_info = 'notify_info_' + session.uid;
this.channel_default = 'notify_default_' + session.uid;
this.all_channels = [
this.channel_success,
this.channel_danger,
this.channel_warning,
this.channel_info,
this.channel_default,
];
this.call('bus_service', 'addChannel', this.channel_success);
this.call('bus_service', 'addChannel', this.channel_danger);
this.call('bus_service', 'addChannel', this.channel_warning);
this.call('bus_service', 'addChannel', this.channel_info);
this.call('bus_service', 'addChannel', this.channel_default);
this.call(
'bus_service', 'on', 'notification',
this, this.bus_notification);
this.call('bus_service', 'startPolling');
},
bus_notification: function (notifications) {
var self = this;
_.each(notifications, function (notification) {
var channel = notification[0];
var message = notification[1];
if (
self.all_channels != null &&
self.all_channels.indexOf(channel) > -1
) {
self.on_message(message);
}
});
},
on_message: function (message) {
return this.call(
'notification', 'notify', {
type: message.type,
title: message.title,
message: message.message,
sticky: message.sticky,
className: message.className,
}
);
},
});
});
odoo.define('web_notify.Notification', function (require) {
"use strict";
var Notification = require('web.Notification');
Notification.include({
icon_mapping: {
'success': 'fa-thumbs-up',
'danger': 'fa-exclamation-triangle',
'warning': 'fa-exclamation',
'info': 'fa-info',
'default': 'fa-lightbulb-o',
},
init: function () {
this._super.apply(this, arguments);
// Delete default classes
this.className = this.className.replace(' o_error', '');
// Add custom icon and custom class
this.icon = (this.type in this.icon_mapping) ?
this.icon_mapping[this.type] :
this.icon_mapping['default'];
this.className += ' o_' + this.type;
},
});
});
.o_notification_manager {
.o_notification {
&.o_success {
color: white;
background-color: theme-color('success');
}
&.o_danger {
color: white;
background-color: theme-color('danger');
}
&.o_warning {
color: white;
background-color: theme-color('warning');
}
&.o_info {
color: white;
background-color: theme-color('info');
}
&.o_default {
color: black;
background-color: theme-color('default');
}
}
}
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import test_res_users
# Copyright 2016 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import json
import mock
from odoo import exceptions
from odoo.addons.bus.models.bus import json_dump
from ..models.res_users import SUCCESS, DANGER, WARNING, INFO, DEFAULT
from odoo.tests import common
class TestResUsers(common.TransactionCase):
def test_notify_success(self):
bus_bus = self.env["bus.bus"]
domain = [
(
"channel",
"=",
json_dump(self.env.user.notify_success_channel_name),
)
]
existing = bus_bus.search(domain)
test_msg = {"message": "message", "title": "title", "sticky": True}
self.env.user.notify_success(**test_msg)
news = bus_bus.search(domain) - existing
self.assertEqual(1, len(news))
test_msg.update({"type": SUCCESS})
self.assertDictEqual(test_msg, json.loads(news.message))
def test_notify_danger(self):
bus_bus = self.env["bus.bus"]
domain = [
(
"channel",
"=",
json_dump(self.env.user.notify_danger_channel_name),
)
]
existing = bus_bus.search(domain)
test_msg = {"message": "message", "title": "title", "sticky": True}
self.env.user.notify_danger(**test_msg)
news = bus_bus.search(domain) - existing
self.assertEqual(1, len(news))
test_msg.update({"type": DANGER})
self.assertDictEqual(test_msg, json.loads(news.message))
def test_notify_warning(self):
bus_bus = self.env["bus.bus"]
domain = [
(
"channel",
"=",
json_dump(self.env.user.notify_warning_channel_name),
)
]
existing = bus_bus.search(domain)
test_msg = {"message": "message", "title": "title", "sticky": True}
self.env.user.notify_warning(**test_msg)
news = bus_bus.search(domain) - existing
self.assertEqual(1, len(news))
test_msg.update({"type": WARNING})
self.assertDictEqual(test_msg, json.loads(news.message))
def test_notify_info(self):
bus_bus = self.env["bus.bus"]
domain = [
("channel", "=", json_dump(self.env.user.notify_info_channel_name))
]
existing = bus_bus.search(domain)
test_msg = {"message": "message", "title": "title", "sticky": True}
self.env.user.notify_info(**test_msg)
news = bus_bus.search(domain) - existing
self.assertEqual(1, len(news))
test_msg.update({"type": INFO})
self.assertDictEqual(test_msg, json.loads(news.message))
def test_notify_default(self):
bus_bus = self.env["bus.bus"]
domain = [
(
"channel",
"=",
json_dump(self.env.user.notify_default_channel_name),
)
]
existing = bus_bus.search(domain)
test_msg = {"message": "message", "title": "title", "sticky": True}
self.env.user.notify_default(**test_msg)
news = bus_bus.search(domain) - existing
self.assertEqual(1, len(news))
test_msg.update({"type": DEFAULT})
self.assertDictEqual(test_msg, json.loads(news.message))
def test_notify_many(self):
# check that the notification of a list of users is done with
# a single call to the bus
with mock.patch(
"odoo.addons.bus.models.bus.ImBus.sendmany"
) as mockedSendMany:
users = self.env.user.search([(1, "=", 1)])
self.assertTrue(len(users) > 1)
users.notify_warning(message="message")
self.assertEqual(1, mockedSendMany.call_count)
# call_args is a tuple with args (tuple) & kwargs (dict). We check
# positional arguments (args), hence the [0].
pos_call_args = mockedSendMany.call_args[0]
# Ensure the first positional argument is a list with as many
# elements as we had users.
first_pos_call_args = pos_call_args[0]
self.assertIsInstance(first_pos_call_args, list)
self.assertEqual(len(users), len(first_pos_call_args))
def test_notify_other_user(self):
other_user = self.env.ref("base.user_demo")
other_user_model = self.env["res.users"].sudo(other_user)
with self.assertRaises(exceptions.UserError):
other_user_model.browse(self.env.uid).notify_info(message="hello")
def test_notify_admin_allowed_other_user(self):
other_user = self.env.ref("base.user_demo")
other_user.notify_info(message="hello")
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2018 Aitor Bouzas <aitor.bouzas@adaptivecity.com>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_users_form_simple_modif_inherit" model="ir.ui.view">
<field name="name">res.users.form.simple.view.modif.inherit</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<xpath expr="//notebook/page[1]" position="after">
<page string="Test web notify" name="test_web_notify">
<group>
<group>
<button name="notify_success"
type="object"
string="Test success notification"
class="oe_highlight"/>
</group>
<group>
<button name="notify_danger"
type="object"
string="Test danger notification"
class="oe_highlight"/>
</group>
<group>
<button name="notify_warning"
type="object"
string="Test warning notification"
class="oe_highlight"/>
</group>
<group>
<button name="notify_info"
type="object"
string="Test info notification"
class="oe_highlight"/>
</group>
<group>
<button name="notify_default"
type="object"
string="Test default notification"
class="oe_highlight"/>
</group>
</group>
</page>
</xpath>
</field>
</record>
</odoo>
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets_backend" name="web_notify assets" inherit_id="web.assets_backend">
<link rel="stylesheet" type="text/scss" href="/web/static/src/scss/webclient.scss" position="after">
<link rel="stylesheet" type="text/scss" href="/web_notify/static/src/scss/webclient.scss"/>
</link>
<xpath expr="." position="inside">
<script type="text/javascript" src="/web_notify/static/src/js/web_client.js"/>
<script type="text/javascript" src="/web_notify/static/src/js/widgets/notification.js"/>
</xpath>
</template>
</odoo>
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!