[IMP] website_slides: add views and access for slide progress
Purpose of this commit is to have access to slide.slide.partner model that holds member progress on specific slide. It is used notably to build completion on slide.channel.partner or to store vote data. It is interesting to have access to it to have some detailed informations. It is now reachable through the "attendees" smart button that replaces the 'views' button. Public / other views are moved in slide details as those buttons do not add much to the slide usability. Task-2607416 Part-of: odoo/odoo#74171
This commit is contained in:
@@ -33,6 +33,7 @@ Featuring
|
||||
'views/rating_rating_views.xml',
|
||||
'views/slide_embed_views.xml',
|
||||
'views/slide_question_views.xml',
|
||||
'views/slide_slide_partner_views.xml',
|
||||
'views/slide_slide_views.xml',
|
||||
'views/slide_channel_partner_views.xml',
|
||||
'views/slide_channel_views.xml',
|
||||
|
||||
@@ -26,8 +26,10 @@ class SlidePartnerRelation(models.Model):
|
||||
_name = 'slide.slide.partner'
|
||||
_description = 'Slide / Partner decorated m2m'
|
||||
_table = 'slide_slide_partner'
|
||||
_rec_name = 'partner_id'
|
||||
|
||||
slide_id = fields.Many2one('slide.slide', ondelete="cascade", index=True, required=True)
|
||||
slide_id = fields.Many2one('slide.slide', string="Content", ondelete="cascade", index=True, required=True)
|
||||
slide_category = fields.Selection(related='slide_id.slide_category')
|
||||
channel_id = fields.Many2one(
|
||||
'slide.channel', string="Channel",
|
||||
related="slide_id.channel_id", store=True, index=True, ondelete='cascade')
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo><data>
|
||||
<record id="slide_slide_partner_view_search" model="ir.ui.view">
|
||||
<field name="name">slide.slide.partner.view.search</field>
|
||||
<field name="model">slide.slide.partner</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Attendees">
|
||||
<field name="partner_id"/>
|
||||
<field name="slide_id"/>
|
||||
<field name="channel_id"/>
|
||||
<separator/>
|
||||
<filter string="Completed" name="filter_completed" domain="[('completed', '=', True)]"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter string="Content" name="groupby_slide_id" context="{'group_by': 'slide_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="slide_slide_partner_view_tree" model="ir.ui.view">
|
||||
<field name="name">slide.slide.partner.view.tree</field>
|
||||
<field name="model">slide.slide.partner</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Attendees" create="0" delete="0">
|
||||
<field name="create_date" string="Accessed on"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="slide_id" optional="hide"/>
|
||||
<field name="channel_id" optional="hide"/>
|
||||
<field name="completed" readonly="1"/>
|
||||
<field name="quiz_attempts_count" readonly="1" string="# Quizz Attempts"
|
||||
sum="# Total Attempts"/>
|
||||
<field name="vote" readonly="1"
|
||||
sum="# Likes"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="slide_slide_partner_view_form" model="ir.ui.view">
|
||||
<field name="name">slide.slide.partner.view.form</field>
|
||||
<field name="model">slide.slide.partner</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Attendee" create="0">
|
||||
<sheet>
|
||||
<group col="2" name="main_content">
|
||||
<group>
|
||||
<field name="partner_id"/>
|
||||
<field name="slide_id"/>
|
||||
<field name="slide_category" invisible="1"/>
|
||||
<field name="channel_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="completed" readonly="1"/>
|
||||
<field name="quiz_attempts_count" readonly="1"/>
|
||||
<field name="vote" readonly="1"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="slide_slide_partner_action_from_slide" model="ir.actions.act_window">
|
||||
<field name="name">Attendees</field>
|
||||
<field name="res_model">slide.slide.partner</field>
|
||||
<field name="view_mode">tree,form,kanban</field>
|
||||
<field name="search_view_id" ref="website_slides.slide_slide_partner_view_search"/>
|
||||
<field name="context">{'default_slide_id': active_id}</field>
|
||||
<field name="domain">[('slide_id', '=', active_id)]</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
<strong>No Attendee Yet!</strong>
|
||||
</p>
|
||||
<p>
|
||||
From here you'll be able to monitor attendees and to track their progress.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data></odoo>
|
||||
@@ -51,22 +51,11 @@
|
||||
<field name="channel_type" invisible="1" readonly="1"/>
|
||||
<field name="channel_allow_comment" invisible="1" readonly="1"/>
|
||||
<div class="oe_button_box" name="button_box">
|
||||
<button disabled="1" class="mx-auto disabled oe_read_only"
|
||||
attrs="{'invisible': [('slide_views', '=', 0)]}" icon="fa-eye">
|
||||
<button name="%(slide_slide_partner_action_from_slide)d"
|
||||
class="oe_stat_button" type="action" icon="fa-graduation-cap"
|
||||
attrs="{'invisible': [('slide_views', '=', 0)]}">
|
||||
<span class="o_stat_value">
|
||||
<field name="slide_views" widget="statinfo" nolabel="1"/> Member Views
|
||||
</span>
|
||||
</button>
|
||||
<button disabled="disabled" class="mx-auto oe_read_only" icon="fa-eye"
|
||||
attrs="{'invisible': [('public_views', '=', 0)]}">
|
||||
<span class="o_stat_value">
|
||||
<field name="public_views" widget="statinfo" nolabel="1"/> Public Views
|
||||
</span>
|
||||
</button>
|
||||
<button disabled="1" class="mx-auto oe_read_only" icon="fa-eye"
|
||||
attrs="{'invisible': [('total_views', '=', 0)]}">
|
||||
<span class="o_stat_value">
|
||||
<field name="total_views" widget="statinfo" nolabel="1"/> Total Views
|
||||
<field name="slide_views" widget="statinfo" nolabel="1"/> Attendees
|
||||
</span>
|
||||
</button>
|
||||
<button disabled="1" icon="fa-thumbs-up" class="oe_stat_button oe_read_only"
|
||||
@@ -158,9 +147,11 @@
|
||||
<field name="completion_time" widget="float_time" class="oe_inline"/>
|
||||
<span> hours</span>
|
||||
</div>
|
||||
<field name="is_preview"/>
|
||||
<field name="slide_resource_downloadable" attrs="{'invisible': ['|', ('slide_category', '!=', 'document'), ('source_type', '!=', 'local_file')]}"/>
|
||||
<field name="date_published" string="Published Date" attrs="{'invisible': [('date_published', '=', False)]}" groups="base.group_no_one"/>
|
||||
<field name="is_preview"/>
|
||||
<field name="public_views"/>
|
||||
<field name="total_views"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'views/slide_channel_views.xml',
|
||||
'views/slide_slide_partner_views.xml',
|
||||
'views/slide_slide_views.xml',
|
||||
'views/survey_survey_views.xml',
|
||||
'views/website_slides_menu_views.xml',
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo><data>
|
||||
|
||||
<record id="slide_slide_partner_view_search" model="ir.ui.view">
|
||||
<field name="name">slide.slide.partner.view.search.inherit.survey</field>
|
||||
<field name="model">slide.slide.partner</field>
|
||||
<field name="inherit_id" ref="website_slides.slide_slide_partner_view_search"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//filter[@name='filter_completed']" position="after">
|
||||
<filter string="Certification Passed" name="filter_survey_scoring_success" domain="[('survey_scoring_success', '=', True)]"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="slide_slide_partner_view_tree" model="ir.ui.view">
|
||||
<field name="name">slide.slide.partner.view.tree.inherit.survey</field>
|
||||
<field name="model">slide.slide.partner</field>
|
||||
<field name="inherit_id" ref="website_slides.slide_slide_partner_view_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='completed']" position="after">
|
||||
<field name="survey_scoring_success" string="Certification Passed"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="slide_slide_partner_view_form" model="ir.ui.view">
|
||||
<field name="name">slide.slide.partner.view.form.inherit.survey</field>
|
||||
<field name="model">slide.slide.partner</field>
|
||||
<field name="inherit_id" ref="website_slides.slide_slide_partner_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='completed']" position="after">
|
||||
<field name="survey_scoring_success" readonly="1"
|
||||
attrs="{'invisible': [('slide_category', '!=', 'certification')]}"/>
|
||||
</xpath>
|
||||
<xpath expr="//group[@name='main_content']" position="after">
|
||||
<field name="user_input_ids" mode="tree" readonly="1"
|
||||
attrs="{'invisible': [('slide_category', '!=', 'certification')]}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data></odoo>
|
||||
Reference in New Issue
Block a user