[FIX] website_partner, website_crm_partner_assign, website_membership, website_customer: display partner without break access right

bzr revid: chm@openerp.com-20131205150801-tquspeo351to77o4
This commit is contained in:
Christophe Matthieu 2013-12-05 16:08:01 +01:00
parent 2db8e35792
commit b777fddb30
15 changed files with 213 additions and 263 deletions

View File

@ -1,21 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="res_partner_grade_bronze" model="res.partner.grade">
<field name="name">Bronze</field>
<field name="sequence">1</field>
</record>
<record id="res_partner_grade_silver" model="res.partner.grade">
<field name="name">Silver</field>
<field name="sequence">2</field>
<record id="res_partner_grade_platinium" model="res.partner.grade">
<field name="name">Platinum</field>
<field name="sequence">4</field>
</record>
<record id="res_partner_grade_gold" model="res.partner.grade">
<field name="name">Gold</field>
<field name="sequence">3</field>
</record>
<record id="res_partner_grade_platinium" model="res.partner.grade">
<field name="name">Platinum</field>
<field name="sequence">4</field>
<record id="res_partner_grade_silver" model="res.partner.grade">
<field name="name">Silver</field>
<field name="sequence">2</field>
</record>
<record id="res_partner_grade_bronze" model="res.partner.grade">
<field name="name">Bronze</field>
<field name="sequence">1</field>
</record>
<record id="base.res_partner_15" model="res.partner">

View File

@ -14,5 +14,5 @@ OpenERP Contact Form
'data/website_crm_data.xml',
'views/website_crm.xml',
],
'installable': False,
'installable': True,
}

View File

@ -7,14 +7,17 @@ from openerp.addons.web import http
from openerp.tools.translate import _
from openerp.addons.web.http import request
from openerp.addons.website.models import website
from openerp.addons.website_partner.controllers import main as website_partner
class WebsiteCrmPartnerAssign(http.Controller):
_references_per_page = 20
@website.route([
'/partners/', '/partners/page/<int:page>/',
'/partners/country/<int:country_id>', '/partners/country/page/<int:country_id>/',
'/partners/',
'/partners/page/<int:page>/',
'/partners/country/<int:country_id>',
'/partners/country/page/<int:country_id>/',
], type='http', auth="public", multilang=True)
def partners(self, country_id=0, page=0, **post):
country_obj = request.registry['res.country']
@ -24,7 +27,7 @@ class WebsiteCrmPartnerAssign(http.Controller):
country = None
# format displayed membership lines domain
base_partner_domain = [('is_company', '=', True)]
base_partner_domain = [('is_company', '=', True), ('grade_id', '!=', False), ('website_published', '=', True)]
partner_domain = list(base_partner_domain)
if grade_id and grade_id != "all":
partner_domain += [('grade_id', '=', int(grade_id))] # try/catch int
@ -36,26 +39,26 @@ class WebsiteCrmPartnerAssign(http.Controller):
# format pager
partner_ids = partner_obj.search(
request.cr, request.uid, partner_domain,
request.cr, openerp.SUPERUSER_ID, partner_domain,
context=request.context)
pager = request.website.pager(url="/partners/", total=len(partner_ids), page=page, step=self._references_per_page, scope=7, url_args=post)
# search for partners to display
partner_ids = partner_obj.search(
request.cr, request.uid, partner_domain,
request.cr, openerp.SUPERUSER_ID, partner_domain,
context=request.context,
limit=self._references_per_page, offset=pager['offset'],
order="grade_id ASC,partner_weight DESC")
google_map_partner_ids = ",".join([str(p) for p in partner_ids])
partners = partner_obj.browse(
request.cr, request.uid, partner_ids, request.context)
partners_data = partner_obj.read(
request.cr, openerp.SUPERUSER_ID, partner_ids, website_partner.white_list, context=request.context)
# group by country
countries = partner_obj.read_group(
request.cr, request.uid, base_partner_domain, ["id", "country_id"],
request.cr, openerp.SUPERUSER_ID, base_partner_domain, ["id", "country_id"],
groupby="country_id", orderby="country_id", context=request.context)
countries_partners = partner_obj.search(
request.cr, request.uid, base_partner_domain,
request.cr, openerp.SUPERUSER_ID, base_partner_domain,
context=request.context, count=True)
countries.insert(0, {
'country_id_count': countries_partners,
@ -64,10 +67,10 @@ class WebsiteCrmPartnerAssign(http.Controller):
# group by grade
grades = partner_obj.read_group(
request.cr, request.uid, base_partner_domain, ["id", "grade_id"],
request.cr, openerp.SUPERUSER_ID, base_partner_domain, ["id", "grade_id"],
groupby="grade_id", orderby="grade_id", context=request.context)
grades_partners = partner_obj.search(
request.cr, request.uid, base_partner_domain,
request.cr, openerp.SUPERUSER_ID, base_partner_domain,
context=request.context, count=True)
grades.insert(0, {
'grade_id_count': grades_partners,
@ -80,7 +83,7 @@ class WebsiteCrmPartnerAssign(http.Controller):
'current_country': country,
'grades': grades,
'grade_id': grade_id,
'partners': partners,
'partners_data': partners_data,
'google_map_partner_ids': google_map_partner_ids,
'pager': pager,
'searches': post,
@ -88,16 +91,9 @@ class WebsiteCrmPartnerAssign(http.Controller):
}
return request.website.render("website_crm_partner_assign.index", values)
@website.route(['/partners/<int:partner_id>/'], type='http', auth="public", multilang=True)
def partners_ref(self, partner_id=0, **post):
partner_obj = request.registry['res.partner']
partner_ids = partner_obj.search(request.cr, request.uid, [('id', '=', partner_id)], context=request.context)
if not partner_ids:
return self.members(post)
values = {
'partner_id': partner_obj.browse(
request.cr, request.uid, partner_ids[0],
context=dict(request.context, show_address=True)),
}
@website.route(['/partners/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
def partners_ref(self, partner, **post):
values = website_partner.get_partner_template_value(partner)
if not values:
return self.partners(**post)
return request.website.render("website_crm_partner_assign.partner", values)

View File

@ -75,22 +75,20 @@
</div>
</div>
<div>
<t t-foreach="partners" t-as="partner_id">
<t t-if="internal_gid != partner_id.grade_id.id">
<t t-set="internal_gid" t-value="partner_id.grade_id.id"/>
<t t-foreach="partners_data" t-as="partner_data">
<t t-if="internal_gid != partner_data['grade_id'][1]">
<h3 class="text-center">
<span t-field="partner_id.grade_id"/> Partners
<span t-esc="partner_data['grade_id'][1]"/> Partners
<t t-if="current_country"> in <t t-esc="current_country.name"/></t>
</h3>
</t>
<div class="media thumbnail">
<t t-call="website.publish_management"><t t-set="object" t-value="partner_id"/></t>
<a class="pull-left" t-href="/partners/#{ partner_id.id }/">
<img class="media-object" t-att-src="partner_id.img('image_small')"/>
<a class="pull-left" t-href="/partners/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/">
<img class="media-object" t-attf-src="data:image/png;base64,#{partner_data['image_small']}"/>
</a>
<div class="media-body" style="min-height: 64px;">
<a class="media-heading" t-href="/partners/#{ partner_id.id }/"><span t-field="partner_id.parent_id"/> <span t-field="partner_id.name"/></a> - <span t-field="partner_id.grade_id"/>
<div t-field="partner_id.website_short_description"/>
<a class="media-heading" t-href="/partners/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"><t t-if="partner_data['parent_id']"><span t-esc="partner_data['parent_id'][1]"/></t> <span t-esc="partner_data['name']"/></a> - <span t-esc="partner_data['grade_id'][1]"/>
<div t-esc="partner_data['website_short_description']"/>
</div>
</div>
</t>

View File

@ -40,5 +40,5 @@ OpenERP Customer References
'views/website_customer.xml',
],
'qweb': [],
'installable': False,
'installable': True,
}

View File

@ -5,6 +5,7 @@ from openerp.addons.web import http
from openerp.tools.translate import _
from openerp.addons.web.http import request
from openerp.addons.website.models import website
from openerp.addons.website_partner.controllers import main as website_partner
import urllib
@ -12,8 +13,10 @@ class WebsiteCustomer(http.Controller):
_references_per_page = 20
@website.route([
'/customers/', '/customers/page/<int:page>/',
'/customers/country/<int:country_id>', '/customers/country/<int:country_id>/page/<int:page>/'
'/customers/',
'/customers/page/<int:page>/',
'/customers/country/<int:country_id>',
'/customers/country/<int:country_id>/page/<int:page>/'
], type='http', auth="public", multilang=True)
def customers(self, country_id=None, page=0, **post):
cr, uid, context = request.cr, request.uid, request.context
@ -33,17 +36,17 @@ class WebsiteCustomer(http.Controller):
# group by country, based on all customers (base domain)
countries = partner_obj.read_group(
cr, uid, base_domain, ["id", "country_id"],
cr, openerp.SUPERUSER_ID, base_domain, ["id", "country_id"],
groupby="country_id", orderby="country_id", context=request.context)
country_count = partner_obj.search(
cr, uid, base_domain, count=True, context=request.context)
cr, openerp.SUPERUSER_ID, base_domain, count=True, context=request.context)
countries.insert(0, {
'country_id_count': country_count,
'country_id': (0, _("All Countries"))
})
# search customers to display
partner_ids = partner_obj.search(cr, uid, domain, context=request.context)
partner_ids = partner_obj.search(cr, openerp.SUPERUSER_ID, domain, context=request.context)
google_map_partner_ids = ",".join([str(p) for p in partner_ids])
# pager
@ -54,15 +57,14 @@ class WebsiteCustomer(http.Controller):
# browse page of customers to display
partner_ids = partner_obj.search(
cr, uid, domain,
cr, openerp.SUPERUSER_ID, domain,
limit=self._references_per_page, offset=pager['offset'], context=context)
partners = partner_obj.browse(request.cr, request.uid,
partner_ids, request.context)
partners_data = partner_obj.read(
request.cr, openerp.SUPERUSER_ID, partner_ids, website_partner.white_list, context=request.context)
values = {
'countries': countries,
'current_country_id': country_id or 0,
'partner_ids': partners,
'partners_data': partners_data,
'google_map_partner_ids': google_map_partner_ids,
'pager': pager,
'post': post,
@ -71,9 +73,23 @@ class WebsiteCustomer(http.Controller):
return request.website.render("website_customer.index", values)
@website.route(['/customers/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
def customer(self, partner=None, **post):
""" Route for displaying a single partner / customer. """
values = {
'partner': partner
}
def customer(self, partner, **post):
values = website_partner.get_partner_template_value(partner, ["commercial_partner_id", "assigned_partner_id", "implemented_partner_ids"])
if not values:
return self.customers(**post)
partner_obj = request.registry['res.partner']
if values['partner_data']['assigned_partner_id']:
values['assigned_partner_data'] = partner_obj.read(
request.cr, openerp.SUPERUSER_ID, [values['partner_data']['assigned_partner_id'][0]],
website_partner.white_list, context=request.context)[0]
if values['partner_data']['implemented_partner_ids']:
implemented_partners_data = partner_obj.read(
request.cr, openerp.SUPERUSER_ID, values['partner_data']['implemented_partner_ids'],
website_partner.white_list, context=request.context)
values['implemented_partners_data'] = []
for data in implemented_partners_data:
if data.get('website_published'):
values['implemented_partners_data'].append(data)
return request.website.render("website_customer.details", values)

View File

@ -39,16 +39,16 @@
</div>
<div class="row">
<t t-foreach="partner_ids" t-as="partner" class="media">
<t t-foreach="partners_data" t-as="partner_data" class="media">
<div class="col-md-2">
<a t-href="/customers/#{ slug(partner) }/">
<img class="img img-thumbnail" t-att-src="partner.img('image_medium')"/>
<a t-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/">
<img class="img img-thumbnail" t-attf-src="data:image/png;base64,#{partner_data.get('image')}"/>
</a>
</div><div class="col-md-10">
<h4>
<a t-href="/customers/#{ slug(partner) }/" t-field="partner.name"/>
<a t-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/" t-esc="partner_data.get('name')"/>
</h4>
<div t-field="partner.website_short_description"/>
<div t-raw="partner_data.get('website_short_description')"/>
</div>
<div class="clearfix mb8"/>
</t>
@ -66,7 +66,7 @@
<template id="opt_country" inherit_option_id="website_customer.index" name="Show Map">
<xpath expr="//div[@id='ref_left_column']" position="inside">
<iframe t-attf-src="/google_map/?partner_ids=#{ google_map_partner_ids }&amp;partner_url=/customers/&amp;output=embed"
<iframe t-attf-src="/google_map/?partner_ids=#{ google_map_partner_ids }&amp;partner_url=/customers/&amp;output=embed/"
style="width:100%; border:0; padding:0; margin:0;"></iframe>
</xpath>
</template>
@ -78,7 +78,7 @@
<t t-foreach="countries" t-as="country_dict">
<t t-if="country_dict['country_id']">
<li t-att-class="country_dict['country_id'][0] == current_country_id and 'active' or ''">
<a t-href="/customers/country/#{ country_dict['country_id'][0] }">
<a t-href="/customers/country/#{ slug(country_dict['country_id']) }/">
<span class="badge pull-right" t-esc="country_dict['country_id_count']"/>
<t t-esc="country_dict['country_id'][1]"/>
</a>
@ -99,20 +99,17 @@
<div class="col-md-5">
<ol class="breadcrumb">
<li><a href="/customers">Our References</a></li>
<li class="active"><span t-field="partner.name"/></li>
<li class="active"><span t-esc="partner_data.get('name')"/></li>
</ol>
</div>
<div class="col-md-7">
<t t-call="website.publish_management"><t t-set="object" t-value="partner"/></t>
</div>
<div class="col-md-12">
<h1 class="text-center" t-field="partner.name"/>
</div>
<div class="col-md-9">
<div t-field="partner.website_description"/>
</div>
<div class="col-md-3" id="ref_right_column">
</div>
<t t-call="website_partner.partner_detail">
<t t-set="left_column">
<div id="left_column"></div>
</t>
<t t-set="right_column">
<div id="right_column"></div>
</t>
</t>
</div>
</div>
<div class="oe_structure"/>
@ -121,25 +118,27 @@
</template>
<template id="customer_contact" inherit_id="website_customer.details" inherit_option_id="website_customer.details" name="Customer Contacts">
<xpath expr="//div[@id='ref_right_column']" position="inside">
<xpath expr="//div[@id='left_column']" position="inside">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Customer Reference</h4>
</div>
<div class="panel-body">
<div class="text-center">
<img t-att-src="partner.img('image')" class="img img-shadow"/>
<img class="img img-shadow" t-attf-src="data:image/png;base64,#{partner_data.get('image_medium')}"/>
</div>
<address class="mt16 mb8">
<strong t-field="partner.name"/>
<p t-field="partner.commercial_partner_id"/>
<div t-if="partner.phone">
<span class="fa fa-phone"/> <span t-field="partner.phone"/>
<strong t-esc="partner_data.get('name')"/>
<t t-if="partner_data.get('commercial_partner_id')">
<p t-raw="'&lt;br/&gt;'.join(partner_data.get('commercial_partner_id')[1].split('\n')[1:])"/>
</t>
<div t-if="partner_data.get('phone')">
<span class="fa fa-phone"/> <span t-esc="partner_data.get('phone')"/>
</div>
<div t-if="partner.email">
<div t-if="partner_data.get('email')">
<span class="fa fa-envelope"/>
<a t-att-href="'mailto:'+partner.email">
<span t-field="partner.email"/>
<a t-att-href="'mailto:'+partner_data.get('email')">
<span t-esc="partner_data.get('email')"/>
</a>
</div>
</address>
@ -148,5 +147,58 @@
</xpath>
</template>
<template id="partner_assign" inherit_option_id="website_customer.details" inherit_id="website_customer.details" name="Implemented By">
<xpath expr="//div[@id='left_column']" position="inside">
<t t-if="assigned_partner_data">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Implemented By</h4>
</div>
<div class="panel-body">
<div class="text-center">
<img class="img img-shadow" t-attf-src="data:image/png;base64,#{assigned_partner_data.get('image_medium')}"/>
</div>
<address class="mt16 mb8">
<strong t-esc="assigned_partner_data.get('name')"/>
<div t-if="assigned_partner_data.get('phone')">
<span class="fa fa-phone"/> <span t-esc="assigned_partner_data.get('phone')"/>
</div>
<div t-if="assigned_partner_data.get('email')">
<span class="fa fa-envelope"/>
<a t-att-href="'mailto:'+assigned_partner_data.get('email')">
<span t-esc="assigned_partner_data.get('email')"/>
</a>
</div>
</address>
<div>
<a t-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/#references/" t-if="implemented_partner_ids">
<t t-esc="len(implemented_partner_ids)"/> references
</a>
</div>
</div>
</div>
</t>
</xpath>
</template>
<template id="references" inherit_id="website_customer.details" name="Partner References">
<xpath expr="//div[@id='right_column']" position="inside">
<t t-if="implemented_partners_data">
<h3 id="references">References</h3>
<div t-foreach="implemented_partners_data" t-as="partner_data" class="media thumbnail">
<a class="pull-left" t-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/">
<img class="media-object" t-attf-src="data:image/png;base64,#{partner_data.get('image_small')}"/>
</a>
<div class="media-body" style="min-height: 64px;">
<a class="media-heading" t-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/">
<t t-if="partner_data.get('parent_id')"><span t-esc="partner_data.get('parent_id')[1]"/></t> <span t-esc="partner_data.get('name')"/>
</a>
<div t-if="partner_data.get('website_short_description')" t-raw="partner_data.get('website_short_description')"/>
</div>
</div>
</t>
</xpath>
</template>
</data>
</openerp>

View File

@ -1,20 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2013-Today OpenERP S.A. (<http://www.openerp.com>).
#
# 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/>.
#
##############################################################################

View File

@ -1,42 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2013-Today OpenERP S.A. (<http://www.openerp.com>).
#
# 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/>.
#
##############################################################################
{
'name': 'Public Customer References + Partner Assign',
'category': 'Website',
'summary': 'Add Partner Assignment Info to your Customer References',
'version': '1.0',
'description': """
OpenERP Customer References + Partner Assign
============================================
""",
'author': 'OpenERP SA',
'depends': [
'crm_partner_assign',
'website_customer'
],
'data': [
'views/website_customer.xml',
],
'qweb': [],
'installable': False,
'auto_install': False,
}

View File

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="partner_assign" inherit_option_id="website_customer.details" inherit_id="website_customer.details" name="Implemented By">
<xpath expr="//div[@id='ref_right_column']" position="inside">
<t t-if="partner.assigned_partner_id">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Implemented By</h4>
</div>
<div class="panel-body">
<div class="text-center">
<img t-att-src="partner.assigned_partner_id.img('image')" class="img img-shadow"/>
</div>
<address class="mt16 mb8">
<strong t-field="partner.assigned_partner_id.name"/>
<p t-field="partner.assigned_partner_id"/>
<div t-if="partner.assigned_partner_id.phone">
<span class="fa fa-phone"/> <span t-field="partner.assigned_partner_id.phone"/>
</div>
<div t-if="partner.assigned_partner_id.email">
<span class="fa fa-envelope"/>
<a t-att-href="'mailto:'+partner.assigned_partner_id.email">
<span t-field="partner.assigned_partner_id.email"/>
</a>
</div>
</address>
<div>
<a t-href="/customers/#{ slug(partner) }#references" t-if="partner.implemented_partner_ids">
<t t-esc="len(partner.implemented_partner_ids)"/> references
</a>
</div>
</div>
</div>
</t>
</xpath>
</template>
<template id="references" inherit_id="website_customer.details" name="Partner References">
<xpath expr="//div[@t-field='partner.website_description']" position="after">
<h3 id="references">References</h3>
<div>
<div t-foreach="partner.implemented_partner_ids" t-as="partner" class="media thumbnail">
<t t-call="website.publish_management"><t t-set="object" t-value="partner"/></t>
<a class="pull-left" t-href="/customers/#{ slug(partner) }/">
<img class="media-object" t-att-src="partner.img('image_small')"/>
</a>
<div class="media-body" style="min-height: 64px;">
<a class="media-heading" t-href="/customers/#{ slug(partner) }/"><span t-field="partner.parent_id"/> <span t-field="partner.name"/></a>
<div t-field="partner.website_short_description"/>
</div>
</div>
</div>
</xpath>
</template>
</data>
</openerp>

View File

@ -4,6 +4,7 @@ import openerp
from openerp.addons.web import http
from openerp.addons.web.http import request
from openerp.addons.website.models import website
from openerp.addons.website_partner.controllers import main as website_partner
from openerp.tools.translate import _
import urllib
@ -39,7 +40,7 @@ class WebsiteMembership(http.Controller):
# group by country, based on all customers (base domain)
membership_line_ids = membership_line_obj.search(cr, uid, base_line_domain, context=context)
countries = partner_obj.read_group(
cr, uid, [('member_lines', 'in', membership_line_ids)], ["id", "country_id"],
cr, uid, [('member_lines', 'in', membership_line_ids), ("website_published", "=", True)], ["id", "country_id"],
groupby="country_id", orderby="country_id", context=request.context)
countries_total = sum(country_dict['country_id_count'] for country_dict in countries)
countries.insert(0, {
@ -57,6 +58,10 @@ class WebsiteMembership(http.Controller):
partner_ids = [m.partner and m.partner.id for m in membership_lines]
google_map_partner_ids = ",".join(map(str, partner_ids))
partners_data = {}
for partner in partner_obj.read(cr, openerp.SUPERUSER_ID, partner_ids, website_partner.white_list, context=context):
partners_data[partner.get("id")] = partner
# format domain for group_by and memberships
membership_ids = product_obj.search(cr, uid, [('membership', '=', True)], context=context)
memberships = product_obj.browse(cr, uid, membership_ids, context=context)
@ -65,6 +70,7 @@ class WebsiteMembership(http.Controller):
pager = request.website.pager(url="/members/", total=len(membership_line_ids), page=page, step=self._references_per_page, scope=7, url_args=post)
values = {
'partners_data': partners_data,
'membership_lines': membership_lines,
'memberships': memberships,
'membership': membership,
@ -78,12 +84,7 @@ class WebsiteMembership(http.Controller):
@website.route(['/members/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
def partners_ref(self, partner, **post):
if not partner.exists():
values = website_partner.get_partner_template_value(partner)
if not values:
return self.members(**post)
values = {
'partner_id': request.registry['res.partner'].browse(
request.cr, request.uid, partner.id,
context=dict(request.context, show_address=True)),
}
return request.website.render("website_membership.partner", values)

View File

@ -31,7 +31,7 @@
<div class="col-md-4" id="left_column">
<ul class="nav nav-pills nav-stacked mt16">
<li class="nav-header"><h3>Associations</h3></li>
<li t-att-class="membership and '' or 'active'"><a href="/members/">All</a></li>
<li t-att-class="'' if membership else 'active'"><a href="/members/">All</a></li>
<t t-foreach="memberships" t-as="membership_id">
<li t-att-class="membership and membership_id.id == membership.id and 'active' or ''">
<a t-href="/members/association/#{ membership_id.id }"><t t-esc="membership_id.name"/></a>
@ -59,17 +59,14 @@
<t t-set="current_membership_id" t-value="membership_line_id.membership_id.id"/>
<h3 class="text-center"><span t-field="membership_line_id.membership_id"/></h3>
</t>
<t t-set="partner" t-value="membership_line_id.partner"/>
<t t-set="partner_data" t-value="partners_data[membership_line_id.partner.id]"/>
<div class="media">
<t t-call="website.publish_management">
<t t-set="object" t-value="partner"/>
</t>
<a class="pull-left" t-href="/members/#{ slug(partner) }/">
<img class="media-object" t-att-src="partner.img('image_small')"/>
<a class="pull-left" t-href="/members/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/">
<img class="media-object" t-attf-src="data:image/png;base64,#{partner_data.get('image_small')}"/>
</a>
<div class="media-body" style="min-height: 64px;">
<a class="media-heading" t-href="/members/#{ slug(partner) }/"><span t-field="partner.parent_id"/> <span t-field="partner.name"/></a>
<div t-field="partner.website_short_description"/>
<a class="media-heading" t-href="/members/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"><t t-if="partner_data.get('parent_id')"><span t-esc="partner_data.get('parent_id')[1]"/></t> <span t-esc="partner_data.get('name')"/></a>
<div t-raw="partner_data.get('website_short_description')"/>
</div>
</div>
</t>

View File

@ -30,7 +30,6 @@
'data': [
'views/res_partner_view.xml',
'views/website_partner_view.xml',
'security/website_partner_security.xml',
'data/website_data.xml',
],
'demo': ['website_partner_demo.xml'],

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<!-- <data noupdate="1"> -->
<data>
<!-- res_partner related security rules -->
<record id="res_partner_public_website_rule" model="ir.rule">
<field name="name">res_partner: public: child of commercial_partner + website_published partners</field>
<field name="model_id" ref="base.model_res_partner"/>
<field name="domain_force">['|', ('id', 'child_of', user.commercial_partner_id.id), ('website_published', '=', True)]</field>
<field name="groups" eval="[(4, ref('base.group_public'))]"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="perm_write" eval="False"/>
</record>
</data>
</openerp>

View File

@ -2,12 +2,17 @@
<openerp>
<data>
<template id="partner_detail" name="Partner">
<t t-call="website.publish_management"><t t-set="object" t-value="partner_id"/></t>
<h1 class="col-md-12 text-center" t-field="partner_id.name"/>
<template id="partner_detail" name="Partner Details (Complex Template for Access Right)">
<t t-if="partner" t-call="website.publish_management">
<t t-set="object" t-value="partner"/>
<t t-set="publish_edit" t-value="True"/>
</t>
<t t-if="partner"><h1 class="col-md-12 text-center" t-field="partner.name"/></t>
<t t-if="not partner"><h1 class="col-md-12 text-center" t-esc="partner_data.get('name_get')[1]"/></t>
<div class="col-md-4">
<div class="text-center">
<img t-att-src="partner_id.img('image_medium')"/>
<t t-if="partner"><img t-att-src="partner.img('image')"/></t>
<t t-if="not partner"><img t-attf-src="data:image/png;base64,#{partner_data.get('image')}"/></t>
</div>
<address>
<table style="margin: auto;" class="well">
@ -16,24 +21,49 @@
<col/>
</colgroup>
<tbody>
<t t-set="address" t-value="'&lt;br/&gt;'.join(partner_id.name_get()[0][1].split('\n')[1:])"/>
<tr t-if="address or editable"><th class="texttop">Address</th><td class="span2" t-raw="address"/></tr>
<tr t-if="partner_id.website or editable"><th>Website</th><td class="span2">
<t t-if="partner_id.website"><span t-field="partner_id.website"/></t></td></tr>
<tr t-if="partner_id.phone or editable"><th>Phone</th><td class="span2">
<t t-if="partner_id.phone"><span t-field="partner_id.phone"/></t></td></tr>
<tr t-if="partner_id.mobile or editable"><th>Tel</th><td class="span2">
<t t-if="partner_id.mobile"><span t-field="partner_id.mobile"/></t></td></tr>
<tr t-if="partner_id.fax or editable"><th>Fax</th><td class="span2">
<t t-if="partner_id.fax"><span t-field="partner_id.fax"/></t></td></tr>
<tr t-if="partner_id.email or editable"><th>Email</th><td class="span2">
<t t-if="partner_id.email"><span t-field="partner_id.email"/></t></td></tr>
<t t-if="partner">
<t t-set="address" t-value="'&lt;br/&gt;'.join(partner.name_get()[0][1].split('\n')[1:])"/>
<tr t-if="address or editable"><th class="texttop">Address</th><td class="span2" t-raw="address"/></tr>
</t>
<tr t-if="not partner and partner_data.get('address')"><th class="texttop">Address</th><td class="span2" t-raw="partner_data.get('address')"/></tr>
<tr t-if="partner and (partner.website or editable)"><th>Website</th><td class="span2">
<t t-if="partner.website"><span t-field="partner.website"/></t></td></tr>
<tr t-if="partner_data.get('website')"><th>Website</th><td class="span2"><span t-esc="partner_data.get('website')"/></td></tr>
<tr t-if="partner and (partner.phone or editable)"><th>Phone</th><td class="span2">
<t t-if="partner.phone"><span t-field="partner.phone"/></t></td></tr>
<tr t-if="partner_data.get('phone')"><th>Phone</th><td class="span2"><span t-esc="partner_data.get('phone')"/></td></tr>
<tr t-if="partner and (partner.mobile or editable)"><th>Tel</th><td class="span2">
<t t-if="partner.mobile"><span t-field="partner.mobile"/></t></td></tr>
<tr t-if="partner_data.get('mobile')"><th>Tel</th><td class="span2"><span t-esc="partner_data.get('mobile')"/></td></tr>
<tr t-if="partner and (partner.fax or editable)"><th>Fax</th><td class="span2">
<t t-if="partner.fax"><span t-field="partner.fax"/></t></td></tr>
<tr t-if="partner_data.get('fax')"><th>Fax</th><td class="span2"><span t-esc="partner_data.get('fax')"/></td></tr>
<tr t-if="partner and (partner.email or editable)"><th>Email</th><td class="span2">
<t t-if="partner.email"><span t-field="partner.email"/></t></td></tr>
<tr t-if="partner_data.get('email')"><th>Email</th><td class="span2"><span t-esc="partner_data.get('email')"/></td></tr>
</tbody>
</table>
</address>
<t t-raw="left_column or ''"/>
</div>
<div class="col-md-8 mt32">
<t t-if="partner">
<div t-field="partner.website_description"/>
<t t-if="editable">
<h2 class="css_non_editable_mode_hidden">Short Description for List View</h2>
<div class="css_non_editable_mode_hidden" t-field="partner.website_short_description"/>
</t>
</t>
<t t-if="not partner">
<div class="col-md-8 mt32" t-raw="partner_data.get('website_description')"/>
</t>
<t t-raw="right_column or ''"/>
</div>
<div class="col-md-8 mt32" t-field="partner_id.website_description"/>
</template>
</data>
</openerp>