summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Monjoie <dmo@odoo.com>2015-01-20 17:34:16 +0100
committerThibault Delavallée <tde@openerp.com>2015-01-20 17:34:33 +0100
commit04e412ccb85ca71e5aa75588c9a6666c3e2cb852 (patch)
tree0a0aa9a87d393a9cb8726d566b2bba83d522dfa3
parentb84721cb21f774758e65c4d56d3cad635f73158f (diff)
[IMP][REF] website_blog, website_event, website_event_track,
website_hr_recruitment, website_sale: add published mixin on blog / event / track / job / product objects and update their website url and form view according to the publish mixin/button refactoring.
-rw-r--r--addons/website_blog/models/website_blog.py13
-rw-r--r--addons/website_blog/views/website_blog_views.xml6
-rw-r--r--addons/website_event/models/event.py15
-rw-r--r--addons/website_event/views/website_event_backend.xml7
-rw-r--r--addons/website_event_track/models/event.py15
-rw-r--r--addons/website_event_track/views/event_backend.xml5
-rw-r--r--addons/website_hr_recruitment/models/hr_job.py10
-rw-r--r--addons/website_hr_recruitment/views/hr_job_views.xml15
-rw-r--r--addons/website_sale/models/product.py21
-rw-r--r--addons/website_sale/views/views.xml7
10 files changed, 60 insertions, 54 deletions
diff --git a/addons/website_blog/models/website_blog.py b/addons/website_blog/models/website_blog.py
index b22a258f18c..049acade8a1 100644
--- a/addons/website_blog/models/website_blog.py
+++ b/addons/website_blog/models/website_blog.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
from datetime import datetime
-import difflib
import lxml
import random
@@ -65,11 +64,15 @@ class BlogTag(osv.Model):
class BlogPost(osv.Model):
_name = "blog.post"
_description = "Blog Post"
- _inherit = ['mail.thread', 'website.seo.metadata']
+ _inherit = ['mail.thread', 'website.seo.metadata', 'website.published.mixin']
_order = 'id DESC'
-
_mail_post_access = 'read'
+ def _website_url(self, cr, uid, ids, field_name, arg, context=None):
+ res = super(BlogPost, self)._website_url(cr, uid, ids, field_name, arg, context=context)
+ for blog_post in self.browse(cr, uid, ids, context=context):
+ res[blog_post.id] = "/blog/%s/post/%s" % (slug(blog_post.blog_id), slug(blog_post))
+ return res
def _compute_ranking(self, cr, uid, ids, name, arg, context=None):
res = {}
@@ -91,10 +94,6 @@ class BlogPost(osv.Model):
'blog.tag', string='Tags',
),
'content': fields.html('Content', translate=True, sanitize=False),
- # website control
- 'website_published': fields.boolean(
- 'Publish', help="Publish on the website", copy=False,
- ),
'website_message_ids': fields.one2many(
'mail.message', 'res_id',
domain=lambda self: [
diff --git a/addons/website_blog/views/website_blog_views.xml b/addons/website_blog/views/website_blog_views.xml
index a86f34c5523..96e14add75c 100644
--- a/addons/website_blog/views/website_blog_views.xml
+++ b/addons/website_blog/views/website_blog_views.xml
@@ -53,6 +53,12 @@
<field name="arch" type="xml">
<form string="Blog Post">
<sheet>
+ <div class="oe_right oe_button_box">
+ <button class="oe_inline oe_stat_button" name="open_website_url"
+ type="object" icon="fa-globe">
+ <field name="website_published" widget="website_button"/>
+ </button>
+ </div>
<group>
<field name="name" placeholder="Name"/>
<field name="tag_ids" widget="many2many_tags"/>
diff --git a/addons/website_event/models/event.py b/addons/website_event/models/event.py
index 8a7ad36ae66..553df76a472 100644
--- a/addons/website_event/models/event.py
+++ b/addons/website_event/models/event.py
@@ -14,7 +14,7 @@ from openerp.addons.website.models.website import slug
class event(models.Model):
_name = 'event.event'
- _inherit = ['event.event', 'website.seo.metadata']
+ _inherit = ['event.event', 'website.seo.metadata', 'website.published.mixin']
_track = {
'website_published': {
'website_event.mt_event_published': lambda self, cr, uid, obj, ctx=None: obj.website_published,
@@ -23,7 +23,6 @@ class event(models.Model):
}
twitter_hashtag = fields.Char('Twitter Hashtag', default=lambda self: self._default_hashtag())
- website_published = fields.Boolean('Visible in Website', copy=False)
# TDE TODO FIXME: when website_mail/mail_thread.py inheritance work -> this field won't be necessary
website_message_ids = fields.One2many(
'mail.message', 'res_id',
@@ -33,15 +32,13 @@ class event(models.Model):
string='Website Messages',
help="Website communication history",
)
- website_url = fields.Char('Website url', compute='_website_url')
- @api.one
+ @api.multi
@api.depends('name')
- def _website_url(self):
- if isinstance(self.id, NewId):
- self.website_url = ''
- else:
- self.website_url = "/event/" + slug(self)
+ def _website_url(self, name, arg):
+ res = super(event, self)._website_url(name, arg)
+ res.update({(e.id, '/event/%s' % slug(e)) for e in self})
+ return res
def _default_hashtag(self):
return re.sub("[- \\.\\(\\)\\@\\#\\&]+", "", self.env.user.company_id.name).lower()
diff --git a/addons/website_event/views/website_event_backend.xml b/addons/website_event/views/website_event_backend.xml
index 566cfbdaeea..e2f13da8258 100644
--- a/addons/website_event/views/website_event_backend.xml
+++ b/addons/website_event/views/website_event_backend.xml
@@ -8,9 +8,12 @@
<field name="inherit_id" ref="event.view_event_form"/>
<field name="arch" type="xml">
<!-- add state field in header -->
- <xpath expr="//div[@class='oe_right oe_button_box']" position="before">
+ <xpath expr="//div[@class='oe_right oe_button_box']" position="inside">
<field name="website_url" invisible="1"/>
- <field name="website_published" class="pull-right" widget="website_button"/>
+ <button class="oe_inline oe_stat_button" name="open_website_url"
+ type="object" icon="fa-globe">
+ <field name="website_published" widget="website_button"/>
+ </button>
</xpath>
<xpath expr="//field[@name='organizer_id']" position="after">
<field name="twitter_hashtag"/>
diff --git a/addons/website_event_track/models/event.py b/addons/website_event_track/models/event.py
index ee257eb2fdd..a282070373c 100644
--- a/addons/website_event_track/models/event.py
+++ b/addons/website_event_track/models/event.py
@@ -25,11 +25,7 @@ class event_track(models.Model):
_name = "event.track"
_description = 'Event Tracks'
_order = 'priority, date'
- _inherit = ['mail.thread', 'ir.needaction_mixin', 'website.seo.metadata']
-
- @api.one
- def _compute_website_url(self):
- self.website_url = "/event/%s/track/%s" % (slug(self.event_id), slug(self))
+ _inherit = ['mail.thread', 'ir.needaction_mixin', 'website.seo.metadata', 'website.published.mixin']
name = fields.Char('Title', required=True, translate=True)
@@ -49,8 +45,6 @@ class event_track(models.Model):
('0', 'Low'), ('1', 'Medium'),
('2', 'High'), ('3', 'Highest')],
'Priority', required=True, default='1')
- website_published = fields.Boolean('Available in the website', copy=False)
- website_url = fields.Char("Website url", compute='_compute_website_url')
image = fields.Binary('Image', compute='_compute_image', readonly=True, store=True)
@api.one
@@ -61,6 +55,13 @@ class event_track(models.Model):
else:
self.image = False
+ @api.multi
+ @api.depends('name')
+ def _website_url(self, field_name, arg):
+ res = super(event_track, self)._website_url(field_name, arg)
+ res.update({(track.id, '/event/%strack/%s' % (slug(track.event_id), slug(track))) for track in self})
+ return res
+
def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False, lazy=True):
""" Override read_group to always display all states. """
if groupby and groupby[0] == "state":
diff --git a/addons/website_event_track/views/event_backend.xml b/addons/website_event_track/views/event_backend.xml
index 19e40b78d46..f4074dcfb55 100644
--- a/addons/website_event_track/views/event_backend.xml
+++ b/addons/website_event_track/views/event_backend.xml
@@ -90,7 +90,10 @@
<sheet string="Track">
<div class="oe_right oe_button_box">
<field name="website_url" invisible="1"/>
- <field name="website_published" class="pull-right" widget="website_button"/>
+ <button class="oe_inline oe_stat_button" name="open_website_url"
+ type="object" icon="fa-globe">
+ <field name="website_published" widget="website_button"/>
+ </button>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
diff --git a/addons/website_hr_recruitment/models/hr_job.py b/addons/website_hr_recruitment/models/hr_job.py
index b14361db333..f7a6ad5ddc8 100644
--- a/addons/website_hr_recruitment/models/hr_job.py
+++ b/addons/website_hr_recruitment/models/hr_job.py
@@ -2,12 +2,13 @@
from openerp.osv import osv, fields
+
class hr_job(osv.osv):
_name = 'hr.job'
- _inherit = ['hr.job','website.seo.metadata']
+ _inherit = ['hr.job', 'website.seo.metadata', 'website.published.mixin']
def _website_url(self, cr, uid, ids, field_name, arg, context=None):
- res = dict.fromkeys(ids, '')
+ res = super(hr_job, self)._website_url(cr, uid, ids, field_name, arg, context=context)
for job in self.browse(cr, uid, ids, context=context):
res[job.id] = "/jobs/detail/%s" % job.id
return res
@@ -17,10 +18,5 @@ class hr_job(osv.osv):
return super(hr_job, self).job_open(cr, uid, ids, context)
_columns = {
- 'website_published': fields.boolean('Published', copy=False),
'website_description': fields.html('Website description'),
- 'website_url': fields.function(_website_url, string="Website URL", type="char"),
- }
- _defaults = {
- 'website_published': False
}
diff --git a/addons/website_hr_recruitment/views/hr_job_views.xml b/addons/website_hr_recruitment/views/hr_job_views.xml
index c6a0f170f12..6edfb88b1fd 100644
--- a/addons/website_hr_recruitment/views/hr_job_views.xml
+++ b/addons/website_hr_recruitment/views/hr_job_views.xml
@@ -1,15 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
- <record id="view_hr_job_form" model="ir.ui.view">
- <field name="name">hr.job.form.inherit</field>
+ <record id="view_hr_job_form_website_published_button" model="ir.ui.view" >
+ <field name="name">hr.job.form.inherit.published.button</field>
<field name="model">hr.job</field>
- <field name="inherit_id" ref="hr.view_hr_job_form"/>
+ <field name="inherit_id" ref="hr_recruitment.hr_job_survey"/>
<field name="arch" type="xml">
- <!-- add state field in header -->
- <xpath expr="//sheet/div" position="before">
- <field name="website_url" invisible="1"/>
- <field name="website_published" class="pull-right" widget="website_button"/>
+ <xpath expr="//div[@class='oe_button_box']" position="inside">
+ <button class="oe_inline oe_stat_button" name="open_website_url"
+ type="object" icon="fa-globe">
+ <field name="website_published" widget="website_button"/>
+ </button>
</xpath>
</field>
</record>
diff --git a/addons/website_sale/models/product.py b/addons/website_sale/models/product.py
index 255789ae9c3..cd129358b70 100644
--- a/addons/website_sale/models/product.py
+++ b/addons/website_sale/models/product.py
@@ -102,13 +102,13 @@ class product_public_category(osv.osv):
}
class product_template(osv.Model):
- _inherit = ["product.template", "website.seo.metadata"]
+ _inherit = ["product.template", "website.seo.metadata", 'website.published.mixin']
_order = 'website_published desc, website_sequence desc, name'
_name = 'product.template'
_mail_post_access = 'read'
def _website_url(self, cr, uid, ids, field_name, arg, context=None):
- res = dict.fromkeys(ids, '')
+ res = super(product_template, self)._website_url(cr, uid, ids, field_name, arg, context=context)
for product in self.browse(cr, uid, ids, context=context):
res[product.id] = "/shop/product/%s" % (product.id,)
return res
@@ -122,7 +122,6 @@ class product_template(osv.Model):
],
string='Website Comments',
),
- 'website_published': fields.boolean('Available in the website', copy=False),
'website_description': fields.html('Description for the website', translate=True),
'alternative_product_ids': fields.many2many('product.template','product_alternative_rel','src_id','dest_id', string='Alternative Products', help='Appear on the product page'),
'accessory_product_ids': fields.many2many('product.product','product_accessory_rel','src_id','dest_id', string='Accessory Products', help='Appear on the shopping cart'),
@@ -130,7 +129,6 @@ class product_template(osv.Model):
'website_size_y': fields.integer('Size Y'),
'website_style_ids': fields.many2many('product.style', string='Styles'),
'website_sequence': fields.integer('Sequence', help="Determine the display order in the Website E-commerce"),
- 'website_url': fields.function(_website_url, string="Website url", type="char"),
'public_categ_ids': fields.many2many('product.public.category', string='Public Category', help="Those categories are used to group similar products for e-commerce."),
}
@@ -143,7 +141,6 @@ class product_template(osv.Model):
'website_size_x': 1,
'website_size_y': 1,
'website_sequence': _defaults_website_sequence,
- 'website_published': False,
}
def set_sequence_top(self, cr, uid, ids, context=None):
@@ -178,18 +175,15 @@ class product_template(osv.Model):
else:
return self.set_sequence_bottom(cr, uid, ids, context=context)
+
class product_product(osv.Model):
_inherit = "product.product"
- def _website_url(self, cr, uid, ids, field_name, arg, context=None):
- res = {}
- for product in self.browse(cr, uid, ids, context=context):
- res[product.id] = "/shop/product/%s" % (product.product_tmpl_id.id,)
- return res
+ # Wrapper for call_kw with inherits
+ def open_website_url(self, cr, uid, ids, context=None):
+ template_ids = list(set(self.browse(cr, uid, ids, context=context).product_tmpl_id.id))
+ return self.pool['product.template'].open_website_url(cr, uid, template_ids, context=context)
- _columns = {
- 'website_url': fields.function(_website_url, string="Website url", type="char"),
- }
class product_attribute(osv.Model):
_inherit = "product.attribute"
@@ -200,6 +194,7 @@ class product_attribute(osv.Model):
'type': lambda *a: 'radio',
}
+
class product_attribute_value(osv.Model):
_inherit = "product.attribute.value"
_columns = {
diff --git a/addons/website_sale/views/views.xml b/addons/website_sale/views/views.xml
index 9a3f24bda6a..ebd8c6bb27d 100644
--- a/addons/website_sale/views/views.xml
+++ b/addons/website_sale/views/views.xml
@@ -23,13 +23,18 @@
<group name="website" string="Website">
<field name="website_url" invisible="1"/>
<field name="public_categ_ids" widget="many2many_tags"/>
- <field name="website_published" class="pull-right" widget="website_button"/>
<field name="alternative_product_ids" widget="many2many_tags"/>
<field name="accessory_product_ids" widget="many2many_tags"/>
<field name="website_style_ids" widget="many2many_tags"/>
<field name="website_sequence"/>
</group>
</group>
+ <xpath expr="//div[@name='buttons']" position="inside">
+ <button class="oe_inline oe_stat_button" name="open_website_url"
+ type="object" icon="fa-globe">
+ <field name="website_published" widget="website_button"/>
+ </button>
+ </xpath>
</field>
</record>