[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.
This commit is contained in:
David Monjoie
2015-01-20 17:34:33 +01:00
committed by Thibault Delavallée
parent e185ad21eb
commit 280774ae8d
5 changed files with 53 additions and 27 deletions
+12 -6
View File
@@ -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>
@@ -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,
@@ -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
@@ -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>
@@ -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>