summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Monjoie <dmo@odoo.com>2015-01-20 17:34:17 +0100
committerThibault Delavallée <tde@openerp.com>2015-01-20 17:34:33 +0100
commit280774ae8df43f862f48f954cb93cbb7b7ed5827 (patch)
treeb516fdd768799a71bdd68d07a4e24e8a49e8416a
parente185ad21eb861a68a15af9828091a899fcb915aa (diff)
[IMP][REF] website_crm_partner_assign: add published mixing on grade model.
Also cleaned grade form view and its inheritance. Now the website displays partners related to all grades (website publisher) or only published grades (other people). A publish button has been added in the website for grades, to have the same behavior as for other website documents.
-rw-r--r--addons/crm_partner_assign/res_partner_view.xml18
-rw-r--r--addons/website_crm_partner_assign/controllers/main.py12
-rw-r--r--addons/website_crm_partner_assign/models/res_partner.py19
-rw-r--r--addons/website_crm_partner_assign/views/partner_grade.xml25
-rw-r--r--addons/website_crm_partner_assign/views/website_crm_partner_assign.xml6
5 files changed, 53 insertions, 27 deletions
diff --git a/addons/crm_partner_assign/res_partner_view.xml b/addons/crm_partner_assign/res_partner_view.xml
index 8227ead8cbe..3493b12a5b4 100644
--- a/addons/crm_partner_assign/res_partner_view.xml
+++ b/addons/crm_partner_assign/res_partner_view.xml
@@ -54,11 +54,18 @@
<field name="model">res.partner.grade</field>
<field name="arch" type="xml">
<form string="Partner Grade">
- <group col="4">
- <field name="name"/>
- <field name="sequence"/>
- <field name="active"/>
- </group>
+ <sheet string="Grade">
+ <div class="oe_title">
+ <label for="name" class="oe_edit_only"/>
+ <h1>
+ <field name="name"/>
+ </h1>
+ </div>
+ <group>
+ <field name="sequence"/>
+ <field name="active"/>
+ </group>
+ </sheet>
</form>
</field>
</record>
@@ -112,7 +119,6 @@
<separator string="Partner Activation" colspan="2"/>
<field name="grade_id" widget="selection"/>
<field name="activation" widget="selection"/>
- <field name="assigned_partner_id"/>
<field name="partner_weight"/>
</group>
<group>
diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py
index 190016c9a76..17bf0b6fc97 100644
--- a/addons/website_crm_partner_assign/controllers/main.py
+++ b/addons/website_crm_partner_assign/controllers/main.py
@@ -4,10 +4,11 @@ from openerp import SUPERUSER_ID
from openerp.addons.web import http
from openerp.addons.web.http import request
from openerp.addons.website.models.website import slug, unslug
+from openerp.addons.website_partner.controllers.main import WebsitePartnerPage
from openerp.tools.translate import _
-class WebsiteCrmPartnerAssign(http.Controller):
+class WebsiteCrmPartnerAssign(WebsitePartnerPage):
_references_per_page = 40
@http.route([
@@ -29,7 +30,9 @@ class WebsiteCrmPartnerAssign(http.Controller):
country_obj = request.registry['res.country']
search = post.get('search', '')
- base_partner_domain = [('is_company', '=', True), ('grade_id.website_published', '=', True), ('website_published', '=', True)]
+ base_partner_domain = [('is_company', '=', True), ('grade_id', '!=', False), ('website_published', '=', True)]
+ if request.registry['res.users'].has_group(request.cr, request.uid, 'base.group_website_publisher'):
+ base_partner_domain += [('grade_id.website_published', '=', True)]
if search:
base_partner_domain += ['|', ('name', 'ilike', search), ('website_description', 'ilike', search)]
@@ -132,7 +135,7 @@ class WebsiteCrmPartnerAssign(http.Controller):
# Do not use semantic controller due to SUPERUSER_ID
@http.route(['/partners/<partner_id>'], type='http', auth="public", website=True)
- def partners_detail(self, partner_id, partner_name='', **post):
+ def partners_detail(self, partner_id, **post):
_, partner_id = unslug(partner_id)
current_grade, current_country = None, None
grade_id = post.get('grade_id')
@@ -147,7 +150,8 @@ class WebsiteCrmPartnerAssign(http.Controller):
current_country = request.registry['res.country'].browse(request.cr, request.uid, country_ids[0], context=request.context)
if partner_id:
partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)
- if partner.exists() and partner.website_published:
+ is_website_publisher = request.registry['res.users'].has_group(request.cr, request.uid, 'base.group_website_publisher')
+ if partner.exists() and (partner.website_published or is_website_publisher):
values = {
'main_object': partner,
'partner': partner,
diff --git a/addons/website_crm_partner_assign/models/res_partner.py b/addons/website_crm_partner_assign/models/res_partner.py
index 1287c4ff3cc..e88bdb77f3f 100644
--- a/addons/website_crm_partner_assign/models/res_partner.py
+++ b/addons/website_crm_partner_assign/models/res_partner.py
@@ -1,11 +1,18 @@
# -*- coding: utf-8 -*-
-from openerp.osv import osv, fields
+from openerp.osv import osv
+from openerp.addons.website.models.website import slug
+
class res_partner_grade(osv.osv):
- _inherit = 'res.partner.grade'
- _columns = {
- 'website_published': fields.boolean('Published On Website', copy=False),
- }
+ _name = 'res.partner.grade'
+ _inherit = ['res.partner.grade', 'website.published.mixin']
+
_defaults = {
- 'website_published': True,
+ 'website_published': True,
}
+
+ def _website_url(self, cr, uid, ids, field_name, arg, context=None):
+ res = super(res_partner_grade, self)._website_url(cr, uid, ids, field_name, arg, context=context)
+ for grade in self.browse(cr, uid, ids, context=context):
+ res[grade.id] = "/partners/grade/%s" % (slug(grade))
+ return res
diff --git a/addons/website_crm_partner_assign/views/partner_grade.xml b/addons/website_crm_partner_assign/views/partner_grade.xml
index 2acf8e1eb24..0605e8b6887 100644
--- a/addons/website_crm_partner_assign/views/partner_grade.xml
+++ b/addons/website_crm_partner_assign/views/partner_grade.xml
@@ -2,16 +2,21 @@
<openerp>
<data>
- <record model="ir.ui.view" id="partner_grade_view">
- <field name="name">res.partner.grade.website</field>
- <field name="model">res.partner.grade</field>
- <field name="inherit_id" ref="crm_partner_assign.view_partner_grade_form"/>
- <field name="arch" type="xml">
- <field name="active" position="after">
- <field name="website_published"/>
- </field>
- </field>
- </record>
+ <record model="ir.ui.view" id="partner_grade_view">
+ <field name="name">res.partner.grade.website</field>
+ <field name="model">res.partner.grade</field>
+ <field name="inherit_id" ref="crm_partner_assign.view_partner_grade_form"/>
+ <field name="arch" type="xml">
+ <xpath expr="//div[@class='oe_title']" position="before">
+ <div class="oe_right oe_button_box">
+ <button class="oe_inline oe_stat_button" name="open_website_url"
+ type="object" icon="fa-globe">
+ <field name="website_published" widget="website_button"/>
+ </button>
+ </div>
+ </xpath>
+ </field>
+ </record>
</data>
</openerp>
diff --git a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml
index eafebb00abe..c2eb98271aa 100644
--- a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml
+++ b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml
@@ -81,6 +81,10 @@
<t t-if="last_grade != partner.grade_id.id">
<h3 class="text-center">
<span t-field="partner.grade_id"/> Partners
+ <t t-call="website.publish_management">
+ <t t-set="object" t-value="partner.grade_id"/>
+ <t t-set="publish_edit" t-value="True"/>
+ </t>
</h3>
<t t-set="last_grade" t-value="partner.grade_id.id"/>
</t>
@@ -141,7 +145,7 @@
<t t-call="website_crm_partner_assign.layout">
<t t-set="ref_content">
<div class="col-md-5">
- <ol class="breadcrumb">
+ <ol t-if="not edit_page" class="breadcrumb">
<li><a t-attf-href="/partners#{current_grade and '/grade/%s' % slug(current_grade)}#{current_country and '/country/%s' % slug(current_country)}">Our Partners</a></li>
<li class="active"><span t-field="partner.display_name"/></li>
</ol>