[IMP] *: correctly read/write website_published

The `website_published` field from the website's mixins is basically a readonly
from `is_published` field.
On read, this field will simply read `is_published` and check if the record's
website_id is accessible (only for the multi mixin).
On write, it will always write on `is_published`.

Whenever possible, any access (read/search) on published state should be done on `website_published`.
Any write should be done on `is_published`.

This PR improves a few things:
- A lot of code was writting on website_published which was just then writting
on is_published. Writting directly on is_published makes more sense.
- Some backend fields would still reference `website_published` instead of
`is_published` which would just go through the related for no reason.
Plus, using `is_published` will make the field tooltip more accurate as we
are not in a website context ('Visible on current website' to 'Is Published')
- Filter and search on tree view were still using the `website_published`
related field, which is just a readonly when we are not in a frontend
context.
- Some create and write function would have security check on
`website_published` value but that was wrong as the user could bypass that by
simply writting on `is_published`. For the write method, check `is_published`
is more accurate as it will cover both case since `website_published` will
then call the write method on `is_published`
- Some models would create their own `website_published` field rather than using the
`website.published.mixin` mixin which should be used instead.
That was done to be able to override the default value of the boolean.
This commit simply adds the possibility to override the default value of the
mixin field.
- Fix wrong publish security check that were only checking `website_published` in vals.

closes odoo/odoo#35189

Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
This commit is contained in:
Robot Odoo
2019-08-03 13:17:04 +02:00
committed by GitHub
53 changed files with 212 additions and 200 deletions
@@ -69,7 +69,7 @@
</field>
</record>
<record id="test_page" model="website.page">
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="url">/test_page_view</field>
<field name="view_id" ref="test_page_view"/>
</record>
+3 -3
View File
@@ -117,17 +117,17 @@
<data noupdate="1">
<record id="homepage_page" model="website.page">
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="url">/</field>
<field name="view_id" ref="homepage"/>
</record>
<record id="contactus_page" model="website.page">
<field name="url">/contactus</field>
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="view_id" ref="contactus"/>
</record>
<record id="aboutus_page" model="website.page">
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="url">/aboutus</field>
<field name="view_id" ref="aboutus"/>
</record>
+2 -2
View File
@@ -303,7 +303,7 @@
<!-- Showcase all (most?) BS components and utilities -->
<record id="bs_debug_page" model="website.page">
<field name="url">/website/demo/bootstrap</field>
<field name="website_published">False</field>
<field name="is_published">False</field>
<field name="view_id" ref="bs_debug_view"/>
</record>
@@ -311,7 +311,7 @@
<!-- Showcase all snippets -->
<record id="snippets_debug_page" model="website.page">
<field name="url">/website/demo/snippets</field>
<field name="website_published">False</field>
<field name="is_published">False</field>
<field name="view_id" ref="snippets_debug_view"/>
</record>
</data>
+9 -5
View File
@@ -119,14 +119,17 @@ class WebsitePublishedMixin(models.AbstractModel):
_description = 'Website Published Mixin'
website_published = fields.Boolean('Visible on current website', related='is_published', readonly=False)
is_published = fields.Boolean('Is published', copy=False)
can_publish = fields.Boolean('Can publish', compute='_compute_can_publish')
is_published = fields.Boolean('Is Published', copy=False, default=lambda self: self._default_is_published())
can_publish = fields.Boolean('Can Publish', compute='_compute_can_publish')
website_url = fields.Char('Website URL', compute='_compute_website_url', help='The full URL to access the document through the website.')
def _compute_website_url(self):
for record in self:
record.website_url = '#'
def _default_is_published(self):
return False
def website_publish_button(self):
self.ensure_one()
if self.env.user.has_group('website.group_website_publisher') and self.website_url != '#':
@@ -146,15 +149,16 @@ class WebsitePublishedMixin(models.AbstractModel):
@api.model_create_multi
def create(self, vals_list):
records = super(WebsitePublishedMixin, self).create(vals_list)
is_publish_modified = any('website_published' in values for values in vals_list)
is_publish_modified = any(
[set(v.keys()) & {'is_published', 'website_published'} for v in vals_list]
)
if is_publish_modified and not all(record.can_publish for record in records):
raise AccessError(self._get_can_publish_error_message())
return records
def write(self, values):
if 'website_published' in values and not all(record.can_publish for record in self):
if 'is_published' in values and not all(record.can_publish for record in self):
raise AccessError(self._get_can_publish_error_message())
return super(WebsitePublishedMixin, self).write(values)
+2 -2
View File
@@ -197,11 +197,11 @@ class Crawler(HttpCase):
generic_page = Page.create({
'view_id': base_view.id,
'url': '/page_1',
'website_published': True,
'is_published': True,
})
specific_page = generic_page.copy({'website_id': self.env['website'].get_current_website().id})
specific_page.write({'website_published': False, 'arch': generic_page.arch.replace('I am a generic page', 'I am a specific page')})
specific_page.write({'is_published': False, 'arch': generic_page.arch.replace('I am a generic page', 'I am a specific page')})
r = self.url_open(specific_page.url)
self.assertEqual(r.status_code, 404, "Restricted users should see a 404 and not the generic one as we unpublished the specific one")
+2 -3
View File
@@ -145,12 +145,11 @@
<field name="name"/>
<field name="url"/>
<field name="view_id" context="{'display_website': True}"/>
<field name="is_published" groups="base.group_no_one"/>
<field name="website_id" options="{'no_create': True}" groups="website.group_multi_website"/>
</group>
<group>
<field name="website_indexed"/>
<field name="website_published"/>
<field name="is_published"/>
<field name="date_publish"/>
</group>
</group>
@@ -170,7 +169,7 @@
<field name="url"/>
<field name="website_id" groups="website.group_multi_website"/>
<field name="website_indexed"/>
<field name="website_published" string="Page Published"/>
<field name="is_published" string="Page Published"/>
<field name="create_uid" invisible="1"/>
<field name="write_uid"/>
<field name="write_date"/>
+1 -1
View File
@@ -286,7 +286,7 @@ class WebsiteBlog(http.Controller):
new_blog_post = request.env['blog.post'].create({
'blog_id': blog_id,
'website_published': False,
'is_published': False,
})
return werkzeug.utils.redirect("/blog/%s/post/%s?enable_editor=1" % (slug(new_blog_post.blog_id), slug(new_blog_post)))
@@ -15,7 +15,7 @@
<field name="subtitle">Ideas behind the Odoo communication tools.</field>
<field name="blog_id" ref="blog_blog_1"/>
<field name="tag_ids" eval="[(6, 0, [ref('blog_tag_1')])]"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="published_date" eval="time.strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="website_meta_keywords">Odoo, email</field>
<field name="website_meta_description">Ideas behind the Odoo communication tools.</field>
@@ -130,7 +130,7 @@
<field name="name">Integrating your CMS and E-Commerce</field>
<field name="subtitle">Building your company's website and selling your products online easy.</field>
<field name="blog_id" ref="blog_blog_1"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="published_date" eval="time.strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="tag_ids" eval="[(6, 0, [ref('blog_tag_1'), ref('blog_tag_2')])]"/>
<field name="cover_properties">{"background-image": "url(/web/image/website_blog.blog_post_cover_02)", "resize_class": "cover container-fluid cover_full", "background-color": "oe_black", "opacity": "0.0"}</field>
+4 -3
View File
@@ -194,7 +194,7 @@ class BlogPost(models.Model):
blog_post._write(dict(post_date=blog_post.create_date)) # dont trigger inverse function
def _check_for_publication(self, vals):
if vals.get('website_published'):
if vals.get('is_published'):
for post in self:
post.blog_id.message_post_with_view(
'website_blog.blog_post_template_new_post',
@@ -214,9 +214,10 @@ class BlogPost(models.Model):
result = True
for post in self:
copy_vals = dict(vals)
if ('website_published' in vals and 'published_date' not in vals and
published_in_vals = set(vals.keys()) & {'is_published', 'website_published'}
if (published_in_vals and 'published_date' not in vals and
(not post.published_date or post.published_date <= fields.Datetime.now())):
copy_vals['published_date'] = vals['website_published'] and fields.Datetime.now() or False
copy_vals['published_date'] = vals[list(published_in_vals)[0]] and fields.Datetime.now() or False
result &= super(BlogPost, self).write(copy_vals)
self._check_for_publication(vals)
return result
@@ -2,16 +2,16 @@
<odoo>
<data noupdate="1">
<record id="website_crm_partner_assign.res_partner_grade_platinium" model="res.partner.grade">
<field name="website_published" eval="True" />
<field name="is_published" eval="True" />
</record>
<record id="website_crm_partner_assign.res_partner_grade_gold" model="res.partner.grade">
<field name="website_published" eval="True" />
<field name="is_published" eval="True" />
</record>
<record id="website_crm_partner_assign.res_partner_grade_silver" model="res.partner.grade">
<field name="website_published" eval="True" />
<field name="is_published" eval="True" />
</record>
<record id="website_crm_partner_assign.res_partner_grade_bronze" model="res.partner.grade">
<field name="website_published" eval="True" />
<field name="is_published" eval="True" />
</record>
<record id="base.partner_demo_portal" model="res.partner">
<field name="grade_id" ref="website_crm_partner_assign.res_partner_grade_platinium"/>
@@ -10,7 +10,6 @@ class ResPartnerGrade(models.Model):
_inherit = ['website.published.mixin']
_description = 'Partner Grade'
website_published = fields.Boolean(default=True)
sequence = fields.Integer('Sequence')
active = fields.Boolean('Active', default=lambda *args: 1)
name = fields.Char('Level Name', translate=True)
@@ -22,6 +21,9 @@ class ResPartnerGrade(models.Model):
for grade in self:
grade.website_url = "/partners/grade/%s" % (slug(grade))
def _default_is_published(self):
return True
class ResPartnerActivation(models.Model):
_name = 'res.partner.activation'
@@ -3,7 +3,7 @@
<data noupdate="1">
<record id="base.res_partner_2" model="res.partner">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="website_short_description">Deco Addict designs, develops, integrates and supports HR and Supply Chain processes in order to make our customers more productive, responsive and profitable.</field>
<field name="website_description" type="xml">
<p>
@@ -33,7 +33,7 @@
</field>
</record>
<record id="base.res_partner_3" model="res.partner">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="website_short_description">A non-profit international educational and scientific organisation, hosting three departments (aeronautics and aerospace, environmental and applied fluid dynamics, and turbomachinery and propulsion).</field>
<field name="website_description" type="xml">
<p>
@@ -61,7 +61,7 @@
</field>
</record>
<record id="base.res_partner_4" model="res.partner">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="website_short_description">Deco Addict designs, develops, integrates and supports HR and Supply Chain processes in order to make our customers more productive, responsive and profitable.</field>
<field name="website_description" type="xml">
<p>
@@ -91,7 +91,7 @@
</field>
</record>
<record id="base.res_partner_3" model="res.partner">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="website_short_description">A non-profit international educational and scientific organisation, hosting three departments (aeronautics and aerospace, environmental and applied fluid dynamics, and turbomachinery and propulsion).</field>
<field name="website_description" type="xml">
<p>
@@ -26,4 +26,6 @@ class Tags(models.Model):
partner_ids = fields.Many2many('res.partner', 'res_partner_res_partner_tag_rel', 'tag_id', 'partner_id', string='Partners')
classname = fields.Selection(get_selection_class, 'Class', default='default', help="Bootstrap class to customize the color", required=True)
active = fields.Boolean('Active', default=True)
website_published = fields.Boolean(default=True)
def _default_is_published(self):
return True
@@ -22,7 +22,7 @@
<group col="4">
<field name="name"/>
<field name="classname"/>
<field name="website_published"/>
<field name="is_published"/>
<field name="active"/>
</group>
</sheet>
@@ -37,7 +37,7 @@
<tree string="Website Tags" editable="bottom">
<field name="name"/>
<field name="classname"/>
<field name="website_published"/>
<field name="is_published"/>
<field name="active" invisible="1"/>
</tree>
</field>
+7 -7
View File
@@ -2,11 +2,11 @@
<odoo>
<record id="base.res_partner_1" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="event.event_0" model="event.event">
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="twitter_hashtag">odoo</field>
<field name="description"><![CDATA[
<section class="s_cover parallax s_parallax_is_fixed pt96 pb96" data-scroll-background-ratio="1">
@@ -168,21 +168,21 @@
]]></field> </record>
<record id="base.res_partner_3" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_4" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="event.event_2" model="event.event">
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="twitter_hashtag">odoo</field>
</record>
<record id="base.res_partner_2" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_address_4" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
</odoo>
+30 -30
View File
@@ -88,7 +88,7 @@
</record>
<record id="event_track1" model="event.track">
<field name="name">How to design a new piece of furniture</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 06:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location5"/>
@@ -101,7 +101,7 @@
</record>
<record id="event_track2" model="event.track">
<field name="name">How to integrate hardware materials in your pieces of furniture</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 8:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location5"/>
@@ -113,7 +113,7 @@
</record>
<record id="event_track3" model="event.track">
<field name="name">Portfolio presentation</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 10:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location5"/>
@@ -124,7 +124,7 @@
</record>
<record id="event_track4" model="event.track">
<field name="name">How to develop automated processes</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 9:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location5"/>
@@ -135,7 +135,7 @@
</record>
<record id="event_track5" model="event.track">
<field name="name">The new way to promote your creations</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 6:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location6"/>
@@ -146,7 +146,7 @@
</record>
<record id="event_track6" model="event.track">
<field name="name">Detailed roadmap of our new products</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 6:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location6"/>
@@ -157,7 +157,7 @@
</record>
<record id="event_track7" model="event.track">
<field name="name">A technical explanation of how to use computer design apps</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 8:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location6"/>
@@ -168,7 +168,7 @@
</record>
<record id="event_track8" model="event.track">
<field name="name">How to optimize your sales, from leads to sales orders</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 6:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location7"/>
@@ -181,7 +181,7 @@
</record>
<record id="event_track9" model="event.track">
<field name="name">How to improve your quality processes</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="user_id" ref="base.user_admin"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 8:30:00')"></field>
@@ -194,7 +194,7 @@
</record>
<record id="event_track10" model="event.track">
<field name="name">Raising qualitive insights from your customers</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 6:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location7"/>
@@ -205,7 +205,7 @@
</record>
<record id="event_track11" model="event.track">
<field name="name">Discover our new design team</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 10:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location7"/>
@@ -216,7 +216,7 @@
</record>
<record id="event_track12" model="event.track">
<field name="name">Latest trends</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 11:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location7"/>
@@ -227,7 +227,7 @@
</record>
<record id="event_track13" model="event.track">
<field name="name">Advanced reporting</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 6:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location8"/>
@@ -238,7 +238,7 @@
</record>
<record id="event_track14" model="event.track">
<field name="name">Partnership programs</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 7:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location8"/>
@@ -249,7 +249,7 @@
</record>
<record id="event_track15" model="event.track">
<field name="name">How to communicate with your community</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 10:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location8"/>
@@ -260,7 +260,7 @@
</record>
<record id="event_track16" model="event.track">
<field name="name">How to follow us on the social media</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 11:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location8"/>
@@ -271,7 +271,7 @@
</record>
<record id="event_track17" model="event.track">
<field name="name">The new marketing strategy</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 6:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location9"/>
@@ -282,7 +282,7 @@
</record>
<record id="event_track18" model="event.track">
<field name="name">How to build your marketing strategy within a competitive environment</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 8:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location9"/>
@@ -294,7 +294,7 @@
</record>
<record id="event_track19" model="event.track">
<field name="name">Advanced lead management : tips and tricks from the fields</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 9:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location9"/>
@@ -306,7 +306,7 @@
</record>
<record id="event_track20" model="event.track">
<field name="name">New Certification Program</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 10:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location9"/>
@@ -317,7 +317,7 @@
</record>
<record id="event_track21" model="event.track">
<field name="name">House of World Cultures</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 10:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location9"/>
@@ -328,7 +328,7 @@
</record>
<record id="event_track22" model="event.track">
<field name="name">Minimal but efficient design</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 11:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location9"/>
@@ -339,7 +339,7 @@
</record>
<record id="event_track23" model="event.track">
<field name="name">Key Success factors selling our furniture</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 7:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location9"/>
@@ -350,7 +350,7 @@
</record>
<record id="event_track24" model="event.track">
<field name="name">Design contest (entire day)</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 6:00:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location10"/>
@@ -361,7 +361,7 @@
</record>
<record id="event_track25" model="event.track">
<field name="name">Design contest (entire afternoon)</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 8:30:00')"></field>
<field name="location_id" ref="website_event_track.event_track_location10"/>
@@ -372,7 +372,7 @@
</record>
<record id="event_track27" model="event.track">
<field name="name">My Company global presentation</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 04:00:00')"></field>
<field name="duration" eval="1"/>
@@ -383,7 +383,7 @@
</record>
<record id="event_track28" model="event.track">
<field name="name">Status &amp; Strategy</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 5:00:00')"></field>
<field name="duration" eval="0.5"/>
@@ -393,7 +393,7 @@
</record>
<record id="event_track29" model="event.track">
<field name="name">The new marketing strategy</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 5:30:00')"></field>
<field name="duration" eval="0.25"/>
@@ -404,7 +404,7 @@
</record>
<record id="event_track30" model="event.track">
<field name="name">Morning break</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 5:45:00')"></field>
<field name="duration" eval="0.25"/>
@@ -413,7 +413,7 @@
</record>
<record id="event_track31" model="event.track">
<field name="name">Lunch</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="date" eval="time.strftime(str(DateTime.today().year) + '-06-04 7:30:00')"></field>
<field name="duration" eval="1"/>
@@ -74,7 +74,7 @@
<field name="name">Thanks (Contact us)</field>
<field name="type">qweb</field>
<field name="url">/contactus-thank-you</field>
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="key">website_form.contactus_thanks</field>
<field name="arch" type="xml">
<t name="Thanks (Contact us)" t-name="website_form.contactus_thanks">
@@ -2,7 +2,7 @@
<odoo>
<record id="hr.job_marketing" model="hr.job">
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="website_description" type="html">
<section class="mt16 mb16 oe_dark">
<div class="container">
@@ -134,7 +134,7 @@
</record>
<record id="hr.job_developer" model="hr.job">
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="website_description" type="html">
<section class="mt16 mb16 oe_dark">
<div class="container">
@@ -267,7 +267,7 @@
</record>
<record id="hr.job_consultant" model="hr.job">
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="website_description" type="html">
<section class="mt16 mb16 oe_dark">
<div class="container">
@@ -398,7 +398,7 @@
<record id="thankyou" model="website.page">
<field name="url">/job-thank-you</field>
<field name="website_published">True</field>
<field name="is_published">True</field>
<field name="name">Thank you (Recruitment)</field>
<field name="type">qweb</field>
<field name="key">website_hr_recruitment.thankyou</field>
@@ -3,10 +3,10 @@
<data noupdate="1">
<record id="base.res_partner_12" model="res.partner">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="base.res_partner_2" model="res.partner">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
</data>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="base.main_partner" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
</odoo>
</odoo>
@@ -2,53 +2,53 @@
<odoo>
<record id="base.partner_admin" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.partner_demo" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.partner_demo_portal" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_12" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_12" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_2" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_1" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_12" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_3" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_3" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_2" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_18" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_10" model="res.partner">
<field name="website_published">True</field>
<field name="is_published">True</field>
</record>
<record id="base.res_partner_12" model="res.partner">
-2
View File
@@ -7,6 +7,4 @@ class Rating(models.Model):
_inherit = 'rating.rating'
# Add this related field to mail.message for performance reason
# This field may one day be deplaced to another module (like 'website_rating') if it is required for
# another usage not related to website_sale.
website_published = fields.Boolean(related='message_id.website_published', store=True, readonly=False)
+23 -23
View File
@@ -6,56 +6,56 @@
</record>
<record id="product.product_product_24" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_5" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_12" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_10" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_13" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_25" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.consu_delivery_02" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_delivery_01" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_3" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_22" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.consu_delivery_03" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_27" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_delivery_02" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_16" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.consu_delivery_01" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_order_01" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_4" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="website_size_x">2</field>
<field name="website_size_y">2</field>
<field name="website_sequence">9950</field>
@@ -63,25 +63,25 @@
</record>
<record id="product.product_product_6" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="website_sequence">10010</field>
<field name="website_style_ids" eval="[(6,0,[ref('website_sale.image_full')])]"/>
</record>
<record id="product.product_product_7" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_8" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_9" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_11" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="accessory_product_ids" eval="[(6, 0, [ref('product.product_product_7')])]"/>
</record>
@@ -636,7 +636,7 @@
<field name="name">Warranty</field>
<field name="list_price">20.0</field>
<field name="website_sequence">9980</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="type">service</field>
<field name="uom_id" ref="uom.product_uom_unit"/>
<field name="uom_po_id" ref="uom.product_uom_unit"/>
+2 -2
View File
@@ -11,7 +11,7 @@ class TestUi(odoo.tests.HttpCase):
# create a template
product_template = self.env['product.template'].create({
'name': 'Test Product',
'website_published': True,
'is_published': True,
'list_price': 750,
})
@@ -147,7 +147,7 @@ class TestUi(odoo.tests.HttpCase):
# create the template
product_template = self.env['product.template'].create({
'name': 'Test Product 2',
'website_published': True,
'is_published': True,
})
# set attribute and attribute values on the template
+1 -1
View File
@@ -7,7 +7,7 @@
<field name="arch" type="xml">
<xpath expr="//filter[@name='consumable']" position="after">
<separator/>
<filter string="Published" name="published" domain="[('website_published', '=', True)]"/>
<filter string="Published" name="published" domain="[('is_published', '=', True)]"/>
</xpath>
</field>
</record>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="delivery.free_delivery_carrier" model="delivery.carrier">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
</odoo>
@@ -3,11 +3,11 @@
<data noupdate="1">
<record id="delivery.delivery_carrier" model="delivery.carrier">
<field name="website_published" eval="False" />
<field name="is_published" eval="False" />
</record>
<record id="delivery.normal_delivery_carrier" model="delivery.carrier">
<field name="website_published" eval="False" />
<field name="is_published" eval="False" />
</record>
</data>
@@ -28,7 +28,7 @@
<field name="inherit_id" ref="delivery.view_delivery_carrier_tree"/>
<field name="arch" type="xml">
<field name="delivery_type" position="after">
<field name="website_published"/>
<field name="is_published"/>
<field name="website_id" groups="website.group_multi_website"/>
</field>
</field>
@@ -40,7 +40,7 @@
<field name="inherit_id" ref="delivery.view_delivery_carrier_search"/>
<field name="arch" type="xml">
<filter name="inactive" position="after">
<filter string="Published" name="website_published" domain="[('website_published','=',True)]"/>
<filter string="Published" name="is_published" domain="[('is_published','=',True)]"/>
</filter>
</field>
</record>
@@ -6,7 +6,7 @@
<field name="standard_price">2</field>
<field name="list_price">4.50</field>
<field name="type">service</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="image_1920" type="base64" file="website_sale_digital/static/digital_product_1.jpg"/>
<field name="categ_id" ref="product.product_category_6"/>
</record>
@@ -2,7 +2,7 @@
<odoo noupdate="1">
<record id="sale_product_configurator.product_product_1_product_template" model="product.template">
<field name="website_sequence">9980</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="product.product_product_4_product_template" model="product.template">
<field name="optional_product_ids" eval="[(6,0,[ref('product.product_product_11_product_template'), ref('website_sale.product_product_1_product_template')])]"/>
@@ -8,7 +8,7 @@
<field name="standard_price">100.0</field>
<field name="list_price">100.0</field>
<field name="type">service</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="image_1920" type="base64" file="website_sale_slides/static/img/product_course.png"/>
</record>
@@ -24,7 +24,7 @@
<field name="standard_price">12.0</field>
<field name="list_price">12.0</field>
<field name="type">consu</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="image_1920" type="base64" file="website_sale_slides/static/img/water_can.jpg"/>
</record>
@@ -33,7 +33,7 @@
<field name="standard_price">4.5</field>
<field name="list_price">4.5</field>
<field name="type">consu</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="image_1920" type="base64" file="website_sale_slides/static/img/flower_pot.jpg"/>
</record>
@@ -42,7 +42,7 @@
<field name="standard_price">150.0</field>
<field name="list_price">150.0</field>
<field name="type">service</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="image_1920" type="base64" file="website_sale_slides/static/img/channel_demo_tree_1.jpg"/>
</record>
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<record id="stock.product_cable_management_box" model="product.product">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="stock.product_cable_management_box_product_template" model="product.template">
<field name="public_categ_ids" eval="[(6,0,[ref('website_sale.public_category_boxes')])]"/>
+4 -4
View File
@@ -820,7 +820,7 @@ class WebsiteSlides(WebsiteProfile):
try:
values['user_id'] = request.env.uid
values['website_published'] = values.get('website_published', False) and can_publish
values['is_published'] = values.get('is_published', False) and can_publish
slide = request.env['slide.slide'].sudo().create(values)
except (UserError, AccessError) as e:
_logger.error(e)
@@ -836,17 +836,17 @@ class WebsiteSlides(WebsiteProfile):
redirect_url += "?enable_editor=1"
if slide.slide_type == "quiz":
action_id = request.env.ref('website_slides.action_slides_slides').id
redirect_url = '/web#id=%s&action=%s&model=slide.slide&view_type=form' %(slide.id,action_id)
redirect_url = '/web#id=%s&action=%s&model=slide.slide&view_type=form' % (slide.id, action_id)
return {
'url': redirect_url,
'channel_type': channel.channel_type,
'slide_id': slide.id,
'category_id': slide.category_id
}
}
def _get_valid_slide_post_values(self):
return ['name', 'url', 'tag_ids', 'slide_type', 'channel_id', 'is_preview',
'mime_type', 'datas', 'description', 'image_1920', 'index_content', 'website_published']
'mime_type', 'datas', 'description', 'image_1920', 'index_content', 'is_published']
@http.route(['/slides/tag/search_read'], type='json', auth='user', methods=['POST'], website=True)
def slide_tag_search_read(self, fields, domain):
@@ -6,7 +6,7 @@
<field name="name">Get started</field>
<field name="description">Register to the platform</field>
<field name="image_1920" type="base64" file="website_slides/static/src/img/standard_badge_bronze.svg"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="level">bronze</field>
<field name="rule_auth">nobody</field>
</record>
@@ -47,7 +47,7 @@
<field name="name">Know yourself</field>
<field name="description">Complete your profile</field>
<field name="image_1920" type="base64" file="website_slides/static/src/img/standard_badge_bronze.svg"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="level">bronze</field>
<field name="rule_auth">nobody</field>
</record>
@@ -89,7 +89,7 @@
<field name="name">Power User</field>
<field name="description">Complete a course</field>
<field name="image_1920" type="base64" file="website_slides/static/src/img/standard_badge_silver.svg"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="level">silver</field>
<field name="rule_auth">nobody</field>
</record>
@@ -129,7 +129,7 @@
<field name="name">Certified Knowledge</field>
<field name="description">Get a certification</field>
<field name="image_1920" type="base64" file="website_slides/static/src/img/standard_badge_gold.svg"/>
<field name="website_published" eval="False"/>
<field name="is_published" eval="False"/>
<field name="level">gold</field>
<field name="rule_auth">nobody</field>
</record>
@@ -170,7 +170,7 @@
<field name="name">Community hero</field>
<field name="description">Reach 2000 XP</field>
<field name="image_1920" type="base64" file="website_slides/static/src/img/standard_badge_gold.svg"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="level">gold</field>
<field name="rule_auth">nobody</field>
</record>
@@ -22,7 +22,7 @@
<field name="channel_type">training</field>
<field name="allow_comment" eval="True"/>
<field name="promote_strategy">latest</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="tag_ids" eval="[(5, 0),
(4, ref('website_slides.slide_channel_tag_level_intermediate')),
(4, ref('website_slides.slide_channel_tag_role_gardener')),
@@ -48,7 +48,7 @@
<field name="channel_type">documentation</field>
<field name="allow_comment" eval="True"/>
<field name="promote_strategy">most_viewed</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="tag_ids" eval="[(5, 0),
(4, ref('website_slides.slide_channel_tag_level_intermediate')),
(4, ref('website_slides.slide_channel_tag_role_gardener')),
@@ -76,7 +76,7 @@
<field name="channel_type">training</field>
<field name="allow_comment" eval="True"/>
<field name="promote_strategy">latest</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="tag_ids" eval="[(5, 0),
(4, ref('website_slides.slide_channel_tag_level_intermediate')),
(4, ref('website_slides.slide_channel_tag_role_gardener')),
@@ -100,7 +100,7 @@ will learn the basics of wood characteristics.</field>
<field name="channel_type">documentation</field>
<field name="allow_comment" eval="True"/>
<field name="promote_strategy">most_voted</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="tag_ids" eval="[(5, 0),
(4, ref('website_slides.slide_channel_tag_level_basic')),
(4, ref('website_slides.slide_channel_tag_role_furniture'))]"/>
@@ -120,7 +120,7 @@ will learn the basics of wood characteristics.</field>
<field name="channel_type">training</field>
<field name="allow_comment" eval="True"/>
<field name="promote_strategy">latest</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="tag_ids" eval="[(5, 0),
(4, ref('website_slides.slide_channel_tag_level_intermediate')),
(4, ref('website_slides.slide_channel_tag_role_furniture')),
@@ -153,7 +153,7 @@ will learn the basics of wood characteristics.</field>
<field name="channel_type">training</field>
<field name="allow_comment" eval="True"/>
<field name="promote_strategy">most_voted</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="tag_ids" eval="[(5, 0),
(4, ref('website_slides.slide_channel_tag_level_advanced')),
(4, ref('website_slides.slide_channel_tag_role_carpenter')),
@@ -2,7 +2,7 @@
<odoo><data noupdate="1">
<record id="slide_channel_tag_group_level" model="slide.channel.tag.group">
<field name="name">Your Level</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="slide_channel_tag_level_basic" model="slide.channel.tag">
<field name="name">Basic</field>
@@ -19,7 +19,7 @@
<record id="slide_channel_tag_group_role" model="slide.channel.tag.group">
<field name="name">Your Role</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="slide_channel_tag_role_gardener" model="slide.channel.tag">
<field name="name">Gardener</field>
+2 -2
View File
@@ -4,7 +4,7 @@
<record model="slide.channel" id="channel_public">
<field name="name">Our documentation</field>
<field name="promote_strategy">most_viewed</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="enroll">public</field>
<field name="description">Public access to presentations and documentation.</field>
</record>
@@ -12,7 +12,7 @@
<record id="slide_channel_tag_group_data_other" model="slide.channel.tag.group">
<field name="name">Tags</field>
<field name="sequence">20</field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
</data>
</odoo>
+16 -16
View File
@@ -11,7 +11,7 @@
<field name="slide_type">presentation</field>
<field name="channel_id" ref="website_slides.channel_public"/>
<field name="category_id" eval="False"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="public_views">10</field>
<field name="completion_time">2.5</field>
@@ -25,7 +25,7 @@
<field name="slide_type">infographic</field>
<field name="channel_id" ref="website_slides.channel_public"/>
<field name="category_id" eval="False"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">5</field>
<field name="completion_time">1</field>
@@ -42,7 +42,7 @@
<field name="slide_type">infographic</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_1_gard1"/>
<field name="category_id" ref="website_slides.slide_category_demo_1_0"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="public_views">5</field>
<field name="completion_time">0.5</field>
@@ -56,7 +56,7 @@
<field name="slide_type">infographic</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_1_gard1"/>
<field name="category_id" ref="website_slides.slide_category_demo_1_0"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">5</field>
<field name="completion_time">1.5</field>
@@ -70,7 +70,7 @@
<field name="slide_type">infographic</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_1_gard1"/>
<field name="category_id" ref="website_slides.slide_category_demo_1_0"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">10</field>
<field name="completion_time">1</field>
@@ -96,7 +96,7 @@
<field name="slide_type">video</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_1_gard1"/>
<field name="category_id" ref="website_slides.slide_category_demo_1_1"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">0</field>
<field name="completion_time">1</field>
@@ -145,7 +145,7 @@
</div>
</div>
</section></field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="public_views">5</field>
<field name="completion_time">1</field>
@@ -203,7 +203,7 @@
<field name="slide_type">presentation</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_1_gard1"/>
<field name="category_id" ref="website_slides.slide_category_demo_1_1"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">10</field>
<field name="completion_time">2.5</field>
@@ -221,7 +221,7 @@
<field name="slide_type">presentation</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_2_gard2"/>
<field name="category_id" ref="website_slides.slide_category_demo_2_0"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="public_views">0</field>
<field name="completion_time">1</field>
@@ -317,7 +317,7 @@
</div>
</div>
</section></field>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">0</field>
<field name="completion_time">2</field>
@@ -332,7 +332,7 @@
<field name="slide_type">video</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_2_gard2"/>
<field name="category_id" ref="website_slides.slide_category_demo_2_0"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">0</field>
<field name="completion_time">1</field>
@@ -350,7 +350,7 @@
<field name="slide_type">presentation</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_5_furn2"/>
<field name="category_id" ref="website_slides.slide_category_demo_5_0"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="public_views">10</field>
<field name="completion_time">2.5</field>
@@ -377,7 +377,7 @@
<field name="channel_id" ref="website_slides.slide_channel_demo_5_furn2"/>
<field name="category_id" ref="website_slides.slide_category_demo_5_1"/>
<field name="category_id" eval="False"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">0</field>
<field name="completion_time">1</field>
@@ -393,7 +393,7 @@
<field name="channel_id" ref="website_slides.slide_channel_demo_5_furn2"/>
<field name="category_id" ref="website_slides.slide_category_demo_5_1"/>
<field name="category_id" eval="False"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="True"/>
<field name="public_views">5</field>
<field name="completion_time">3</field>
@@ -403,10 +403,10 @@
<field name="name">Test your knowledge !</field>
<field name="sequence">4</field>
<field name="image_1920" type="base64" file="website_slides/static/src/img/slide_demo_owl.jpg"/>
<field name="slide_type">quiz</field>
<field name="slide_type">quiz</field>
<field name="channel_id" ref="website_slides.slide_channel_demo_5_furn2"/>
<field name="category_id" ref="website_slides.slide_category_demo_5_0"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="public_views">0</field>
<field name="completion_time">0.5</field>
@@ -200,7 +200,7 @@ class Channel(models.Model):
def _compute_slides_statistics(self):
result = dict((cid, dict(total_views=0, total_votes=0, total_time=0)) for cid in self.ids)
read_group_res = self.env['slide.slide'].read_group(
[('is_published', '=', True),('channel_id', 'in', self.ids)],
[('website_published', '=', True), ('channel_id', 'in', self.ids)],
['channel_id', 'slide_type', 'likes', 'dislikes', 'total_views', 'completion_time'],
groupby=['channel_id', 'slide_type'],
lazy=False)
@@ -534,7 +534,7 @@ class Category(models.Model):
def _count_presentations(self):
result = dict.fromkeys(self.ids, dict())
res = self.env['slide.slide'].read_group(
[('is_published', '=', True), ('category_id', 'in', self.ids)],
[('website_published', '=', True), ('category_id', 'in', self.ids)],
['category_id', 'slide_type'], ['category_id', 'slide_type'],
lazy=False)
@@ -7,14 +7,15 @@ from odoo import fields, models
class SlideChannelTagGroup(models.Model):
_name = 'slide.channel.tag.group'
_description = 'Channel/Course tags'
_inherit = 'website.published.mixin'
_order = 'sequence asc'
name = fields.Char('Name', required=True, translate=True)
sequence = fields.Integer('Sequence', default=10, index=True, required=True)
tag_ids = fields.One2many('slide.channel.tag', 'group_id', string='Tags')
website_published = fields.Boolean(
'Menu entry', default=True,
help='Makes a menu entry in main navigation of Slides, allowing to filter on its tags directly from main navigation.')
def _default_is_published(self):
return True
class SlideChannelTag(models.Model):
+3 -3
View File
@@ -289,7 +289,7 @@ class Slide(models.Model):
values['index_content'] = values.get('description')
if values.get('slide_type') == 'infographic' and not values.get('image_1920'):
values['image_1920'] = values['datas']
if values.get('website_published') and not values.get('date_published'):
if values.get('is_published') and not values.get('date_published'):
values['date_published'] = datetime.datetime.now()
if values.get('url') and not values.get('document_id'):
doc_data = self._parse_document_url(values['url']).get('values', dict())
@@ -298,7 +298,7 @@ class Slide(models.Model):
slide = super(Slide, self).create(values)
if slide.website_published:
if slide.is_published:
slide._post_publication()
return slide
@@ -309,7 +309,7 @@ class Slide(models.Model):
values.setdefault(key, value)
res = super(Slide, self).write(values)
if values.get('website_published'):
if values.get('is_published'):
self.date_published = datetime.datetime.now()
self._post_publication()
return res
@@ -131,7 +131,7 @@ var SlideUploadDialog = Dialog.extend({
'description': this._formGetFieldValue('description'),
'index_content': this._formGetFieldValue('index_content'),
'is_preview': this.$('#is_preview').is(':checked'),
'website_published': forcePublished,
'is_published': forcePublished,
}, this._getSelect2DropdownValues()); // add tags and category
// default slide_type (for webpage for instance)
+2 -2
View File
@@ -45,7 +45,7 @@ class SlidesCase(common.SavepointCase):
'promote_strategy': 'most_voted',
'enroll': 'public',
'visibility': 'public',
'website_published': True,
'is_published': True,
'karma_gen_channel_finish': 100,
'karma_gen_slide_vote': 5,
'karma_gen_channel_rank': 10,
@@ -54,7 +54,7 @@ class SlidesCase(common.SavepointCase):
'name': 'How To Cook Humans',
'channel_id': self.channel.id,
'slide_type': 'presentation',
'website_published': True,
'is_published': True,
'completion_time': 2.0,
})
+3 -3
View File
@@ -19,7 +19,7 @@ class TestKarmaGain(common.SlidesCase):
'promote_strategy': 'most_voted',
'enroll': 'public',
'visibility': 'public',
'website_published': True,
'is_published': True,
'karma_gen_channel_finish': 100,
'karma_gen_slide_vote': 5,
'karma_gen_channel_rank': 10,
@@ -29,14 +29,14 @@ class TestKarmaGain(common.SlidesCase):
'name': 'How to travel through space and time',
'channel_id': self.channel_2.id,
'slide_type': 'presentation',
'website_published': True,
'is_published': True,
'completion_time': 2.0,
})
self.slide_2_1 = self.env['slide.slide'].with_user(self.user_publisher).create({
'name': 'How to duplicate yourself',
'channel_id': self.channel_2.id,
'slide_type': 'presentation',
'website_published': True,
'is_published': True,
'completion_time': 2.0,
})
+4 -4
View File
@@ -66,7 +66,7 @@ class TestAccess(common.SlidesCase):
@mute_logger('odoo.models', 'odoo.addons.base.models.ir_rule')
def test_access_channel_publish(self):
""" Unpublished channels and their content are visible only to website people """
self.channel.write({'website_published': False, 'enroll': 'public'})
self.channel.write({'is_published': False, 'enroll': 'public'})
# channel available only to website
self.channel.with_user(self.user_publisher).read(['name'])
@@ -97,10 +97,10 @@ class TestAccess(common.SlidesCase):
self.slide.with_user(self.user_emp).read(['name'])
# publish channel but content unpublished (even if can be previewed) still unavailable
self.channel.write({'website_published': True})
self.channel.write({'is_published': True})
self.slide.write({
'is_preview': True,
'website_published': False,
'is_published': False,
})
self.slide.with_user(self.user_publisher).read(['name'])
@@ -134,7 +134,7 @@ class TestAccessFeatures(common.SlidesCase):
channel = self.env['slide.channel'].create({
'name': 'Test',
'enroll': 'invite',
'website_published': True,
'is_published': True,
'enroll_group_ids': [(4, self.ref('base.group_user'))]
})
@@ -21,14 +21,14 @@ class TestStatistics(common.SlidesCase):
'name': 'How To Cook For Humans',
'channel_id': self.channel.id,
'slide_type': 'presentation',
'website_published': True,
'is_published': True,
'completion_time': 3.0,
})
self.slide_3 = self.env['slide.slide'].with_user(self.user_publisher).create({
'name': 'How To Cook Humans For Humans',
'channel_id': self.channel.id,
'slide_type': 'document',
'website_published': True,
'is_published': True,
'completion_time': 1.5,
})
@@ -63,9 +63,14 @@
<field name="arch" type="xml">
<form string="Channel Tag Group">
<sheet>
<div class="oe_button_box" name="button_box">
<button class="oe_stat_button" name="website_publish_button"
type="object" icon="fa-globe">
<field name="is_published" widget="website_button" help="Makes a menu entry in main navigation of Slides, allowing to filter on its tags directly from main navigation."/>
</button>
</div>
<group>
<field name="name"/>
<field name="website_published"/>
</group>
</sheet>
</form>
@@ -79,7 +84,7 @@
<tree string="Channel Tag Groups">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="website_published"/>
<field name="is_published" string="Menu Entry"/>
</tree>
</field>
</record>
@@ -186,8 +186,8 @@
<field name="arch" type="xml">
<search string="Search Slides">
<field name="name"/>
<filter name="published" string="Published" domain="[('website_published', '=', True)]"/>
<filter name="not_published" string="Waiting for validation" domain="[('website_published', '=', False)]"/>
<filter name="published" string="Published" domain="[('is_published', '=', True)]"/>
<filter name="not_published" string="Waiting for validation" domain="[('is_published', '=', False)]"/>
<separator/>
<filter string="Archived" name="inactive" domain="[('active','=',False)]"/>
<group expand="0" string="Group By">
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo><data noupdate="0">
<record id="website_slides.badge_data_certification" model="gamification.badge">
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
</record>
<record id="website_slides.badge_data_certification_goal" model="gamification.goal.definition">
<field name="domain">[
@@ -11,7 +11,7 @@
<field name="channel_id" ref="website_slides.slide_channel_demo_5_furn2"/>
<field name="category_id" ref="website_slides.slide_category_demo_5_0"/>
<field name="survey_id" ref="website_slides_survey.furniture_certification"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="description">Now that you have completed the course, it's time to test your knowledge!</field>
</record>
@@ -26,7 +26,7 @@
<field name="channel_id" ref="website_slides.slide_channel_demo_6_furn3"/>
<field name="category_id" eval="False"/>
<field name="survey_id" ref="website_slides_survey.furniture_certification"/>
<field name="website_published" eval="True"/>
<field name="is_published" eval="True"/>
<field name="is_preview" eval="False"/>
<field name="description">It's time to test your knowledge!</field>
</record>
@@ -45,7 +45,7 @@ class TestCourseCertificationFailureFlow(SurveyCase):
'channel_type': 'training',
'enroll': 'public',
'visibility': 'public',
'website_published': True,
'is_published': True,
})
# Step 2: link the certification to a slide of type 'certification'
@@ -54,7 +54,7 @@ class TestCourseCertificationFailureFlow(SurveyCase):
'channel_id': self.channel.id,
'slide_type': 'certification',
'survey_id': certification.id,
'website_published': True,
'is_published': True,
})
# Step 3: add public user as member of the channel
self.channel._action_add_members(self.user_public.partner_id)
+3 -3
View File
@@ -35,7 +35,7 @@ diff --git a/academy/demo.xml b/academy/demo.xml
+ <field name="name">Course 0</field>
+ <field name="teacher_id" ref="padilla"/>
+ <field name="public_categ_ids" eval="[(4, ref('academy.category_courses'), False)]"/>
+ <field name="website_published">True</field>
+ <field name="is_published">True</field>
+ <field name="list_price" type="float">0</field>
+ <field name="type">service</field>
+ </record>
@@ -43,7 +43,7 @@ diff --git a/academy/demo.xml b/academy/demo.xml
+ <field name="name">Course 1</field>
+ <field name="teacher_id" ref="padilla"/>
+ <field name="public_categ_ids" eval="[(4, ref('academy.category_courses'), False)]"/>
+ <field name="website_published">True</field>
+ <field name="is_published">True</field>
+ <field name="list_price" type="float">0</field>
+ <field name="type">service</field>
+ </record>
@@ -51,7 +51,7 @@ diff --git a/academy/demo.xml b/academy/demo.xml
+ <field name="name">Course 2</field>
+ <field name="teacher_id" ref="vaughn"/>
+ <field name="public_categ_ids" eval="[(4, ref('academy.category_courses'), False)]"/>
+ <field name="website_published">True</field>
+ <field name="is_published">True</field>
+ <field name="list_price" type="float">0</field>
+ <field name="type">service</field>
+ </record>