[IMP] Event Agenda: merge with cleaning

bzr revid: fp@tinyerp.com-20140409172600-bwy97j8kr8dzrgg9
This commit is contained in:
Fabien Pinckaers 2014-04-09 19:26:00 +02:00
commit 65908c769b
9 changed files with 524 additions and 188 deletions

View File

@ -28,7 +28,8 @@ Adds support for:
],
'qweb': ['static/src/xml/*.xml'],
'demo': [
'data/event_demo.xml'
'data/event_demo.xml',
'data/website_event_track_demo.xml'
],
'installable': True,
}

View File

@ -23,11 +23,14 @@ import openerp
from openerp.addons.web import http
from openerp.addons.web.http import request
from openerp.addons.website.controllers.main import Website as controllers
import datetime
import re
import werkzeug.utils
controllers = controllers()
import pytz
from pytz import timezone
class website_event(http.Controller):
@http.route(['/event/<model("event.event"):event>/track/<model("event.track"):track>'], type='http', auth="public", website=True, multilang=True)
@ -37,14 +40,65 @@ class website_event(http.Controller):
values = { 'track': track, 'event': track.event_id, 'main_object': track }
return request.website.render("website_event_track.track_view", values)
def _prepare_calendar(self, event, event_track_ids):
local_tz = pytz.timezone(event.timezone_of_event or 'UTC')
locations = {} # { location: [track, start_date, end_date, rowspan]}
dates = [] # [ (date, {}) ]
for track in event_track_ids:
locations.setdefault(track.location_id or False, [])
forcetr = True
for track in event_track_ids:
start_date = (datetime.datetime.strptime(track.date, '%Y-%m-%d %H:%M:%S')).replace(tzinfo=pytz.utc).astimezone(local_tz)
end_date = start_date + datetime.timedelta(minutes = (track.duration or 30))
location = track.location_id or False
locations.setdefault(location, [])
# New TR, align all events
if forcetr or (start_date>dates[-1][0]) or not location:
dates.append((start_date, {}, bool(location)))
for loc in locations.keys():
if locations[loc] and (locations[loc][-1][2] > start_date):
locations[loc][-1][3] += 1
elif not locations[loc] or locations[loc][-1][2] < start_date:
locations[loc].append([False, locations[loc] and locations[loc][-1][2] or dates[0][0], start_date, 1])
dates[-1][1][loc] = locations[loc][-1]
forcetr = not bool(location)
# Add event
if locations[location] and locations[location][-1][1] > start_date:
locations[location][-1][3] -= 1
locations[location].append([track, start_date, end_date, 1])
dates[-1][1][location] = locations[location][-1]
return {
'locations': locations,
'dates': dates
}
# TODO: not implemented
@http.route(['/event/<model("event.event"):event>/agenda'], type='http', auth="public", website=True, multilang=True)
def event_agenda(self, event, tag=None, **post):
values = {
comp = lambda x: (x.date, bool(x.location_id))
event.track_ids.sort(lambda x,y: cmp(comp(x), comp(y)))
days = {}
days_nbr = {}
for track in event.track_ids:
if not track.date: continue
days.setdefault(track.date[:10], [])
days[track.date[:10]].append(track)
for d in days:
days_nbr[d] = len(days[d])
days[d] = self._prepare_calendar(event, days[d])
return request.website.render("website_event_track.agenda", {
'event': event,
'main_object': event,
}
return request.website.render("website_event_track.agenda", values)
'days': days,
'days_nbr': days_nbr,
'tag': tag
})
@http.route([
'/event/<model("event.event"):event>/track',

View File

@ -24,20 +24,6 @@
<record id="event_track_tag4" model="event.track.tag">
<field name="name">Round Table</field>
</record>
<record id="event_track_location1" model="event.track.location">
<field name="name">Room 1</field>
</record>
<record id="event_track_location2" model="event.track.location">
<field name="name">Room 2</field>
</record>
<record id="event_track_location3" model="event.track.location">
<field name="name">Room 3</field>
</record>
<record id="event_track_location4" model="event.track.location">
<field name="name">Room 4</field>
</record>
<!--
This should be done at the end so that the menu is complete
-->
@ -83,68 +69,6 @@
</record>
<!-- Tracks -->
<record id="track_1" model="event.track">
<field name="name">A Better Future With OpenERP eCommerce</field>
<field name="event_id" ref="event.event_0"/>
<field name="website_published" eval="True"/>
<field name="duration" eval="60"/>
<field eval="(DateTime.now() + timedelta(days=2)).strftime('%Y-%m-%d 10:00:00')" name="date"/>
<field name="speaker_ids" eval="[(6, 0, [ref('base.res_partner_address_4')])]"/>
<field name="location_id" ref="website_event_track.event_track_location2"/>
<field name="stage_id" ref="website_event_track.event_track_stage3"/>
<field name="tag_ids" eval="[(6, 0, [ref('website_event_track.event_track_tag1')])]"/>
<field name="description" type="xml">
<section data-snippet-id="text-block">
<div class="container">
<div class="row">
<div class="col-md-12">
<p>
Apart from being an enterprise management software, OpenERP is
used nowadays for a great variety of enterprise frontends.
</p><p>
The talk illustrates the impact of OpenERP in areas such as the
company website, online events management, eCommerce, online
recruitments, social media marketing, etc.
</p>
</div>
</div>
</div>
</section>
</field>
</record>
<record id="track_2" model="event.track">
<field name="name">How To Drive Sales With OpenERP CRM</field>
<field name="event_id" ref="event.event_0"/>
<field name="website_published" eval="True"/>
<field name="duration" eval="60"/>
<field name="priority">1</field>
<field eval="(DateTime.now() + timedelta(days=2)).strftime('%Y-%m-%d 11:00:00')" name="date"/>
<field name="speaker_ids" eval="[(6, 0, [ref('base.res_partner_address_13')])]"/>
<field name="location_id" ref="website_event_track.event_track_location2"/>
<field name="stage_id" ref="website_event_track.event_track_stage3"/>
<field name="tag_ids" eval="[(6, 0, [ref('website_event_track.event_track_tag2'), ref('website_event_track.event_track_tag3')])]"/>
<field name="description" type="xml">
<section data-snippet-id="text-block">
<div class="container">
<div class="row">
<div class="col-md-12">
<p>
Apart from being an enterprise management software, OpenERP is
used nowadays for a great variety of enterprise frontends.
</p><p>
The talk illustrates the impact of OpenERP in areas such as the
company website, online events management, eCommerce, online
recruitments, social media marketing, etc.
</p>
</div>
</div>
</div>
</section>
</field>
</record>
<record id="base.res_partner_address_16" model="res.partner">
<field name="website">http://facebook.com/openerp</field>
<field name="website_description" type="xml">
@ -160,35 +84,5 @@
</p>
</field>
</record>
<record id="track_3" model="event.track">
<field name="name">Social Marketing As a Source of Leads</field>
<field name="event_id" ref="event.event_0"/>
<field name="website_published" eval="True"/>
<field name="duration" eval="40"/>
<field name="priority">0</field>
<field eval="(DateTime.now() + timedelta(days=2)).strftime('%Y-%m-%d 14:00:00')" name="date"/>
<field name="speaker_ids" eval="[(6, 0, [ref('base.res_partner_address_16')])]"/>
<field name="location_id" ref="website_event_track.event_track_location1"/>
<field name="stage_id" ref="website_event_track.event_track_stage4"/>
<field name="tag_ids" eval="[(6, 0, [ref('website_event_track.event_track_tag4')])]"/>
<field name="description" type="xml">
<section data-snippet-id="text-block">
<div class="row">
<div class="col-md-12">
<p>
Apart from being an enterprise management software, OpenERP is
used nowadays for a great variety of enterprise frontends.
</p><p>
The talk illustrates the impact of OpenERP in areas such as the
company website, online events management, eCommerce, online
recruitments, social media marketing, etc.
</p>
</div>
</div>
</section>
</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,325 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="event_track_location5" model="event.track.location">
<field name="name">Le Foyer du lac</field>
</record>
<record id="event_track_location6" model="event.track.location">
<field name="name">Theatre</field>
</record>
<record id="event_track_location7" model="event.track.location">
<field name="name">Lauzelle</field>
</record>
<record id="event_track_location8" model="event.track.location">
<field name="name">Foyer Royal</field>
</record>
<record id="event_track_location9" model="event.track.location">
<field name="name">Biereau</field>
</record>
<record id="event_track_location10" model="event.track.location">
<field name="name">Bruyère</field>
</record>
<record id="event_track1" model="event.track">
<field name="name">How to develop a website module.</field>
<field name="website_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"/>
<field name="duration" eval="80"/>
<field eval="[(4, ref('base.res_partner_2')),(4, ref('base.res_partner_3'))]" name="speaker_ids"/>
<field name="color">3</field>
<field name="stage_id" ref="event_track_stage1"/>
</record>
<record id="event_track2" model="event.track">
<field name="name">How to integrate hardware materials with the OpenERP point of sale.</field>
<field name="website_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"/>
<field name="duration" eval="15"/>
<field eval="[(4, ref('base.res_partner_3'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage2"/>
</record>
<record id="event_track3" model="event.track">
<field name="name">How to develop real time apps, the live chat module explained.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_4'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage3"/>
</record>
<record id="event_track4" model="event.track">
<field name="name">How to develop automated tests in the OpenERP web client.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_2'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage4"/>
</record>
<record id="event_track5" model="event.track">
<field name="name">The new way to promote your modules in the Apps platform and OpenERP website.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_4'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage5"/>
</record>
<record id="event_track6" model="event.track">
<field name="name">Detailed roadmap of accounting new modules and improvements for version 8.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_5'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage2"/>
</record>
<record id="event_track7" model="event.track">
<field name="name">A technical explanation of OpenERP as a CMS and a eCommerce platform for version 8.</field>
<field name="website_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"/>
<field name="duration" eval="50"/>
<field eval="[(4, ref('base.res_partner_6'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage4"/>
</record>
<record id="event_track8" model="event.track">
<field name="name">Discover OpenERP CRM: How to optimize your sales, from leads to sales orders.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field name="color">2</field>
<field eval="[(4, ref('base.res_partner_7'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage3"/>
</record>
<record id="event_track9" model="event.track">
<field name="name">How to use OpenERP for your HR process: recruitment, leaves management, appraisals, expenses, etc.</field>
<field name="website_published" eval="True"/>
<field name="event_id" ref="event.event_0"/>
<field name="user_id" ref="base.user_root"/>
<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_location7"/>
<field name="duration" eval="50"/>
<field name="color">2</field>
<field eval="[(4, ref('base.res_partner_8'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage2"/>
</record>
<record id="event_track10" model="event.track">
<field name="name">Raising qualitive insights with the survey app</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field name="color">5</field>
<field name="stage_id" ref="event_track_stage1"/>
</record>
<record id="event_track11" model="event.track">
<field name="name">Discover OpenERP Point-of-Sale: Your shop ready to use in 30 minutes.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_4'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage2"/>
</record>
<record id="event_track12" model="event.track">
<field name="name">Manage your events with OpenERP, the new training modules.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_2')),(4, ref('base.res_partner_8'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage3"/>
</record>
<record id="event_track13" model="event.track">
<field name="name">Advanced reporting with Google Spreadsheets integration.</field>
<field name="website_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"/>
<field name="duration" eval="15"/>
<field eval="[(4, ref('base.res_partner_9'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage5"/>
</record>
<record id="event_track14" model="event.track">
<field name="name">New Paypal modules (portal, handling, installments).</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_10'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage5"/>
</record>
<record id="event_track15" model="event.track">
<field name="name">OpenERP Mobile for Notes, Meetings and Messages.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_11'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage4"/>
</record>
<record id="event_track16" model="event.track">
<field name="name">OpenERP as your Enterprise Social Network.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_12'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage3"/>
</record>
<record id="event_track17" model="event.track">
<field name="name">The Art of Making an OpenERP Demo.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_10'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage2"/>
</record>
<record id="event_track18" model="event.track">
<field name="name">How to build your marketing strategy for the purpose of generating leads with OpenERP.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field name="color">5</field>
<field eval="[(4, ref('base.res_partner_13'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage4"/>
</record>
<record id="event_track19" model="event.track">
<field name="name">Advanced lead management with OpenERP: tips and tricks from the fields</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field name="color">5</field>
<field eval="[(4, ref('base.res_partner_14'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage1"/>
</record>
<record id="event_track20" model="event.track">
<field name="name">New Certification Program (valid from Oct. 2013).</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_15'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage2"/>
</record>
<record id="event_track21" model="event.track">
<field name="name">Recruiting high skilled talents with OpenERP HR apps</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field name="color">7</field>
<field name="stage_id" ref="event_track_stage2"/>
</record>
<record id="event_track22" model="event.track">
<field name="name">Manage your KPIs (recomended to openERP partners).</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_15'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage1"/>
</record>
<record id="event_track23" model="event.track">
<field name="name">Key Success factors selling OpenERP.</field>
<field name="website_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"/>
<field name="duration" eval="20"/>
<field eval="[(4, ref('base.res_partner_16'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage3"/>
</record>
<record id="event_track24" model="event.track">
<field name="name">Merge proposals review, code sprint (entire day).</field>
<field name="website_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"/>
<field name="duration" eval="80"/>
<field eval="[(4, ref('base.res_partner_17')),(4, ref('base.res_partner_18'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage2"/>
</record>
<record id="event_track25" model="event.track">
<field name="name">Merge proposals review, code sprint (entire afternoon)</field>
<field name="website_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"/>
<field name="duration" eval="170"/>
<field eval="[(4, ref('base.res_partner_17')),(4, ref('base.res_partner_18'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage4"/>
</record>
<record id="event_track27" model="event.track">
<field name="name">OpenERP in 2014</field>
<field name="website_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="60"/>
<field eval="[(4, ref('base.res_partner_1'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage2"/>
<field name="color">3</field>
</record>
<record id="event_track28" model="event.track">
<field name="name">OpenERP Status &amp; Strategy 2014</field>
<field name="website_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="30"/>
<field eval="[(4, ref('base.res_partner_2'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage4"/>
</record>
<record id="event_track29" model="event.track">
<field name="name">The new marketing strategy.</field>
<field name="website_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="15"/>
<field eval="[(4, ref('base.res_partner_19'))]" name="speaker_ids"/>
<field name="stage_id" ref="event_track_stage1"/>
<field name="color">6</field>
</record>
<record id="event_track30" model="event.track">
<field name="name">Morning break</field>
<field name="website_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="15"/>
<field name="stage_id" ref="event_track_stage2"/>
</record>
<record id="event_track31" model="event.track">
<field name="name">Lunch</field>
<field name="website_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="60"/>
<field name="stage_id" ref="event_track_stage2"/>
</record>
</data>
</openerp>

View File

@ -23,6 +23,8 @@ from openerp.osv import fields, osv
from openerp.tools.translate import _
from openerp.addons.website.models.website import slug
import pytz
class event_track_tag(osv.osv):
_name = "event.track.tag"
_order = 'name'
@ -103,6 +105,7 @@ class event_track(osv.osv):
'stage_id': _default_stage_id,
'priority': '2'
}
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
stage_obj = self.pool.get('event.track.stage')
result = stage_obj.name_search(cr, uid, '', context=context)
@ -117,6 +120,10 @@ class event_track(osv.osv):
#
class event_event(osv.osv):
_inherit = "event.event"
def _tz_get(self,cr,uid, context=None):
# put POSIX 'Etc/*' entries at the end to avoid confusing users - see bug 1086728
return [(tz,tz) for tz in sorted(pytz.all_timezones, key=lambda tz: tz if not tz.startswith('Etc/') else '_')]
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):
@ -134,11 +141,13 @@ class event_event(osv.osv):
'show_blog': fields.boolean('News'),
'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 Tags', help="List of available tags for track proposals."),
'timezone_of_event': fields.selection(_tz_get, 'Event Timezone', size=64),
}
_defaults = {
'show_track_proposal': False,
'show_tracks': False,
'show_blog': False,
'timezone_of_event':lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).tz,
}
def _get_new_menu_pages(self, cr, uid, event, context=None):
context = context or {}

View File

@ -52,3 +52,43 @@
background-image: -ms-linear-gradient(top, #C2792A, #DB9141);
background-image: -o-linear-gradient(top, #C2792A, #DB9141);
}
.event_color_0 {
background-color: white;
color: #5a5a5a;
}
.event_color_1 {
background-color: #cccccc;
color: #424242;
}
.event_color_2 {
background-color: #ffc7c7;
color: #7a3737;
}
.event_color_3 {
background-color: #fff1c7;
color: #756832;
}
.event_color_4 {
background-color: #e3ffc7;
color: #5d6937;
}
.event_color_5 {
background-color: #c7ffd5;
color: #1a7759;
}
.event_color_6 {
background-color: #c7ffff;
color: #1a5d83;
}
.event_color_7 {
background-color: #c7d5ff;
color: #3b3e75;
}
.event_color_8 {
background-color: #e3c7ff;
color: #4c3668;
}
.event_color_9 {
background-color: #ffc7f1;
color: #6d2c70;
}

View File

@ -0,0 +1,24 @@
$(document).ready(function() {
jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
return function( elem ) {
return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
};
});
$("#event_track_search").bind('keyup', function(e){
var change_text = $(this).val();
$('.event_track').removeClass('invisible');
$("#search_summary").removeClass('invisible');
if (change_text) {
$("#search_number").text($(".event_track:Contains("+change_text+")").length);
$(".event_track:not(:Contains("+change_text+"))").addClass('invisible');
} else {
$("#search_number").text(30);
}
event.preventDefault();
});
});

View File

@ -162,6 +162,9 @@
<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="timezone_of_event" />
</xpath>
<xpath expr="//div[@class='oe_title']" position="inside">
<label for="tag_ids" class="oe_edit_only"/>
<field name="tag_ids" widget="many2many_tags"/>
@ -319,6 +322,7 @@
<field name="duration" class="oe_inline"/> minutes
</div>
<field name="tag_ids" widget="many2many_tags"/>
<field name="color"/>
</group>
</group>
<label for="description" class="oe_edit_only"/>
@ -357,6 +361,7 @@
<record model="ir.actions.act_window" id="action_event_track">
<field name="name">Event Tracks</field>
<field name="res_model">event.track</field>
<field name="view_mode">tree,form,calendar</field>
</record>
<menuitem name="Event Tracks" id="menu_event_track" action="action_event_track" parent="event.event_configuration" groups="base.group_no_one"/>

View File

@ -42,85 +42,69 @@
<template id="agenda">
<t t-call="website_event.layout">
<section data-snippet-id="title">
<h1 class="text-center mb0" t-field="event.name"/>
</section>
<t t-set="head">
<script type="text/javascript" src="/website_event_track/static/src/js/website_event_track.js"></script>
<t t-raw="head or ''"/>
</t>
<section class="container">
<div class="row">
<div id="left_column">
<h1 class="text-center" t-field="event.name"/>
<div class="form-inline pull-right">
<label class="invisible text-muted" id="search_summary"><span id="search_number">0</span> Found </label>
<input type="text" class="form-control" placeholder="Filter Tracks..." id="event_track_search"/>
</div>
<div class="col-md-12" id="right_column">
<p class="text-muted fa fa-info-circle"> You can click on cells to highlight your interests.</p>
<h3 class="page-header mt0">
Monday, 3rd June
<small>23 talks</small>
</h3>
<table class="table table-bordered table-condensed">
<tr>
<th></th>
<th class="active"><a href="#">Room 1</a></th>
<th class="active"><a href="#">Room 2</a></th>
<th class="active"><a href="#">Room 3</a></th>
<th class="active"><a href="#">Room 5</a></th>
<th class="active"><a href="#">Room 6</a></th>
</tr>
<tr>
<td class="active"><b>09:00</b><br/><span class="text-muted">10:00</span></td>
<th colspan="5" class="success text-center">
<a href="#">Plenary Session</a><br/>
Room 5
</th>
</tr>
<tr>
<td class="active"><b>10:00</b><br/><span class="text-muted">10:30</span></td>
<td><a href="#">fkdsj kl jkl sdfjksdfj kl</a></td>
<td rowspan="2" class="danger"><a href="#">Learning Python</a></td>
<td></td>
<td><a href="#">Learning Pytdon</a></td>
<td><a href="#">Boost your Sales Witd OpenERP CRM</a></td>
</tr>
<tr>
<th class="active">10:30<br/><span class="text-muted">11:00</span></th>
<td></td>
<td>Boost your Sales Witd OpenERP CRM</td>
<td>Learning Pytdon</td>
<td rowspan="2">fkdsj kl jkl sdfjksdfj kl</td>
</tr>
<tr>
<th class="active">11:00<br/><span class="text-muted">12:00</span></th>
<td class="danger">Learning Pytdon</td>
<td>Boost your Sales Witd OpenERP CRM</td>
<td>Learning Pytdon</td>
<td>this is a test</td>
</tr>
<tr class="active">
<td colspan="6" class="text-center text-muted"><span class="fa fa-clock-o"/></td>
</tr>
<tr>
<th class="active">14:00<br/><span class="text-muted">15:00</span></th>
<td>Boost your Sales Witd OpenERP CRM</td>
<td class="danger">Learning Pytdon</td>
<td></td>
<td>fkdsj kl jkl sdfjksdfj kl</td>
<td>fkdsj kl jkl sdfjksdfj kl</td>
</tr><tr>
<td class="active"><b>10:00</b><br/><span class="text-muted">10:30</span></td>
<td>fkdsj kl jkl sdfjksdfj kl</td>
<td rowspan="2" class="danger">Learning Python</td>
<td></td>
<td>Learning Pytdon</td>
<td>Boost your Sales Witd OpenERP CRM</td>
</tr>
<tr>
<th class="active">10:30<br/><span class="text-muted">11:00</span></th>
<td></td>
<td>Boost your Sales Witd OpenERP CRM</td>
<td>Learning Pytdon</td>
<td rowspan="2">fkdsj kl jkl sdfjksdfj kl</td>
</tr>
</table>
</div>
</div>
</section>
<section class="container" t-foreach="days.keys()" t-as="day">
<t t-set="locations" t-value="days[day]['locations']"/>
<t t-set="dates" t-value="days[day]['dates']"/>
<h3 class="page-header mt0">
<t t-esc="day"/>
<small><t t-esc="days_nbr[day]"/> talks</small>
</h3>
<table id="table_search" class="table table-bordered table-condensed">
<tr>
<th/>
<t t-foreach="locations.keys()" t-as="location">
<th t-if="location" class="active">
<span t-esc="location and location.name or 'Unknown'"/>
</th>
</t>
</tr>
<tr t-foreach="dates" t-as="dt">
<td class="active">
<b t-esc="dt[0].strftime('%H:%M')"/>
</td>
<t t-if="dt[2]"> <!-- Not a multi location -->
<t t-foreach="locations" t-as="location">
<t t-if="location and dt[1].get(location, False)">
<t t-set="track" t-value="dt[1][location][0]"/>
<t t-if="track">
<td t-att-rowspan="dt[1][location][3]" t-attf-class="event_color_#{track.color} #{track and 'event_track' or ''}">
<t t-if="track">
<a t-attf-href="/event/#{ slug(event) }/track/#{ slug(track) }">
<span t-esc="track and track.name"/>
</a>
<div class="text-muted" t-foreach="track.speaker_ids" t-as="speaker">
<small t-esc="speaker.display_name"/>
</div>
</t>
</td>
</t>
<td t-if="not track" t-att-rowspan="dt[1][location][3]" class="event_track"/>
</t>
</t>
</t><t t-if="not dt[2]">
<t t-set="track" t-value="dt[1][False][0]"/>
<td t-att-colspan="len(locations)-1" t-attf-class="text-center event_color_#{track.color} #{track and 'event_track' or ''}">
<a t-attf-href="/event/#{ slug(event) }/track/#{ slug(track) }">
<span t-esc="track.name"/><br/>
<div class="text-muted" t-foreach="track.speaker_ids" t-as="speaker">
<small t-esc="speaker.display_name"/>
</div>
</a>
</td>
</t>
</tr>
</table>
</section>
</t>
</template>