[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:
parent
2db8e35792
commit
b777fddb30
|
@ -1,21 +1,21 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<openerp>
|
<openerp>
|
||||||
<data>
|
<data>
|
||||||
<record id="res_partner_grade_bronze" model="res.partner.grade">
|
<record id="res_partner_grade_platinium" model="res.partner.grade">
|
||||||
<field name="name">Bronze</field>
|
<field name="name">Platinum</field>
|
||||||
<field name="sequence">1</field>
|
<field name="sequence">4</field>
|
||||||
</record>
|
|
||||||
<record id="res_partner_grade_silver" model="res.partner.grade">
|
|
||||||
<field name="name">Silver</field>
|
|
||||||
<field name="sequence">2</field>
|
|
||||||
</record>
|
</record>
|
||||||
<record id="res_partner_grade_gold" model="res.partner.grade">
|
<record id="res_partner_grade_gold" model="res.partner.grade">
|
||||||
<field name="name">Gold</field>
|
<field name="name">Gold</field>
|
||||||
<field name="sequence">3</field>
|
<field name="sequence">3</field>
|
||||||
</record>
|
</record>
|
||||||
<record id="res_partner_grade_platinium" model="res.partner.grade">
|
<record id="res_partner_grade_silver" model="res.partner.grade">
|
||||||
<field name="name">Platinum</field>
|
<field name="name">Silver</field>
|
||||||
<field name="sequence">4</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>
|
||||||
|
|
||||||
<record id="base.res_partner_15" model="res.partner">
|
<record id="base.res_partner_15" model="res.partner">
|
||||||
|
|
|
@ -14,5 +14,5 @@ OpenERP Contact Form
|
||||||
'data/website_crm_data.xml',
|
'data/website_crm_data.xml',
|
||||||
'views/website_crm.xml',
|
'views/website_crm.xml',
|
||||||
],
|
],
|
||||||
'installable': False,
|
'installable': True,
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,14 +7,17 @@ from openerp.addons.web import http
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
from openerp.addons.web.http import request
|
from openerp.addons.web.http import request
|
||||||
from openerp.addons.website.models import website
|
from openerp.addons.website.models import website
|
||||||
|
from openerp.addons.website_partner.controllers import main as website_partner
|
||||||
|
|
||||||
|
|
||||||
class WebsiteCrmPartnerAssign(http.Controller):
|
class WebsiteCrmPartnerAssign(http.Controller):
|
||||||
_references_per_page = 20
|
_references_per_page = 20
|
||||||
|
|
||||||
@website.route([
|
@website.route([
|
||||||
'/partners/', '/partners/page/<int:page>/',
|
'/partners/',
|
||||||
'/partners/country/<int:country_id>', '/partners/country/page/<int:country_id>/',
|
'/partners/page/<int:page>/',
|
||||||
|
'/partners/country/<int:country_id>',
|
||||||
|
'/partners/country/page/<int:country_id>/',
|
||||||
], type='http', auth="public", multilang=True)
|
], type='http', auth="public", multilang=True)
|
||||||
def partners(self, country_id=0, page=0, **post):
|
def partners(self, country_id=0, page=0, **post):
|
||||||
country_obj = request.registry['res.country']
|
country_obj = request.registry['res.country']
|
||||||
|
@ -24,7 +27,7 @@ class WebsiteCrmPartnerAssign(http.Controller):
|
||||||
country = None
|
country = None
|
||||||
|
|
||||||
# format displayed membership lines domain
|
# 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)
|
partner_domain = list(base_partner_domain)
|
||||||
if grade_id and grade_id != "all":
|
if grade_id and grade_id != "all":
|
||||||
partner_domain += [('grade_id', '=', int(grade_id))] # try/catch int
|
partner_domain += [('grade_id', '=', int(grade_id))] # try/catch int
|
||||||
|
@ -36,26 +39,26 @@ class WebsiteCrmPartnerAssign(http.Controller):
|
||||||
|
|
||||||
# format pager
|
# format pager
|
||||||
partner_ids = partner_obj.search(
|
partner_ids = partner_obj.search(
|
||||||
request.cr, request.uid, partner_domain,
|
request.cr, openerp.SUPERUSER_ID, partner_domain,
|
||||||
context=request.context)
|
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)
|
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
|
# search for partners to display
|
||||||
partner_ids = partner_obj.search(
|
partner_ids = partner_obj.search(
|
||||||
request.cr, request.uid, partner_domain,
|
request.cr, openerp.SUPERUSER_ID, partner_domain,
|
||||||
context=request.context,
|
context=request.context,
|
||||||
limit=self._references_per_page, offset=pager['offset'],
|
limit=self._references_per_page, offset=pager['offset'],
|
||||||
order="grade_id ASC,partner_weight DESC")
|
order="grade_id ASC,partner_weight DESC")
|
||||||
google_map_partner_ids = ",".join([str(p) for p in partner_ids])
|
google_map_partner_ids = ",".join([str(p) for p in partner_ids])
|
||||||
partners = partner_obj.browse(
|
partners_data = partner_obj.read(
|
||||||
request.cr, request.uid, partner_ids, request.context)
|
request.cr, openerp.SUPERUSER_ID, partner_ids, website_partner.white_list, context=request.context)
|
||||||
|
|
||||||
# group by country
|
# group by country
|
||||||
countries = partner_obj.read_group(
|
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)
|
groupby="country_id", orderby="country_id", context=request.context)
|
||||||
countries_partners = partner_obj.search(
|
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)
|
context=request.context, count=True)
|
||||||
countries.insert(0, {
|
countries.insert(0, {
|
||||||
'country_id_count': countries_partners,
|
'country_id_count': countries_partners,
|
||||||
|
@ -64,10 +67,10 @@ class WebsiteCrmPartnerAssign(http.Controller):
|
||||||
|
|
||||||
# group by grade
|
# group by grade
|
||||||
grades = partner_obj.read_group(
|
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)
|
groupby="grade_id", orderby="grade_id", context=request.context)
|
||||||
grades_partners = partner_obj.search(
|
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)
|
context=request.context, count=True)
|
||||||
grades.insert(0, {
|
grades.insert(0, {
|
||||||
'grade_id_count': grades_partners,
|
'grade_id_count': grades_partners,
|
||||||
|
@ -80,7 +83,7 @@ class WebsiteCrmPartnerAssign(http.Controller):
|
||||||
'current_country': country,
|
'current_country': country,
|
||||||
'grades': grades,
|
'grades': grades,
|
||||||
'grade_id': grade_id,
|
'grade_id': grade_id,
|
||||||
'partners': partners,
|
'partners_data': partners_data,
|
||||||
'google_map_partner_ids': google_map_partner_ids,
|
'google_map_partner_ids': google_map_partner_ids,
|
||||||
'pager': pager,
|
'pager': pager,
|
||||||
'searches': post,
|
'searches': post,
|
||||||
|
@ -88,16 +91,9 @@ class WebsiteCrmPartnerAssign(http.Controller):
|
||||||
}
|
}
|
||||||
return request.website.render("website_crm_partner_assign.index", values)
|
return request.website.render("website_crm_partner_assign.index", values)
|
||||||
|
|
||||||
@website.route(['/partners/<int:partner_id>/'], type='http', auth="public", multilang=True)
|
@website.route(['/partners/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
|
||||||
def partners_ref(self, partner_id=0, **post):
|
def partners_ref(self, partner, **post):
|
||||||
partner_obj = request.registry['res.partner']
|
values = website_partner.get_partner_template_value(partner)
|
||||||
partner_ids = partner_obj.search(request.cr, request.uid, [('id', '=', partner_id)], context=request.context)
|
if not values:
|
||||||
if not partner_ids:
|
return self.partners(**post)
|
||||||
return self.members(post)
|
|
||||||
|
|
||||||
values = {
|
|
||||||
'partner_id': partner_obj.browse(
|
|
||||||
request.cr, request.uid, partner_ids[0],
|
|
||||||
context=dict(request.context, show_address=True)),
|
|
||||||
}
|
|
||||||
return request.website.render("website_crm_partner_assign.partner", values)
|
return request.website.render("website_crm_partner_assign.partner", values)
|
||||||
|
|
|
@ -75,22 +75,20 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<t t-foreach="partners" t-as="partner_id">
|
<t t-foreach="partners_data" t-as="partner_data">
|
||||||
<t t-if="internal_gid != partner_id.grade_id.id">
|
<t t-if="internal_gid != partner_data['grade_id'][1]">
|
||||||
<t t-set="internal_gid" t-value="partner_id.grade_id.id"/>
|
|
||||||
<h3 class="text-center">
|
<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>
|
<t t-if="current_country"> in <t t-esc="current_country.name"/></t>
|
||||||
</h3>
|
</h3>
|
||||||
</t>
|
</t>
|
||||||
<div class="media thumbnail">
|
<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/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/">
|
||||||
<a class="pull-left" t-href="/partners/#{ partner_id.id }/">
|
<img class="media-object" t-attf-src="data:image/png;base64,#{partner_data['image_small']}"/>
|
||||||
<img class="media-object" t-att-src="partner_id.img('image_small')"/>
|
|
||||||
</a>
|
</a>
|
||||||
<div class="media-body" style="min-height: 64px;">
|
<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"/>
|
<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-field="partner_id.website_short_description"/>
|
<div t-esc="partner_data['website_short_description']"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
|
|
|
@ -40,5 +40,5 @@ OpenERP Customer References
|
||||||
'views/website_customer.xml',
|
'views/website_customer.xml',
|
||||||
],
|
],
|
||||||
'qweb': [],
|
'qweb': [],
|
||||||
'installable': False,
|
'installable': True,
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ from openerp.addons.web import http
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
from openerp.addons.web.http import request
|
from openerp.addons.web.http import request
|
||||||
from openerp.addons.website.models import website
|
from openerp.addons.website.models import website
|
||||||
|
from openerp.addons.website_partner.controllers import main as website_partner
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,8 +13,10 @@ class WebsiteCustomer(http.Controller):
|
||||||
_references_per_page = 20
|
_references_per_page = 20
|
||||||
|
|
||||||
@website.route([
|
@website.route([
|
||||||
'/customers/', '/customers/page/<int:page>/',
|
'/customers/',
|
||||||
'/customers/country/<int:country_id>', '/customers/country/<int:country_id>/page/<int:page>/'
|
'/customers/page/<int:page>/',
|
||||||
|
'/customers/country/<int:country_id>',
|
||||||
|
'/customers/country/<int:country_id>/page/<int:page>/'
|
||||||
], type='http', auth="public", multilang=True)
|
], type='http', auth="public", multilang=True)
|
||||||
def customers(self, country_id=None, page=0, **post):
|
def customers(self, country_id=None, page=0, **post):
|
||||||
cr, uid, context = request.cr, request.uid, request.context
|
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)
|
# group by country, based on all customers (base domain)
|
||||||
countries = partner_obj.read_group(
|
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)
|
groupby="country_id", orderby="country_id", context=request.context)
|
||||||
country_count = partner_obj.search(
|
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, {
|
countries.insert(0, {
|
||||||
'country_id_count': country_count,
|
'country_id_count': country_count,
|
||||||
'country_id': (0, _("All Countries"))
|
'country_id': (0, _("All Countries"))
|
||||||
})
|
})
|
||||||
|
|
||||||
# search customers to display
|
# 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])
|
google_map_partner_ids = ",".join([str(p) for p in partner_ids])
|
||||||
|
|
||||||
# pager
|
# pager
|
||||||
|
@ -54,15 +57,14 @@ class WebsiteCustomer(http.Controller):
|
||||||
|
|
||||||
# browse page of customers to display
|
# browse page of customers to display
|
||||||
partner_ids = partner_obj.search(
|
partner_ids = partner_obj.search(
|
||||||
cr, uid, domain,
|
cr, openerp.SUPERUSER_ID, domain,
|
||||||
limit=self._references_per_page, offset=pager['offset'], context=context)
|
limit=self._references_per_page, offset=pager['offset'], context=context)
|
||||||
partners = partner_obj.browse(request.cr, request.uid,
|
partners_data = partner_obj.read(
|
||||||
partner_ids, request.context)
|
request.cr, openerp.SUPERUSER_ID, partner_ids, website_partner.white_list, context=request.context)
|
||||||
|
|
||||||
values = {
|
values = {
|
||||||
'countries': countries,
|
'countries': countries,
|
||||||
'current_country_id': country_id or 0,
|
'current_country_id': country_id or 0,
|
||||||
'partner_ids': partners,
|
'partners_data': partners_data,
|
||||||
'google_map_partner_ids': google_map_partner_ids,
|
'google_map_partner_ids': google_map_partner_ids,
|
||||||
'pager': pager,
|
'pager': pager,
|
||||||
'post': post,
|
'post': post,
|
||||||
|
@ -71,9 +73,23 @@ class WebsiteCustomer(http.Controller):
|
||||||
return request.website.render("website_customer.index", values)
|
return request.website.render("website_customer.index", values)
|
||||||
|
|
||||||
@website.route(['/customers/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
|
@website.route(['/customers/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
|
||||||
def customer(self, partner=None, **post):
|
def customer(self, partner, **post):
|
||||||
""" Route for displaying a single partner / customer. """
|
values = website_partner.get_partner_template_value(partner, ["commercial_partner_id", "assigned_partner_id", "implemented_partner_ids"])
|
||||||
values = {
|
if not values:
|
||||||
'partner': partner
|
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)
|
return request.website.render("website_customer.details", values)
|
||||||
|
|
|
@ -39,16 +39,16 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<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">
|
<div class="col-md-2">
|
||||||
<a t-href="/customers/#{ slug(partner) }/">
|
<a t-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/">
|
||||||
<img class="img img-thumbnail" t-att-src="partner.img('image_medium')"/>
|
<img class="img img-thumbnail" t-attf-src="data:image/png;base64,#{partner_data.get('image')}"/>
|
||||||
</a>
|
</a>
|
||||||
</div><div class="col-md-10">
|
</div><div class="col-md-10">
|
||||||
<h4>
|
<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>
|
</h4>
|
||||||
<div t-field="partner.website_short_description"/>
|
<div t-raw="partner_data.get('website_short_description')"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="clearfix mb8"/>
|
<div class="clearfix mb8"/>
|
||||||
</t>
|
</t>
|
||||||
|
@ -66,7 +66,7 @@
|
||||||
<template id="opt_country" inherit_option_id="website_customer.index" name="Show Map">
|
<template id="opt_country" inherit_option_id="website_customer.index" name="Show Map">
|
||||||
<xpath expr="//div[@id='ref_left_column']" position="inside">
|
<xpath expr="//div[@id='ref_left_column']" position="inside">
|
||||||
|
|
||||||
<iframe t-attf-src="/google_map/?partner_ids=#{ google_map_partner_ids }&partner_url=/customers/&output=embed"
|
<iframe t-attf-src="/google_map/?partner_ids=#{ google_map_partner_ids }&partner_url=/customers/&output=embed/"
|
||||||
style="width:100%; border:0; padding:0; margin:0;"></iframe>
|
style="width:100%; border:0; padding:0; margin:0;"></iframe>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
<t t-foreach="countries" t-as="country_dict">
|
<t t-foreach="countries" t-as="country_dict">
|
||||||
<t t-if="country_dict['country_id']">
|
<t t-if="country_dict['country_id']">
|
||||||
<li t-att-class="country_dict['country_id'][0] == current_country_id and 'active' or ''">
|
<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']"/>
|
<span class="badge pull-right" t-esc="country_dict['country_id_count']"/>
|
||||||
<t t-esc="country_dict['country_id'][1]"/>
|
<t t-esc="country_dict['country_id'][1]"/>
|
||||||
</a>
|
</a>
|
||||||
|
@ -99,20 +99,17 @@
|
||||||
<div class="col-md-5">
|
<div class="col-md-5">
|
||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li><a href="/customers">Our References</a></li>
|
<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>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-7">
|
<t t-call="website_partner.partner_detail">
|
||||||
<t t-call="website.publish_management"><t t-set="object" t-value="partner"/></t>
|
<t t-set="left_column">
|
||||||
</div>
|
<div id="left_column"></div>
|
||||||
<div class="col-md-12">
|
</t>
|
||||||
<h1 class="text-center" t-field="partner.name"/>
|
<t t-set="right_column">
|
||||||
</div>
|
<div id="right_column"></div>
|
||||||
<div class="col-md-9">
|
</t>
|
||||||
<div t-field="partner.website_description"/>
|
</t>
|
||||||
</div>
|
|
||||||
<div class="col-md-3" id="ref_right_column">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_structure"/>
|
<div class="oe_structure"/>
|
||||||
|
@ -121,25 +118,27 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template id="customer_contact" inherit_id="website_customer.details" inherit_option_id="website_customer.details" name="Customer Contacts">
|
<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 panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h4>Customer Reference</h4>
|
<h4>Customer Reference</h4>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="text-center">
|
<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>
|
</div>
|
||||||
<address class="mt16 mb8">
|
<address class="mt16 mb8">
|
||||||
<strong t-field="partner.name"/>
|
<strong t-esc="partner_data.get('name')"/>
|
||||||
<p t-field="partner.commercial_partner_id"/>
|
<t t-if="partner_data.get('commercial_partner_id')">
|
||||||
<div t-if="partner.phone">
|
<p t-raw="'<br/>'.join(partner_data.get('commercial_partner_id')[1].split('\n')[1:])"/>
|
||||||
<span class="fa fa-phone"/> <span t-field="partner.phone"/>
|
</t>
|
||||||
|
<div t-if="partner_data.get('phone')">
|
||||||
|
<span class="fa fa-phone"/> <span t-esc="partner_data.get('phone')"/>
|
||||||
</div>
|
</div>
|
||||||
<div t-if="partner.email">
|
<div t-if="partner_data.get('email')">
|
||||||
<span class="fa fa-envelope"/>
|
<span class="fa fa-envelope"/>
|
||||||
<a t-att-href="'mailto:'+partner.email">
|
<a t-att-href="'mailto:'+partner_data.get('email')">
|
||||||
<span t-field="partner.email"/>
|
<span t-esc="partner_data.get('email')"/>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</address>
|
</address>
|
||||||
|
@ -148,5 +147,58 @@
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</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>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -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/>.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
|
@ -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,
|
|
||||||
}
|
|
|
@ -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>
|
|
|
@ -4,6 +4,7 @@ import openerp
|
||||||
from openerp.addons.web import http
|
from openerp.addons.web import http
|
||||||
from openerp.addons.web.http import request
|
from openerp.addons.web.http import request
|
||||||
from openerp.addons.website.models import website
|
from openerp.addons.website.models import website
|
||||||
|
from openerp.addons.website_partner.controllers import main as website_partner
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
|
|
||||||
import urllib
|
import urllib
|
||||||
|
@ -39,7 +40,7 @@ class WebsiteMembership(http.Controller):
|
||||||
# group by country, based on all customers (base domain)
|
# group by country, based on all customers (base domain)
|
||||||
membership_line_ids = membership_line_obj.search(cr, uid, base_line_domain, context=context)
|
membership_line_ids = membership_line_obj.search(cr, uid, base_line_domain, context=context)
|
||||||
countries = partner_obj.read_group(
|
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)
|
groupby="country_id", orderby="country_id", context=request.context)
|
||||||
countries_total = sum(country_dict['country_id_count'] for country_dict in countries)
|
countries_total = sum(country_dict['country_id_count'] for country_dict in countries)
|
||||||
countries.insert(0, {
|
countries.insert(0, {
|
||||||
|
@ -57,6 +58,10 @@ class WebsiteMembership(http.Controller):
|
||||||
partner_ids = [m.partner and m.partner.id for m in membership_lines]
|
partner_ids = [m.partner and m.partner.id for m in membership_lines]
|
||||||
google_map_partner_ids = ",".join(map(str, partner_ids))
|
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
|
# format domain for group_by and memberships
|
||||||
membership_ids = product_obj.search(cr, uid, [('membership', '=', True)], context=context)
|
membership_ids = product_obj.search(cr, uid, [('membership', '=', True)], context=context)
|
||||||
memberships = product_obj.browse(cr, uid, membership_ids, 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)
|
pager = request.website.pager(url="/members/", total=len(membership_line_ids), page=page, step=self._references_per_page, scope=7, url_args=post)
|
||||||
|
|
||||||
values = {
|
values = {
|
||||||
|
'partners_data': partners_data,
|
||||||
'membership_lines': membership_lines,
|
'membership_lines': membership_lines,
|
||||||
'memberships': memberships,
|
'memberships': memberships,
|
||||||
'membership': membership,
|
'membership': membership,
|
||||||
|
@ -78,12 +84,7 @@ class WebsiteMembership(http.Controller):
|
||||||
|
|
||||||
@website.route(['/members/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
|
@website.route(['/members/<model("res.partner"):partner>/'], type='http', auth="public", multilang=True)
|
||||||
def partners_ref(self, partner, **post):
|
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)
|
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)
|
return request.website.render("website_membership.partner", values)
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<div class="col-md-4" id="left_column">
|
<div class="col-md-4" id="left_column">
|
||||||
<ul class="nav nav-pills nav-stacked mt16">
|
<ul class="nav nav-pills nav-stacked mt16">
|
||||||
<li class="nav-header"><h3>Associations</h3></li>
|
<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">
|
<t t-foreach="memberships" t-as="membership_id">
|
||||||
<li t-att-class="membership and membership_id.id == membership.id and 'active' or ''">
|
<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>
|
<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"/>
|
<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>
|
<h3 class="text-center"><span t-field="membership_line_id.membership_id"/></h3>
|
||||||
</t>
|
</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">
|
<div class="media">
|
||||||
<t t-call="website.publish_management">
|
<a class="pull-left" t-href="/members/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/">
|
||||||
<t t-set="object" t-value="partner"/>
|
<img class="media-object" t-attf-src="data:image/png;base64,#{partner_data.get('image_small')}"/>
|
||||||
</t>
|
|
||||||
<a class="pull-left" t-href="/members/#{ slug(partner) }/">
|
|
||||||
<img class="media-object" t-att-src="partner.img('image_small')"/>
|
|
||||||
</a>
|
</a>
|
||||||
<div class="media-body" style="min-height: 64px;">
|
<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>
|
<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-field="partner.website_short_description"/>
|
<div t-raw="partner_data.get('website_short_description')"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</t>
|
</t>
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
'data': [
|
'data': [
|
||||||
'views/res_partner_view.xml',
|
'views/res_partner_view.xml',
|
||||||
'views/website_partner_view.xml',
|
'views/website_partner_view.xml',
|
||||||
'security/website_partner_security.xml',
|
|
||||||
'data/website_data.xml',
|
'data/website_data.xml',
|
||||||
],
|
],
|
||||||
'demo': ['website_partner_demo.xml'],
|
'demo': ['website_partner_demo.xml'],
|
||||||
|
|
|
@ -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>
|
|
|
@ -2,12 +2,17 @@
|
||||||
<openerp>
|
<openerp>
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<template id="partner_detail" name="Partner">
|
<template id="partner_detail" name="Partner Details (Complex Template for Access Right)">
|
||||||
<t t-call="website.publish_management"><t t-set="object" t-value="partner_id"/></t>
|
<t t-if="partner" t-call="website.publish_management">
|
||||||
<h1 class="col-md-12 text-center" t-field="partner_id.name"/>
|
<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="col-md-4">
|
||||||
<div class="text-center">
|
<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>
|
</div>
|
||||||
<address>
|
<address>
|
||||||
<table style="margin: auto;" class="well">
|
<table style="margin: auto;" class="well">
|
||||||
|
@ -16,24 +21,49 @@
|
||||||
<col/>
|
<col/>
|
||||||
</colgroup>
|
</colgroup>
|
||||||
<tbody>
|
<tbody>
|
||||||
<t t-set="address" t-value="'<br/>'.join(partner_id.name_get()[0][1].split('\n')[1:])"/>
|
<t t-if="partner">
|
||||||
<tr t-if="address or editable"><th class="texttop">Address</th><td class="span2" t-raw="address"/></tr>
|
<t t-set="address" t-value="'<br/>'.join(partner.name_get()[0][1].split('\n')[1:])"/>
|
||||||
<tr t-if="partner_id.website or editable"><th>Website</th><td class="span2">
|
<tr t-if="address or editable"><th class="texttop">Address</th><td class="span2" t-raw="address"/></tr>
|
||||||
<t t-if="partner_id.website"><span t-field="partner_id.website"/></t></td></tr>
|
</t>
|
||||||
<tr t-if="partner_id.phone or editable"><th>Phone</th><td class="span2">
|
<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>
|
||||||
<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">
|
<tr t-if="partner and (partner.website or editable)"><th>Website</th><td class="span2">
|
||||||
<t t-if="partner_id.mobile"><span t-field="partner_id.mobile"/></t></td></tr>
|
<t t-if="partner.website"><span t-field="partner.website"/></t></td></tr>
|
||||||
<tr t-if="partner_id.fax or editable"><th>Fax</th><td class="span2">
|
<tr t-if="partner_data.get('website')"><th>Website</th><td class="span2"><span t-esc="partner_data.get('website')"/></td></tr>
|
||||||
<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">
|
<tr t-if="partner and (partner.phone or editable)"><th>Phone</th><td class="span2">
|
||||||
<t t-if="partner_id.email"><span t-field="partner_id.email"/></t></td></tr>
|
<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>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</address>
|
</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>
|
||||||
<div class="col-md-8 mt32" t-field="partner_id.website_description"/>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
Loading…
Reference in New Issue