Browse Source

event media records

dev-rcn
root 3 years ago
parent
commit
93a16893a9
9 changed files with 145 additions and 66 deletions
  1. +2
    -1
      models/booking_event.py
  2. +4
    -3
      models/event.py
  3. +25
    -16
      models/event_media_link.py
  4. +6
    -6
      security/ir.model.access.csv
  5. +2
    -0
      views/booking_event.xml
  6. +4
    -2
      views/event.xml
  7. +9
    -1
      views/event_templates_list.xml
  8. +65
    -22
      views/event_templates_page_registration.xml
  9. +28
    -15
      views/media.xml

+ 2
- 1
models/booking_event.py View File

@ -8,7 +8,7 @@ from werkzeug import utils
class EventType(models.Model): class EventType(models.Model):
_inherit = "event.type" _inherit = "event.type"
_description = 'Event Template' _description = 'Event Template'
booking_event = fields.Boolean(string="Booking event", tracking=True) booking_event = fields.Boolean(string="Booking event", tracking=True)
booking_option_ids=fields.One2many('booking.option','event_type_id','booking options') booking_option_ids=fields.One2many('booking.option','event_type_id','booking options')
booking_questionnaire_id=fields.Many2one( booking_questionnaire_id=fields.Many2one(
@ -77,6 +77,7 @@ class EventBookingOptions(models.Model):
class BookingEvent(models.Model): class BookingEvent(models.Model):
_inherit = "event.event" _inherit = "event.event"
_description = 'Event' _description = 'Event'
individual_booking_event=fields.Boolean(string="individual booking event", tracking=True)
questionnaire_id=fields.Many2one('booking.questionnaire','questionnaire') questionnaire_id=fields.Many2one('booking.questionnaire','questionnaire')
question_ids=fields.One2many( question_ids=fields.One2many(
'event.question', 'event.question',


+ 4
- 3
models/event.py View File

@ -395,12 +395,13 @@ class KalachakraEvent(models.Model):
ondelete='restrict', ondelete='restrict',
default=_default_currency default=_default_currency
) )
media_session_ids=fields.One2many(
'event.media.session',
teaching_day_ids=fields.One2many(
'event.teaching.day',
'event_id', 'event_id',
string='Media sessions'
string='teaching days'
) )
teaching_html_content_records=fields.Html('teaching content records')
def add_event_to_google_agenda(self): def add_event_to_google_agenda(self):


+ 25
- 16
models/event_media_link.py View File

@ -2,17 +2,19 @@ from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError,Warning from odoo.exceptions import UserError, ValidationError,Warning
class event_media_session(models.Model):
_name = 'event.media.session'
_description = 'event media session'
class event_teaching_day(models.Model):
_name = 'event.teaching.day'
_description = 'event teaching day'
sequence = fields.Integer(string='Session')
sequence = fields.Integer(string='order')
day_teaching = fields.Date('Teaching Day')
description=fields.Char('Description') description=fields.Char('Description')
event_id=fields.Many2one('event.event') event_id=fields.Many2one('event.event')
media_link_ids=fields.One2many(
'event.media.link',
'media_session_id',
string='Media link'
teaching_session_ids=fields.One2many(
'event.teaching.session',
'teaching_day_id',
string='Teaching session'
) )
@ -20,15 +22,22 @@ class event_media_link(models.Model):
_name = 'event.media.link' _name = 'event.media.link'
_description = 'event media link' _description = 'event media link'
session_id=fields.Many2one('media.session')
date_recording = fields.Date('Recording date')
start_time_recording = fields.Float('Recording start time')
link_fr = fields.Char('FR Link')
link_en = fields.Char('EN Link')
format_recording =fields.Selection(string='Format',selection=[('audio','audio'),('video','video')],required=True, default='video')
class event_teaching_session(models.Model):
_name = 'event.teaching.session'
_description = 'event teaching session'
#teaching_session_id=fields.Many2one('event.teaching.day')
#date_recording = fields.Date('Recording date')
#start_time_recording = fields.Float('Recording start time')
description_fr=fields.Char('Description FR')
description_en=fields.Char('Description EN')
duration=fields.Float('Duration') duration=fields.Float('Duration')
description=fields.Char('Description')
media_session_id=fields.Many2one('event.media.session')
link_audio_fr = fields.Char('FR audio link')
link_audio_en = fields.Char('EN audio link')
link_video_fr = fields.Char('FR video link')
link_video_en = fields.Char('EN video link')
# format_recording =fields.Selection(string='Format',selection=[('audio','audio'),('video','video')],required=True, default='video')
teaching_day_id=fields.Many2one('event.teaching.day')
#language=fields.Selection(string='Language',selection=[('fr','fr'),('en','en')]) #language=fields.Selection(string='Language',selection=[('fr','fr'),('en','en')])

+ 6
- 6
security/ir.model.access.csv View File

@ -20,10 +20,10 @@ access_event_partner_category,event.partner_category,model_event_partner_categor
access_event_membership_product,event.membership_product,model_event_membership_product,base.group_user,1,1,1,1 access_event_membership_product,event.membership_product,model_event_membership_product,base.group_user,1,1,1,1
access_event_media_link,event_media_link,model_event_media_link,base.group_user,1,1,1,1
access_event_media_link_public,event_media_link_public,model_event_media_link,base.group_public,1,0,0,0
access_event_media_link_portal,event_media_link_portal,model_event_media_link,base.group_portal,1,0,0,0
access_event_teaching_session,event_teaching_session,model_event_teaching_session,base.group_user,1,1,1,1
access_event_teaching_session_public,event_teaching_session_public,model_event_teaching_session,base.group_public,1,0,0,0
access_event_teaching_session_portal,event_teaching_session_portal,model_event_teaching_session,base.group_portal,1,0,0,0
access_event_media_session,event_media_dession,model_event_media_session,base.group_user,1,1,1,1
access_event_media_session_public,event_media_session_public,model_event_media_session,base.group_public,1,0,0,0
access_event_media_session_portal,event_media_session_portal,model_event_media_session,base.group_portal,1,0,0,0
access_event_teaching_day,event_media_dession,model_event_teaching_day,base.group_user,1,1,1,1
access_event_teaching_day_public,event_teaching_day_public,model_event_teaching_day,base.group_public,1,0,0,0
access_event_teaching_day_portal,event_teaching_day_portal,model_event_teaching_day,base.group_portal,1,0,0,0

+ 2
- 0
views/booking_event.xml View File

@ -78,9 +78,11 @@
<div class="col-12 col-lg-2 o_setting_box"> <div class="col-12 col-lg-2 o_setting_box">
<div class="o_setting_left_pane"> <div class="o_setting_left_pane">
<field name="booking_event"/> <field name="booking_event"/>
<field name="individual_booking_event"/>
</div> </div>
<div class="o_setting_right_pane"> <div class="o_setting_right_pane">
<label for="booking_event"/> <label for="booking_event"/>
<label for="individual_booking_event"/>
</div> </div>
</div> </div>


+ 4
- 2
views/event.xml View File

@ -171,11 +171,13 @@
</group> </group>
</page> </page>
<page string="Media sessions" name="Media sessions">
<page string="Media records" name="Media records">
<group style="width:100%%"> <group style="width:100%%">
<field name="media_session_ids">
<field name="teaching_html_content_records"/>
<field name="teaching_day_ids">
<tree> <tree>
<field name="sequence" widget="handle"/> <field name="sequence" widget="handle"/>
<field name="day_teaching"/>
<field name="description"/> <field name="description"/>


+ 9
- 1
views/event_templates_list.xml View File

@ -110,6 +110,14 @@
</template> </template>
<template id="kalachakra.events_list" inherit_id="website_event.events_list"> <template id="kalachakra.events_list" inherit_id="website_event.events_list">
<xpath expr="//div[@class='o_wevent_event_date position-absolute bg-white shadow-sm text-dark']" position="replace">
<t t-if="not event.individual_booking_event">
<div class="o_wevent_event_date position-absolute bg-white shadow-sm text-dark">
<span t-field="event.with_context(tz=event.date_tz).date_begin" t-options="{'format': 'LLL'}" class="o_wevent_event_month"/>
<span t-field="event.with_context(tz=event.date_tz).date_begin" t-options="{'format': 'dd'}" class="o_wevent_event_day"/>
</div>
</t>
</xpath>
<xpath expr="//h5[1]" position="replace"> <xpath expr="//h5[1]" position="replace">
<h5 t-attf-class="card-title mt-2 mb-0 #{(not event.website_published) and 'text-danger'}"> <h5 t-attf-class="card-title mt-2 mb-0 #{(not event.website_published) and 'text-danger'}">
<span t-field="event.name" itemprop="name"/> <span t-field="event.name" itemprop="name"/>
@ -118,7 +126,7 @@
</xpath> </xpath>
<xpath expr="//time[@itemprop='startDate']" position="replace"> <xpath expr="//time[@itemprop='startDate']" position="replace">
<t t-if="event.booking_event">
<t t-if="event.booking_event and not event.individual_booking_event">
<time itemprop="startDate" t-att-datetime="event.date_begin"> <time itemprop="startDate" t-att-datetime="event.date_begin">
<span t-field="event.with_context(tz=event.date_tz).date_begin" t-options="{'date_only': 'true','format': 'EEEE'}"/> <span t-field="event.with_context(tz=event.date_tz).date_begin" t-options="{'date_only': 'true','format': 'EEEE'}"/>
<span t-field="event.with_context(tz=event.date_tz).date_begin" t-options="{'date_only': 'true','format': 'long'}"/> <span t-field="event.with_context(tz=event.date_tz).date_begin" t-options="{'date_only': 'true','format': 'long'}"/>


+ 65
- 22
views/event_templates_page_registration.xml View File

@ -49,33 +49,66 @@
<template id="kalachakra.event_description_full" inherit_id="website_event.event_description_full"> <template id="kalachakra.event_description_full" inherit_id="website_event.event_description_full">
<xpath expr="//span[@itemprop='description']" position="before"> <xpath expr="//span[@itemprop='description']" position="before">
<t t-if="event.media_session_ids">
<h6>Media sessions recording :</h6>
<t t-foreach="event.media_session_ids.sorted(key=lambda r: r.sequence)" t-as="media_session">
<h6 t-esc="media_session.description"></h6>
<t t-if="media_session.media_link_ids">
<h6>Media sessions recording :</h6>
<t t-if="event.teaching_day_ids">
<t t-foreach="event.teaching_day_ids.sorted(key=lambda r: r.sequence)" t-as="t_day">
<t t-if="t_day.teaching_session_ids">
<table class="table" style="font-size: smaller;"> <table class="table" style="font-size: smaller;">
<tr> <tr>
<th>date</th>
<th>description</th>
<th>start time</th>
<th style="width: 10%;"> FR link</th>
<th style="width: 10%;"> EN link</th>
<th>format</th>
<th>duration</th>
<td colspan="3"><span t-esc="t_day.day_teaching"/></td>
<td colspan="3"><span t-esc="t_day.day_teaching"/></td>
</tr> </tr>
<t t-foreach="media_session.media_link_ids.sorted(key=lambda r: r.date_recording)" t-as="media">
<tr>
<td>Session</td>
<td colspan="2">En français</td>
<td colspan="2">In english</td>
<td>Session</td>
</tr>
<tr>
<td></td>
<td>Audio</td>
<td>Video</td>
<td>Audio</td>
<td>Video</td>
<td></td>
</tr>
<t t-foreach="t_day.teaching_session_ids" t-as="media">
<tr> <tr>
<td ><span t-esc="media.date_recording" /></td>
<td><span t-esc="media.description" /></td>
<td><span t-esc="media.start_time_recording" /></td>
<td><a t-attf-href="#{media.link_fr}"><span>FR</span></a></td>
<td><a t-attf-href="#{media.link_fr}"><span>EN</span></a></td>
<td><span t-esc="media.format_recording" /></td>
<td><span t-esc="media.duration" /></td>
<td><span t-esc="media.description_fr" /></td>
<t t-if="media.link_audio_fr">
<td><a t-attf-href="#{media.link_audio_fr}"><span>Audio FR</span></a></td>
</t>
<t t-if="not media.link_audio_fr">
<td>
</td>
</t>
<t t-if="media.link_video_fr">
<td><a t-attf-href="#{media.link_video_fr}"><span>Video FR</span></a></td>
</t>
<t t-if="not media.link_video_fr">
<td>
</td>
</t>
<t t-if="media.link_audio_en">
<td><a t-attf-href="#{media.link_audio_en}"><span>Audio EN</span></a></td>
</t>
<t t-if="not media.link_audio_en">
<td>
</td>
</t>
<t t-if="media.link_video_en">
<td><a t-attf-href="#{media.link_video_en}"><span>Video EN</span></a></td>
</t>
<t t-if="not media.link_video_en">
<td>
</td>
</t>
<td><span t-esc="media.description_en" /></td>
</tr> </tr>
</t> </t>
@ -83,8 +116,14 @@
</t> </t>
<br></br> <br></br>
</t> </t>
</t> </t>
<t t-if="event.teaching_html_content_records">
<div>
<t t-raw="event.teaching_html_content_records"/>
</div>
</t>
@ -103,7 +142,9 @@
<xpath expr="//div[3][@class='o_wevent_sidebar_block']" position="replace"> <xpath expr="//div[3][@class='o_wevent_sidebar_block']" position="replace">
</xpath> </xpath>
<xpath expr="//div[1][@class='o_wevent_sidebar_block']" position="replace"> <xpath expr="//div[1][@class='o_wevent_sidebar_block']" position="replace">
<div class="o_wevent_sidebar_block_kala"> <div class="o_wevent_sidebar_block_kala">
<t t-if="not event.individual_booking_event">
<span class="o_wevent_sidebar_title kala_evt1">Date &amp; Time</span> <span class="o_wevent_sidebar_title kala_evt1">Date &amp; Time</span>
<div class="d-flex"> <div class="d-flex">
<span t-field="event.with_context(tz=event.date_tz).date_begin" class="my-1 mr-1 kala_evt1" t-options="{'date_only': 'true', 'format': 'EEEE'}"/> <span t-field="event.with_context(tz=event.date_tz).date_begin" class="my-1 mr-1 kala_evt1" t-options="{'date_only': 'true', 'format': 'EEEE'}"/>
@ -134,7 +175,9 @@
<a t-att-href="google_url" class="dropdown-item" target="_blank">Google</a> <a t-att-href="google_url" class="dropdown-item" target="_blank">Google</a>
</div> </div>
</div>--> </div>-->
</t>
</div> </div>
</xpath> </xpath>
<xpath expr="//div[2][@class='o_wevent_sidebar_block']" position="replace"> <xpath expr="//div[2][@class='o_wevent_sidebar_block']" position="replace">
<div t-if="event.address_id and not event.online_only" class="o_wevent_sidebar_block_kala"> <div t-if="event.address_id and not event.online_only" class="o_wevent_sidebar_block_kala">


+ 28
- 15
views/media.xml View File

@ -1,35 +1,48 @@
<odoo> <odoo>
<record model="ir.ui.view" id="media_link_list">
<field name="name">media_link list</field>
<field name="model">event.media.link</field>
<record model="ir.ui.view" id="teaching_link_list">
<field name="name">teaching_session list</field>
<field name="model">event.teaching.session</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree editable="bottom"> <tree editable="bottom">
<field name="date_recording"/>
<field name="start_time_recording" widget="float_time"/>
<!-- <field name="language"/> -->
<field name="description"/>
<field name="link_fr"/>
<field name="link_en"/>
<field name="duration" widget="float_time"/>
<field name="format_recording"/>
<field name="description_fr"/>
<field name="description_en"/>
<field name="link_audio_fr"/>
<field name="link_audio_en"/>
<field name="link_video_fr"/>
<field name="link_video_en"/>
<field name="duration" widget="float_time"/>
</tree> </tree>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="media_session_form">
<field name="name">media_session form</field>
<field name="model">event.media.session</field>
<record model="ir.ui.view" id="teaching_day_form">
<field name="name">teaching_day form</field>
<field name="model">event.teaching.day</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form> <form>
<sheet> <sheet>
<group> <group>
<field name="day_teaching"/>
<field name="description"/> <field name="description"/>
<field name="media_link_ids"/>
<field name="teaching_session_ids"/>
</group> </group>
</sheet> </sheet>
</form> </form>
</field> </field>
</record> </record>
<record model="ir.ui.view" id="teaching_day_list">
<field name="name">teaching_day list</field>
<field name="model">event.teaching.day</field>
<field name="arch" type="xml">
<tree>
<field name="day_teaching"/>
<field name="description"/>
</tree>
</field>
</record>
</odoo> </odoo>

Loading…
Cancel
Save