[WIP] website_event_track
bzr revid: chm@openerp.com-20131127092223-kiafrdc62is1dher
This commit is contained in:
parent
183c75a3c7
commit
b397aee6dd
|
@ -221,7 +221,7 @@
|
|||
</t>
|
||||
</template>
|
||||
|
||||
<template id="event_description_full">
|
||||
<template id="event_details">
|
||||
<t t-call="website_event.layout">
|
||||
<div class="container">
|
||||
<h1 class="text-center" t-field="event.name"></h1>
|
||||
|
@ -235,135 +235,140 @@
|
|||
<span t-field="event.country_id"/>
|
||||
</h4>
|
||||
<div class="row mt32 mb32">
|
||||
<div class="col-md-8">
|
||||
<form t-action="/event/add_cart?event_id=#{ event.id }" method="post" t-if="event.event_ticket_ids">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ticket Type</th>
|
||||
<th style="min-width: 100px">Sales End</th>
|
||||
<th style="min-width: 100px">Price</th>
|
||||
<th></th>
|
||||
<th>Quantity</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr t-foreach="event.event_ticket_ids" t-as="ticket">
|
||||
<td>
|
||||
<div t-field="ticket.name"/>
|
||||
<div><small t-field="ticket.product_id.description_sale"/></div>
|
||||
</td>
|
||||
<td><span t-field="ticket.deadline"/></td>
|
||||
<td><span t-field="ticket.price"/></td>
|
||||
<td>
|
||||
<span t-if="ticket.register_max and ((ticket.register_current or 0)*100 / ticket.register_max)>75" class="text-muted">
|
||||
<t t-esc="ticket.register_max - ticket.register_current"/> <span>left</span>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<select t-if="ticket.register_avail" t-attf-name="ticket-#{ ticket.id }" class="form-control">
|
||||
<t t-foreach="range(0, ticket.register_avail > 9 and 10 or ticket.register_avail+1 )" t-as="nb"><option t-esc="nb"/></t>
|
||||
</select>
|
||||
<span t-if="not ticket.register_avail">Sold Out</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<button type="submit" class="btn btn-primary btn-lg pull-right" t-if="event.register_avail">Order Now</button>
|
||||
<div class="clearfix"/>
|
||||
<hr/>
|
||||
</form>
|
||||
<div t-field="event.description"></div>
|
||||
<div class="clearfix"/>
|
||||
<ul class="media-list" id="comment">
|
||||
<li t-foreach="event.website_message_ids" t-as="comment" class="media">
|
||||
<div class="media-body">
|
||||
<t t-call="website.publish_management">
|
||||
<t t-set="object" t-value="comment"/>
|
||||
<t t-set="publish_edit" t-value="True"/>
|
||||
<t t-set="publish_controller">/event/publish</t>
|
||||
</t>
|
||||
<t t-raw="comment.body"/>
|
||||
<small class="pull-right muted text-right">
|
||||
<div t-field="comment.author_id"/>
|
||||
<div t-field="comment.date"/>
|
||||
</small>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<t t-raw="0"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="event_description_full">
|
||||
<t t-call="website_event.event_details">
|
||||
<div class="col-md-8">
|
||||
<form t-action="/event/add_cart?event_id=#{ event.id }" method="post" t-if="event.event_ticket_ids">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ticket Type</th>
|
||||
<th style="min-width: 100px">Sales End</th>
|
||||
<th style="min-width: 100px">Price</th>
|
||||
<th></th>
|
||||
<th>Quantity</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr t-foreach="event.event_ticket_ids" t-as="ticket">
|
||||
<td>
|
||||
<div t-field="ticket.name"/>
|
||||
<div><small t-field="ticket.product_id.description_sale"/></div>
|
||||
</td>
|
||||
<td><span t-field="ticket.deadline"/></td>
|
||||
<td><span t-field="ticket.price"/></td>
|
||||
<td>
|
||||
<span t-if="ticket.register_max and ((ticket.register_current or 0)*100 / ticket.register_max)>75" class="text-muted">
|
||||
<t t-esc="ticket.register_max - ticket.register_current"/> <span>left</span>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<select t-if="ticket.register_avail" t-attf-name="ticket-#{ ticket.id }" class="form-control">
|
||||
<t t-foreach="range(0, ticket.register_avail > 9 and 10 or ticket.register_avail+1 )" t-as="nb"><option t-esc="nb"/></t>
|
||||
</select>
|
||||
<span t-if="not ticket.register_avail">Sold Out</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<button type="submit" class="btn btn-primary btn-lg pull-right" t-if="event.register_avail">Order Now</button>
|
||||
<div class="clearfix"/>
|
||||
<hr/>
|
||||
</form>
|
||||
<div t-field="event.description"></div>
|
||||
<div class="clearfix"/>
|
||||
<ul class="media-list" id="comment">
|
||||
<li t-foreach="event.website_message_ids" t-as="comment" class="media">
|
||||
<div class="media-body">
|
||||
<t t-call="website.publish_management">
|
||||
<t t-set="object" t-value="comment"/>
|
||||
<t t-set="publish_edit" t-value="True"/>
|
||||
<t t-set="publish_controller">/event/publish</t>
|
||||
</t>
|
||||
<t t-raw="comment.body"/>
|
||||
<small class="pull-right muted text-right">
|
||||
<div t-field="comment.author_id"/>
|
||||
<div t-field="comment.date"/>
|
||||
</small>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-4 css_noprint">
|
||||
<div class="clearfix"/>
|
||||
|
||||
<div class="panel panel-default" t-if="event.address_id">
|
||||
<div class="panel-heading">
|
||||
<h4>Where</h4>
|
||||
</div>
|
||||
<div class="col-md-4 css_noprint">
|
||||
<div class="clearfix"/>
|
||||
|
||||
<div class="panel panel-default" t-if="event.address_id">
|
||||
<div class="panel-heading">
|
||||
<h4>Where</h4>
|
||||
<div class="panel-body">
|
||||
<a t-att-href="event.google_map_link()" target="_BLANK">
|
||||
<img t-att-src="event.google_map_img()" width="100%%"/>
|
||||
</a>
|
||||
<address class="mt16 mb8" t-field="event.address_id"> <!-- TODO: use widget contact -->
|
||||
<!-- <strong t-field="event.address_id"/>
|
||||
<p t-field="event.address_id"/>
|
||||
<div t-if="event.address_id.phone">
|
||||
<span class="icon-phone"/> <span t-field="event.address_id.phone"/>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<a t-att-href="event.google_map_link()" target="_BLANK">
|
||||
<img t-att-src="event.google_map_img()" width="100%%"/>
|
||||
<div t-if="event.address_id.email">
|
||||
<span class="icon-envelope"/>
|
||||
<a t-att-href="'mailto:'+event.address_id.email">
|
||||
<span t-field="event.address_id.email"/>
|
||||
</a>
|
||||
<address class="mt16 mb8" t-field="event.address_id"> <!-- TODO: use widget contact -->
|
||||
<!-- <strong t-field="event.address_id"/>
|
||||
<p t-field="event.address_id"/>
|
||||
<div t-if="event.address_id.phone">
|
||||
<span class="icon-phone"/> <span t-field="event.address_id.phone"/>
|
||||
</div>
|
||||
<div t-if="event.address_id.email">
|
||||
<span class="icon-envelope"/>
|
||||
<a t-att-href="'mailto:'+event.address_id.email">
|
||||
<span t-field="event.address_id.email"/>
|
||||
</a>
|
||||
</div> -->
|
||||
</address>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</address>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4>When</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<i class="icon-time"></i> <span t-field="event.date_begin"> </span><br/>
|
||||
<i class="icon-time"></i> <span t-field="event.date_end"> </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4>When</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<i class="icon-time"></i> <span t-field="event.date_begin"> </span><br/>
|
||||
<i class="icon-time"></i> <span t-field="event.date_end"> </span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default" t-if="event.organizer_id">
|
||||
<div class="panel-heading">
|
||||
<h4>Organizer</h4>
|
||||
</div>
|
||||
<div class="panel-body" t-field="event.organizer_id"> <!-- TODO: use widget contact -->
|
||||
<!-- <p><strong t-field="event.organizer_id.display_name"/></p>
|
||||
<div t-if="event.phone">
|
||||
<span class="icon-phone"/> <span t-field="event.phone"/>
|
||||
</div>
|
||||
<div t-if="event.email">
|
||||
<i class="icon-envelope"/> <span t-field="event.email"/>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="panel panel-default" t-if="event.organizer_id">
|
||||
<div class="panel-heading">
|
||||
<h4>Organizer</h4>
|
||||
</div>
|
||||
<div class="panel-body" t-field="event.organizer_id"> <!-- TODO: use widget contact -->
|
||||
<!-- <p><strong t-field="event.organizer_id.display_name"/></p>
|
||||
<div t-if="event.phone">
|
||||
<span class="icon-phone"/> <span t-field="event.phone"/>
|
||||
</div>
|
||||
<div t-if="event.email">
|
||||
<i class="icon-envelope"/> <span t-field="event.email"/>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4>Social Stream</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<t t-call="website_mail.follow"><t t-set="object" t-value="event"/></t>
|
||||
<div t-if="event.twitter_hashtag" class="mt16">
|
||||
<p><strong>Participate on Twitter</strong></p>
|
||||
<p class="text-muted">
|
||||
Find out what others are seeing and
|
||||
saying about this event, and join the
|
||||
conversation.
|
||||
</p>
|
||||
<p><strong>Use this tag:
|
||||
<a t-att-href="'http://twitter.com/search?q=#'+event.twitter_hashtag" class="label label-primary">#<span t-field="event.twitter_hashtag"/></a>
|
||||
</strong></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4>Social Stream</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<t t-call="website_mail.follow"><t t-set="object" t-value="event"/></t>
|
||||
<div t-if="event.twitter_hashtag" class="mt16">
|
||||
<p><strong>Participate on Twitter</strong></p>
|
||||
<p class="text-muted">
|
||||
Find out what others are seeing and
|
||||
saying about this event, and join the
|
||||
conversation.
|
||||
</p>
|
||||
<p><strong>Use this tag:
|
||||
<a t-att-href="'http://twitter.com/search?q=#'+event.twitter_hashtag" class="label label-primary">#<span t-field="event.twitter_hashtag"/></a>
|
||||
</strong></p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -13,9 +13,9 @@ Online Events
|
|||
'author': 'OpenERP SA',
|
||||
'depends': ['website_event', 'website_blog'],
|
||||
'data': [
|
||||
'data/event_view.xml',
|
||||
'data/event_data.xml',
|
||||
'views/website_event.xml',
|
||||
'views/event_backend.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'security/event.xml',
|
||||
],
|
||||
|
|
|
@ -23,6 +23,7 @@ from openerp.addons.web import http
|
|||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website.models import website
|
||||
from openerp.addons.website.controllers.main import Website as controllers
|
||||
import re
|
||||
|
||||
controllers = controllers()
|
||||
|
||||
|
@ -38,18 +39,26 @@ class website_event(http.Controller):
|
|||
'/event/<model("event.event"):event>/track/tag/<model("event.track.tag"):tag>'
|
||||
], type='http', auth="public", multilang=True)
|
||||
def event_tracks(self, event, tag=None, **post):
|
||||
searches = {}
|
||||
|
||||
if tag:
|
||||
searches.update(tag=tag.id)
|
||||
track_obj = request.registry.get('event.track')
|
||||
track_ids = track_obj.search(request.cr, request.uid,
|
||||
[("id", "in", [track.id for track in event.track_ids]), ("tag_ids", "=", tag.id)], context=request.context)
|
||||
tracks = track_obj.browse(request.cr, request.uid, track_ids, context=request.context)
|
||||
else:
|
||||
tracks = event.track_ids
|
||||
|
||||
def html2text(html):
|
||||
return re.sub(r'<[^>]+>', "", html)
|
||||
|
||||
values = {
|
||||
'event': event,
|
||||
'tracks': tracks,
|
||||
'tags': event.track_tag_ids,
|
||||
'searches': {}
|
||||
'tags': event.tracks_tag_ids,
|
||||
'searches': searches,
|
||||
'html2text': html2text
|
||||
}
|
||||
return request.website.render("website_event_track.tracks", values)
|
||||
|
||||
|
|
|
@ -1,290 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="act_event_list_tracks" model="ir.actions.act_window">
|
||||
<field name="res_model">event.track</field>
|
||||
<field name="name">Event Tracks</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">kanban,tree,form,calendar,graph</field>
|
||||
<field name="context">{'search_default_event_id': active_id, 'default_event_id': active_id, 'group_by': 'stage_id'}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">
|
||||
Click to add a track.
|
||||
</p><p>
|
||||
Tracks define the agenda of your event. These can be
|
||||
a talk, a round table, a meeting, etc.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- EVENTS/CONFIGURATION/EVENT locations -->
|
||||
<record model="ir.ui.view" id="view_event_location_form">
|
||||
<field name="name">Event Locations</field>
|
||||
<field name="model">event.track.location</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Event Location" version="7.0">
|
||||
<field name="name"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="view_event_location_tree">
|
||||
<field name="name">Event Location</field>
|
||||
<field name="model">event.track.location</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Event Location">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="action_event_track_location">
|
||||
<field name="name">Event Locations</field>
|
||||
<field name="res_model">event.track.location</field>
|
||||
</record>
|
||||
<menuitem name="Event Locations" id="menu_event_track_location"
|
||||
action="action_event_track_location" parent="event.event_configuration"
|
||||
groups="base.group_no_one"/>
|
||||
|
||||
<!-- EVENTS/CONFIGURATION/EVENT Stages -->
|
||||
<record model="ir.ui.view" id="view_event_track_stage_form">
|
||||
<field name="name">Event Stages</field>
|
||||
<field name="model">event.track.stage</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Event Stage" version="7.0">
|
||||
<field name="name"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="view_event_track_stage_tree">
|
||||
<field name="name">Event Stage</field>
|
||||
<field name="model">event.track.stage</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Event Stage">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="action_event_track_stage">
|
||||
<field name="name">Event Stages</field>
|
||||
<field name="res_model">event.track.stage</field>
|
||||
</record>
|
||||
<menuitem name="Event Stages" id="menu_event_track_stage"
|
||||
action="action_event_track_stage" parent="event.event_configuration"
|
||||
groups="base.group_no_one"/>
|
||||
|
||||
<!-- EVENTS/CONFIGURATION/EVENT Tags -->
|
||||
<record model="ir.ui.view" id="view_event_track_tag_form">
|
||||
<field name="name">Track Tags</field>
|
||||
<field name="model">event.track.tag</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Event Track Tag" version="7.0">
|
||||
<field name="name"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="view_event_track_tag_tree">
|
||||
<field name="name">Tracks Tag</field>
|
||||
<field name="model">event.track.tag</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Event Track Tag">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="action_event_track_tag">
|
||||
<field name="name">Track Tags</field>
|
||||
<field name="res_model">event.track.tag</field>
|
||||
</record>
|
||||
<menuitem name="Tracks Tags" id="menu_event_track_tag" action="action_event_track_tag" parent="event.event_configuration" groups="base.group_no_one"/>
|
||||
|
||||
|
||||
<!-- EVENTS/CONFIGURATION/EVENT Tags -->
|
||||
<record model="ir.ui.view" id="view_event_tag_form">
|
||||
<field name="name">Event Tags</field>
|
||||
<field name="model">event.tag</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Event Tag" version="7.0">
|
||||
<field name="name"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="view_event_tag_tree">
|
||||
<field name="name">Event Tag</field>
|
||||
<field name="model">event.tag</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Event Tag">
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="action_event_tag">
|
||||
<field name="name">Event Tags</field>
|
||||
<field name="res_model">event.tag</field>
|
||||
</record>
|
||||
<menuitem name="Event Tags" id="menu_event_tag" action="action_event_tag" parent="event.event_configuration" groups="base.group_no_one"/>
|
||||
|
||||
<!-- Events Organisation/CONFIGURATION/EVENTS -->
|
||||
|
||||
<record model="ir.ui.view" id="view_event_form">
|
||||
<field name="name">Event Tracks</field>
|
||||
<field name="inherit_id" ref="event.view_event_form"/>
|
||||
<field name="model">event.event</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@class='oe_title']" position="inside">
|
||||
<label for="tag_ids" class="oe_edit_only"/>
|
||||
<field name="tag_ids" widget="many2many_tags"/>
|
||||
<div name="event_checkboxes">
|
||||
<field name="show_menu"/>
|
||||
<label for="show_menu"/>
|
||||
<field name="show_tracks"/>
|
||||
<label for="show_tracks"/>
|
||||
<field name="show_track_proposal"/>
|
||||
<label for="show_track_proposal"/>
|
||||
|
||||
</div>
|
||||
</xpath>
|
||||
<xpath expr="//div[@class='oe_right oe_button_box']" position="inside">
|
||||
<button name="%(website_event_track.act_event_list_tracks)d" type="action" string="Tracks"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='organizer_id']" position="after">
|
||||
<field name="track_tag_ids" widget="many2many_tags"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Event Tracks -->
|
||||
|
||||
<record model="ir.ui.view" id="view_event_track_kanban">
|
||||
<field name="name">event.track.kanban</field>
|
||||
<field name="model">event.track</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban>
|
||||
<templates>
|
||||
<field name="color"/>
|
||||
<field name="priority"/>
|
||||
<field name="speaker_ids"/>
|
||||
<t t-name="kanban-box">
|
||||
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
|
||||
<div class="oe_dropdown_toggle oe_dropdown_kanban" groups="base.group_user">
|
||||
<span class="oe_e">í</span>
|
||||
<ul class="oe_dropdown_menu">
|
||||
<li><a href="/event/1/track/2">View Track</a></li>
|
||||
<t t-if="widget.view.is_action_enabled('edit')"><li><a type="edit">Edit Track</a></li></t>
|
||||
<t t-if="widget.view.is_action_enabled('delete')"><li><a type="delete">Delete</a></li></t>
|
||||
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="oe_kanban_content">
|
||||
<h4><field name="name"/></h4>
|
||||
<field name="tag_ids"/>
|
||||
<div t-if="duration"><field name="duration"/> hours</div>
|
||||
<span class="oe_right">
|
||||
<t t-set="priority" t-value="record.priority.raw_value || 0"/>
|
||||
<a type="object" name="set_priority" args="['2']" t-if="priority == 3" title="Normal Priority">
|
||||
<img src="/web/static/src/img/icons/star-off.png" width="16" height="16"/>
|
||||
</a>
|
||||
<a type="object" name="set_priority" args="['3']" t-if="priority lte 2" title="Normal Priority">
|
||||
<img t-attf-src="/web/static/src/img/icons/star-#{priority lte 2 ? 'on' : 'off'}.png" width="16" height="16"/>
|
||||
</a>
|
||||
<a type="object" name="set_priority" args="['1']" title="High Priority">
|
||||
<img t-attf-src="/web/static/src/img/icons/star-#{priority lte 1 ? 'on' : 'off'}.png" width="16" height="16"/>
|
||||
</a>
|
||||
<a type="object" name="set_priority" args="['0']" title="Highest Priority">
|
||||
<img t-attf-src="/web/static/src/img/icons/star-#{priority == 0 ? 'on' : 'off'}.png" width="16" height="16"/>
|
||||
</a>
|
||||
</span>
|
||||
<div t-foreach="record.speaker_ids.raw_value.slice(0,11)" t-as="speaker">
|
||||
<img t-att-src="kanban_image('res.partner', 'image_small', speaker)" t-att-data-speaker_id="speaker" class="oe_kanban_avatar oe_left" width="24px" height="24px"/>
|
||||
</div>
|
||||
<div class="oe_clear"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
<record id="view_event_track_calendar" model="ir.ui.view">
|
||||
<field name="name">event.track.calendar</field>
|
||||
<field name="model">event.track</field>
|
||||
<field eval="2" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<calendar color="type" date_start="date" date_delay="duration" string="Event Tracks">
|
||||
<field name="name"/>
|
||||
<field name="event_id"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="view_event_track_search">
|
||||
<field name="name">Event Tracks</field>
|
||||
<field name="model">event.track</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Event Tracks">
|
||||
<field name="name"/>
|
||||
<field name="event_id"/>
|
||||
<field name="stage_id"/>
|
||||
<field name="speaker_ids"/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Responsible" context="{'group_by': 'user_id'}"/>
|
||||
<filter string="Stage" context="{'group_by':'stage_id'}"/>
|
||||
<filter string="Date" context="{'group_by':'date'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_event_track_form">
|
||||
<field name="name">event.track.form</field>
|
||||
<field name="model">event.track</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Event Track" version="7.0">
|
||||
<header>
|
||||
<field name="stage_id" widget="statusbar"/>
|
||||
</header>
|
||||
<sheet string="Track">
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
<label for="event_id" class="oe_edit_only"/>
|
||||
<h3>
|
||||
<field name="event_id"/>
|
||||
</h3>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="user_id"/>
|
||||
<field name="speaker_ids" widget="many2many_tags"/>
|
||||
<field name="location_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date"/>
|
||||
<field name="duration" widget="float_time"/>
|
||||
<field name="tag_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" widget="mail_followers"/>
|
||||
<field name="message_ids" widget="mail_thread"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_event_track_graph">
|
||||
<field name="name">Tracks Graph</field>
|
||||
<field name="model">event.track</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Tracks" type="bar" orientation="horizontal">
|
||||
<field name="location_id"/>
|
||||
<field name="duration" operator="+"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -105,6 +105,14 @@ class event_track(osv.osv):
|
|||
|
||||
class event_event(osv.osv):
|
||||
_inherit = "event.event"
|
||||
|
||||
def _get_tracks_tag_ids(self, cr, uid, ids, field_names, arg=None, context=None):
|
||||
res = dict.fromkeys(ids, [])
|
||||
for event in self.browse(cr, uid, ids, context=context):
|
||||
for track in event.track_ids:
|
||||
res[event.id] += [tag.id for tag in track.tag_ids]
|
||||
res[event.id] = list(set(res[event.id]))
|
||||
return res
|
||||
_columns = {
|
||||
'tag_ids': fields.many2many('event.tag', string='Tags'),
|
||||
'track_ids': fields.one2many('event.track', 'event_id', 'Tracks'),
|
||||
|
@ -112,7 +120,8 @@ class event_event(osv.osv):
|
|||
'show_track_proposal': fields.boolean('Talks Proposals'),
|
||||
'show_tracks': fields.boolean('Multiple Tracks'),
|
||||
'show_blog': fields.boolean('News'),
|
||||
'track_tag_ids': fields.many2many('event.track.tag', string='Accepted Tracks'),
|
||||
'tracks_tag_ids': fields.function(_get_tracks_tag_ids, type='one2many', relation='event.track.tag', string='Tags of Tracks'),
|
||||
'allowed_track_tag_ids': fields.many2many('event.track.tag', string='Accepted Tracks'),
|
||||
}
|
||||
_defaults = {
|
||||
'show_track_proposal': False,
|
||||
|
@ -128,4 +137,4 @@ class event_event(osv.osv):
|
|||
result.append( (_('News'), '/blog/cat/'+str(event.blog_ig.id)))
|
||||
if event.show_track_proposal:
|
||||
result.append( (_('Talk Proposals'), '/event/%s/track_proposal/' % event.id))
|
||||
return result
|
||||
return result
|
|
@ -36,50 +36,75 @@
|
|||
</template>
|
||||
|
||||
<template id="tracks">
|
||||
<t t-call="website_event.layout">
|
||||
<div class="oe_structure"/>
|
||||
<div class="container">
|
||||
<div class="row mt16">
|
||||
<div class="col-md-3 css_noprint">
|
||||
<t t-call="website_event.event_details">
|
||||
<div class="col-md-3 css_noprint">
|
||||
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li t-att-class="'' if searches.get('tag') else 'active'"><a t-href="/event/#{ event.id }/track/">All</a></li>
|
||||
<t t-foreach="tags" t-as="tag">
|
||||
<li t-att-class="searches.get('tag') == tag.id and 'active' or ''">
|
||||
<a t-href="/event/#{ event.id }/track/tag/#{ tag.id }">
|
||||
<t t-esc="tag.name"/>
|
||||
</a>
|
||||
</li>
|
||||
</t>
|
||||
</ul>
|
||||
|
||||
</div><div class="col-md-9">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li t-att-class="'' if searches.get('tag') else 'active'"><a t-href="/event/#{ event.id }/track/">All</a></li>
|
||||
<t t-foreach="tags" t-as="tag">
|
||||
<li t-att-class="searches.get('tag') == tag.id and 'active' or ''">
|
||||
<a t-href="/event/#{ event.id }/track/tag/#{ tag.id }">
|
||||
<t t-esc="tag.name"/>
|
||||
</a>
|
||||
</li>
|
||||
</t>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
|
||||
<ul class="media-list">
|
||||
<li t-foreach="event.track_ids" t-as="track" class="media">
|
||||
<div class="media-body">
|
||||
<h4 class="media-heading">
|
||||
<a t-href="/event/#{ event.id }/track/#{track.id}"><span t-field="track.name"> </span></a>
|
||||
<!-- <small t-if="not track.website_published" class="label label-danger">not published</small> -->
|
||||
</h4>
|
||||
<p>TODO: NOT Implemented</p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<ul class="media-list">
|
||||
<li t-foreach="tracks" t-as="track" class="media">
|
||||
<div class="media-body">
|
||||
<h4 class="media-heading">
|
||||
<a t-href="/event/#{ event.id }/track/#{track.id}"><span t-field="track.name"> </span></a>
|
||||
<span t-field="track.date"/>
|
||||
<!-- <small t-if="not track.website_published" class="label label-danger">not published</small> -->
|
||||
</h4>
|
||||
<div><span t-esc="html2text(track.description)[0:400]"/>...</div>
|
||||
<div>
|
||||
<t t-foreach="track.tag_ids" t-as="tag_id">
|
||||
<span class="label label-default" t-field="tag_id.name"/>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
|
||||
<template id="track_view">
|
||||
<t t-call="website_event.layout">
|
||||
<div class="oe_structure"/>
|
||||
<div class="container">
|
||||
<h1>Not Implmented</h1>
|
||||
<h2 t-esc="track.name"/>
|
||||
<t t-call="website_event.event_details">
|
||||
<div class="col-md-8">
|
||||
<h2 t-field="track.name"/>
|
||||
<div t-field="track.description"/>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4>Informations</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<t t-foreach="track.tag_ids" t-as="tag_id">
|
||||
<span class="label label-default" t-field="tag_id.name"/>
|
||||
</t>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<b>Responsible</b><br/>
|
||||
<span t-field="track.user_id"/><br/>
|
||||
<b>Speakers</b><br/>
|
||||
<span t-field="track.speaker_ids"/><br/>
|
||||
<b>Date</b><br/>
|
||||
<span t-field="track.date"/><br/>
|
||||
<b>Duration</b><br/>
|
||||
<span t-field="track.duration"/><br/>
|
||||
<b>Location</b><br/>
|
||||
<span t-field="track.location_id"/><br/>
|
||||
<b>Stage</b><br/>
|
||||
<span t-field="track.stage_id"/><br/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
@ -148,7 +173,7 @@
|
|||
<label class="col-md-3 col-sm-4 control-label" for="phone">Tags</label>
|
||||
<div class="col-md-7 col-sm-8">
|
||||
<div class="row">
|
||||
<div class="col-sm-4" t-foreach="event.track_tag_ids" t-as="tag">
|
||||
<div class="col-sm-4" t-foreach="event.allowed_track_tag_ids" t-as="tag">
|
||||
<input type="checkbox" t-att-value="tag.id" name="tags"/>
|
||||
<t t-esc="tag.name"/>
|
||||
</div>
|
||||
|
@ -223,10 +248,11 @@
|
|||
|
||||
|
||||
<template id="event_track_proposal_success">
|
||||
<t t-call="website_event.layout">
|
||||
<div class="container">
|
||||
<t t-call="website_event.event_details">
|
||||
<div class="col-md-8">
|
||||
Thanks
|
||||
</div>
|
||||
<div class="col-md-4"></div>
|
||||
</t>
|
||||
</template>
|
||||
</data>
|
||||
|
|
Loading…
Reference in New Issue