diff options
| author | Christophe Matthieu <chm@openerp.com> | 2013-12-05 16:08:01 +0100 |
|---|---|---|
| committer | Christophe Matthieu <chm@openerp.com> | 2013-12-05 16:08:01 +0100 |
| commit | b777fddb3045e5ed9b2eb7eed6f8730349568f1c (patch) | |
| tree | d1232b1ebf839721e205508f306e0ac2c1f21b47 /addons | |
| parent | 2db8e3579234b81537f8dd6f375eedee35784150 (diff) | |
[FIX] website_partner, website_crm_partner_assign, website_membership, website_customer: display partner without break access right
bzr revid: chm@openerp.com-20131205150801-tquspeo351to77o4
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/crm_partner_assign/res_partner_demo.xml | 20 | ||||
| -rw-r--r-- | addons/website_crm/__openerp__.py | 2 | ||||
| -rw-r--r-- | addons/website_crm_partner_assign/controllers/main.py | 44 | ||||
| -rw-r--r-- | addons/website_crm_partner_assign/views/website_crm_partner_assign.xml | 16 | ||||
| -rw-r--r-- | addons/website_customer/__openerp__.py | 2 | ||||
| -rw-r--r-- | addons/website_customer/controllers/main.py | 46 | ||||
| -rw-r--r-- | addons/website_customer/views/website_customer.xml | 108 | ||||
| -rw-r--r-- | addons/website_customer_crm_partner_assign/__init__.py | 20 | ||||
| -rw-r--r-- | addons/website_customer_crm_partner_assign/__openerp__.py | 42 | ||||
| -rw-r--r-- | addons/website_customer_crm_partner_assign/views/website_customer.xml | 59 | ||||
| -rw-r--r-- | addons/website_membership/controllers/main.py | 17 | ||||
| -rw-r--r-- | addons/website_membership/views/website_membership.xml | 15 | ||||
| -rw-r--r-- | addons/website_partner/__openerp__.py | 1 | ||||
| -rw-r--r-- | addons/website_partner/security/website_partner_security.xml | 18 | ||||
| -rw-r--r-- | addons/website_partner/views/website_partner_view.xml | 66 |
15 files changed, 213 insertions, 263 deletions
diff --git a/addons/crm_partner_assign/res_partner_demo.xml b/addons/crm_partner_assign/res_partner_demo.xml index 776d7d6834c..a0711657810 100644 --- a/addons/crm_partner_assign/res_partner_demo.xml +++ b/addons/crm_partner_assign/res_partner_demo.xml @@ -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"> diff --git a/addons/website_crm/__openerp__.py b/addons/website_crm/__openerp__.py index 4a7a0d1c0e8..a1776cfbd39 100644 --- a/addons/website_crm/__openerp__.py +++ b/addons/website_crm/__openerp__.py @@ -14,5 +14,5 @@ OpenERP Contact Form 'data/website_crm_data.xml', 'views/website_crm.xml', ], - 'installable': False, + 'installable': True, } diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py index 2656ae47c96..7c7fbdbebdf 100644 --- a/addons/website_crm_partner_assign/controllers/main.py +++ b/addons/website_crm_partner_assign/controllers/main.py @@ -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) 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 4df6b4a5998..3af23e60f18 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 @@ -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> diff --git a/addons/website_customer/__openerp__.py b/addons/website_customer/__openerp__.py index c705acdd54b..8782a0f90f7 100644 --- a/addons/website_customer/__openerp__.py +++ b/addons/website_customer/__openerp__.py @@ -40,5 +40,5 @@ OpenERP Customer References 'views/website_customer.xml', ], 'qweb': [], - 'installable': False, + 'installable': True, } diff --git a/addons/website_customer/controllers/main.py b/addons/website_customer/controllers/main.py index 91f0023a521..1f2d3e593ab 100644 --- a/addons/website_customer/controllers/main.py +++ b/addons/website_customer/controllers/main.py @@ -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) diff --git a/addons/website_customer/views/website_customer.xml b/addons/website_customer/views/website_customer.xml index 002039c84bf..9b874016d8f 100644 --- a/addons/website_customer/views/website_customer.xml +++ b/addons/website_customer/views/website_customer.xml @@ -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 }&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> </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="'<br/>'.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> diff --git a/addons/website_customer_crm_partner_assign/__init__.py b/addons/website_customer_crm_partner_assign/__init__.py deleted file mode 100644 index eecb359a225..00000000000 --- a/addons/website_customer_crm_partner_assign/__init__.py +++ /dev/null @@ -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/>. -# -############################################################################## diff --git a/addons/website_customer_crm_partner_assign/__openerp__.py b/addons/website_customer_crm_partner_assign/__openerp__.py deleted file mode 100644 index 92cb0404f3e..00000000000 --- a/addons/website_customer_crm_partner_assign/__openerp__.py +++ /dev/null @@ -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, -} diff --git a/addons/website_customer_crm_partner_assign/views/website_customer.xml b/addons/website_customer_crm_partner_assign/views/website_customer.xml deleted file mode 100644 index 0e65885f72c..00000000000 --- a/addons/website_customer_crm_partner_assign/views/website_customer.xml +++ /dev/null @@ -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> diff --git a/addons/website_membership/controllers/main.py b/addons/website_membership/controllers/main.py index e2b201bb855..e36700bf1f6 100644 --- a/addons/website_membership/controllers/main.py +++ b/addons/website_membership/controllers/main.py @@ -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) diff --git a/addons/website_membership/views/website_membership.xml b/addons/website_membership/views/website_membership.xml index c28498c7e55..01457eb2128 100644 --- a/addons/website_membership/views/website_membership.xml +++ b/addons/website_membership/views/website_membership.xml @@ -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> diff --git a/addons/website_partner/__openerp__.py b/addons/website_partner/__openerp__.py index 9584c4df3b1..73e5278fc99 100644 --- a/addons/website_partner/__openerp__.py +++ b/addons/website_partner/__openerp__.py @@ -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'], diff --git a/addons/website_partner/security/website_partner_security.xml b/addons/website_partner/security/website_partner_security.xml deleted file mode 100644 index a0bb2846413..00000000000 --- a/addons/website_partner/security/website_partner_security.xml +++ /dev/null @@ -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> diff --git a/addons/website_partner/views/website_partner_view.xml b/addons/website_partner/views/website_partner_view.xml index 1567bb02a4a..4fe5c070a3b 100644 --- a/addons/website_partner/views/website_partner_view.xml +++ b/addons/website_partner/views/website_partner_view.xml @@ -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="'<br/>'.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="'<br/>'.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> |
