Browse Source
[9.0][ADD] website_livechat_firstname: Only show employee’s first name in Live Chat (#148)
[9.0][ADD] website_livechat_firstname: Only show employee’s first name in Live Chat (#148)
* [ADD] website_livechat_firstname: Add module. * [IMP] website_livechat_firstname: Fix models. Add tests. * Add res partner demo * Fix mail_channel channel_info method * Add tests for mail channel firstnames * Fix bug when partner firstname is not available * [FIX] website_livechat_firstname: Fix readme, manifest. * Fix usage section in readme * Add laslabs to authors in manifest * [IMP] website_livechat_firstname: Change to LGPL.pull/93/merge
Kelly Lougheed
8 years ago
committed by
Dave Lasley
11 changed files with 247 additions and 0 deletions
-
1oca_dependencies.txt
-
62website_livechat_firstname/README.rst
-
5website_livechat_firstname/__init__.py
-
25website_livechat_firstname/__openerp__.py
-
21website_livechat_firstname/demo/res_partner_demo.xml
-
5website_livechat_firstname/models/__init__.py
-
39website_livechat_firstname/models/mail_channel.py
-
BINwebsite_livechat_firstname/static/description/icon.png
-
5website_livechat_firstname/tests/__init__.py
-
70website_livechat_firstname/tests/test_mail_channel.py
-
14website_livechat_firstname/views/website_livechat_firstname_view.xml
@ -1 +1,2 @@ |
|||
partner-contact |
|||
server-tools |
@ -0,0 +1,62 @@ |
|||
.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg |
|||
:target: http://www.gnu.org/licenses/LGPL-3.0-standalone.html |
|||
:alt: License: LGPL-3 |
|||
|
|||
=============================== |
|||
Website Live Chat - First Name |
|||
=============================== |
|||
|
|||
This module shows only the first name of an employee in Live Chat. |
|||
|
|||
Usage |
|||
===== |
|||
|
|||
To use this module, you need to: |
|||
|
|||
#. Install the module. |
|||
#. Go to the website. |
|||
#. Initiate a Live Chat at the bottom right-hand corner of the screen. |
|||
|
|||
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas |
|||
:alt: Try me on Runbot |
|||
:target: https://runbot.odoo-community.org/runbot/205/9.0 |
|||
|
|||
Known Issues / Roadmap |
|||
====================== |
|||
|
|||
Bug Tracker |
|||
=========== |
|||
|
|||
Bugs are tracked on `GitHub Issues |
|||
<https://github.com/OCA/social/issues>`_. In case of trouble, please |
|||
check there if your issue has already been reported. If you spotted it first, |
|||
help us smash it by providing detailed and welcomed feedback. |
|||
|
|||
Credits |
|||
======= |
|||
|
|||
Images |
|||
------ |
|||
|
|||
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_. |
|||
|
|||
Contributors |
|||
------------ |
|||
|
|||
* Kelly Lougheed <kelly@smdrugstore.com> |
|||
* Brett Wood <bwood@laslabs.com> |
|||
|
|||
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 https://odoo-community.org. |
@ -0,0 +1,5 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2017 Specialty Medical Drugstore, LLC. |
|||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
|||
|
|||
from . import models |
@ -0,0 +1,25 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2017 Specialty Medical Drugstore, LLC. |
|||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
|||
|
|||
{ |
|||
"name": "Website Live Chat - First Name", |
|||
"summary": "Shows only the first name of the operator in the website", |
|||
"version": "9.0.1.0.0", |
|||
"category": "Social", |
|||
"website": "https://github.com/OCA/social", |
|||
"author": "SMDrugstore, LasLabs, Odoo Community Association (OCA)", |
|||
"license": "LGPL-3", |
|||
"application": False, |
|||
"installable": True, |
|||
"depends": [ |
|||
"partner_firstname", |
|||
"website_livechat", |
|||
], |
|||
"data": [ |
|||
"views/website_livechat_firstname_view.xml", |
|||
], |
|||
"demo": [ |
|||
"demo/res_partner_demo.xml", |
|||
], |
|||
} |
@ -0,0 +1,21 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<!-- Copyright 2017 Specialty Medical Drugstore |
|||
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). --> |
|||
|
|||
<odoo> |
|||
|
|||
<record id="res_partner_1" model="res.partner"> |
|||
<field name="firstname">Mitchell</field> |
|||
<field name="lastname">Vangrey</field> |
|||
<field name="city">Las Vegas</field> |
|||
<field name="state_id" ref="base.state_us_23" /> |
|||
<field name="country_id" ref="base.us" /> |
|||
<field name="zip">89119</field> |
|||
<field name="street">111 Example Way</field> |
|||
<field name="email">mvangrey@example.com</field> |
|||
<field name="phone">+1 (702) 111-2222</field> |
|||
<field name="parent_id" ref="base.partner_demo" /> |
|||
<field name="ref">680-36-6978</field> |
|||
</record> |
|||
|
|||
</odoo> |
@ -0,0 +1,5 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2017 Specialty Medical Drugstore, LLC. |
|||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
|||
|
|||
from . import mail_channel |
@ -0,0 +1,39 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2017 Specialty Medical Drugstore, LLC. |
|||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
|||
|
|||
from openerp import api, models |
|||
|
|||
|
|||
class MailChannel(models.Model): |
|||
|
|||
_inherit = 'mail.channel' |
|||
|
|||
@api.multi |
|||
def channel_info(self, extra_info=False): |
|||
channel_infos = super(MailChannel, self).channel_info(extra_info) |
|||
partner_mod = self.env['res.partner'] |
|||
operator_id = self.env.context.get('im_livechat_operator_partner_id') |
|||
|
|||
for channel_info in channel_infos: |
|||
if operator_id and channel_info['public'] == 'public': |
|||
operator = partner_mod.browse(operator_id) |
|||
|
|||
if operator.firstname: |
|||
operator_name = operator.firstname |
|||
else: |
|||
operator_name = operator.name |
|||
|
|||
channel_info['operator_pid'] = \ |
|||
(operator.id, u'%s' % operator_name) |
|||
|
|||
# channel name format: |
|||
# 'customer name, operator/employee name' |
|||
channel_name = channel_info['name'].split(', ') |
|||
|
|||
new_channel_name = '%s, %s' % \ |
|||
(channel_name[0], operator_name) |
|||
|
|||
channel_info['name'] = new_channel_name |
|||
|
|||
return channel_infos |
After Width: 128 | Height: 128 | Size: 9.2 KiB |
@ -0,0 +1,5 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2017 Specialty Medical Drugstore, LLC. |
|||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
|||
|
|||
from . import test_mail_channel |
@ -0,0 +1,70 @@ |
|||
# -*- coding: utf-8 -*- |
|||
# Copyright 2017 Specialty Medical Drugstore, LLC. |
|||
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). |
|||
|
|||
from openerp.tests.common import TransactionCase |
|||
|
|||
|
|||
class TestMailChannel(TransactionCase): |
|||
|
|||
def setUp(self): |
|||
super(TestMailChannel, self).setUp() |
|||
self.operator = self.env.ref( |
|||
'website_livechat_firstname.res_partner_1' |
|||
) |
|||
self.customer_name = 'Billy Joe' |
|||
self.channel_vals = { |
|||
'name': '%s, %s' % (self.customer_name, self.operator.name), |
|||
'public': 'public', |
|||
} |
|||
self.mail_mod = self.env['mail.channel'] |
|||
self.test_context = { |
|||
'im_livechat_operator_partner_id': self.operator.id, |
|||
} |
|||
|
|||
def test_channel_info_operator_pid_full_name(self): |
|||
""" Test get operator name correct when full name """ |
|||
channel = self.mail_mod.create(self.channel_vals) |
|||
res = channel.with_context(self.test_context).channel_info() |
|||
self.assertEquals( |
|||
res[0]['operator_pid'], |
|||
(self.operator.id, u'%s' % self.operator.firstname), |
|||
) |
|||
|
|||
def test_channel_info_operator_pid_last_name_only(self): |
|||
""" Test get operator name correct if only lastname """ |
|||
self.operator.firstname = None |
|||
channel = self.mail_mod.create(self.channel_vals) |
|||
res = channel.with_context(self.test_context).channel_info() |
|||
self.assertEquals( |
|||
res[0]['operator_pid'], |
|||
(self.operator.id, u'%s' % self.operator.name), |
|||
) |
|||
|
|||
def test_channel_info_name(self): |
|||
""" Test operator name shortened correctly in channel name """ |
|||
channel = self.mail_mod.create(self.channel_vals) |
|||
res = channel.with_context(self.test_context).channel_info() |
|||
self.assertEquals( |
|||
res[0]['name'], |
|||
'%s, %s' % (self.customer_name, self.operator.firstname), |
|||
) |
|||
|
|||
def test_channel_info_no_context(self): |
|||
""" Test channel_name same if no context passsed """ |
|||
channel = self.mail_mod.create(self.channel_vals) |
|||
res = channel.channel_info() |
|||
self.assertEquals( |
|||
res[0]['name'], |
|||
'%s, %s' % (self.customer_name, self.operator.name), |
|||
) |
|||
|
|||
def test_channel_info_not_public(self): |
|||
""" Test channel info unchanged if not public channel """ |
|||
self.channel_vals['public'] = 'private' |
|||
channel = self.mail_mod.create(self.channel_vals) |
|||
res = channel.with_context(self.test_context).channel_info() |
|||
self.assertEquals( |
|||
res[0]['name'], |
|||
'%s, %s' % (self.customer_name, self.operator.name), |
|||
) |
@ -0,0 +1,14 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<!-- Copyright 2017 Specialty Medical Drugstore |
|||
License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). --> |
|||
|
|||
<odoo> |
|||
|
|||
<template id="channel_page" inherit_id="website_livechat.channel_page" > |
|||
<xpath expr="//div[@class='media-body']/h5/t" position="replace"> |
|||
<t t-if="user.partner_id.firstname" t-esc="user.partner_id.firstname" /> |
|||
<t t-else="" t-esc="user.partner_id.name" /> |
|||
</xpath> |
|||
</template> |
|||
|
|||
</odoo> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue