From 04e412ccb85ca71e5aa75588c9a6666c3e2cb852 Mon Sep 17 00:00:00 2001 From: David Monjoie Date: Tue, 20 Jan 2015 17:34:16 +0100 Subject: [PATCH] [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. --- addons/website_blog/models/website_blog.py | 13 ++++++------ .../website_blog/views/website_blog_views.xml | 6 ++++++ addons/website_event/models/event.py | 15 ++++++------- .../views/website_event_backend.xml | 7 +++++-- addons/website_event_track/models/event.py | 15 ++++++------- .../views/event_backend.xml | 5 ++++- .../website_hr_recruitment/models/hr_job.py | 10 +++------ .../views/hr_job_views.xml | 15 ++++++------- addons/website_sale/models/product.py | 21 +++++++------------ addons/website_sale/views/views.xml | 7 ++++++- 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 @@
+
+ +
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 @@ - + - + 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 @@
- +