[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'], 'qweb': ['static/src/xml/*.xml'],
'demo': [ 'demo': [
'data/event_demo.xml' 'data/event_demo.xml',
'data/website_event_track_demo.xml'
], ],
'installable': True, 'installable': True,
} }

View File

@ -23,11 +23,14 @@ import openerp
from openerp.addons.web import http from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website.controllers.main import Website as controllers from openerp.addons.website.controllers.main import Website as controllers
import datetime
import re import re
import werkzeug.utils import werkzeug.utils
controllers = controllers() controllers = controllers()
import pytz
from pytz import timezone
class website_event(http.Controller): 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) @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 } values = { 'track': track, 'event': track.event_id, 'main_object': track }
return request.website.render("website_event_track.track_view", values) 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 # TODO: not implemented
@http.route(['/event/<model("event.event"):event>/agenda'], type='http', auth="public", website=True, multilang=True) @http.route(['/event/<model("event.event"):event>/agenda'], type='http', auth="public", website=True, multilang=True)
def event_agenda(self, event, tag=None, **post): 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, 'event': event,
'main_object': event, 'days': days,
} 'days_nbr': days_nbr,
return request.website.render("website_event_track.agenda", values) 'tag': tag
})
@http.route([ @http.route([
'/event/<model("event.event"):event>/track', '/event/<model("event.event"):event>/track',

View File

@ -24,20 +24,6 @@
<record id="event_track_tag4" model="event.track.tag"> <record id="event_track_tag4" model="event.track.tag">
<field name="name">Round Table</field> <field name="name">Round Table</field>
</record> </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 This should be done at the end so that the menu is complete
--> -->
@ -83,68 +69,6 @@
</record> </record>
<!-- Tracks --> <!-- 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"> <record id="base.res_partner_address_16" model="res.partner">
<field name="website">http://facebook.com/openerp</field> <field name="website">http://facebook.com/openerp</field>
<field name="website_description" type="xml"> <field name="website_description" type="xml">
@ -160,35 +84,5 @@
</p> </p>
</field> </field>
</record> </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> </data>
</openerp> </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.tools.translate import _
from openerp.addons.website.models.website import slug from openerp.addons.website.models.website import slug
import pytz
class event_track_tag(osv.osv): class event_track_tag(osv.osv):
_name = "event.track.tag" _name = "event.track.tag"
_order = 'name' _order = 'name'
@ -103,6 +105,7 @@ class event_track(osv.osv):
'stage_id': _default_stage_id, 'stage_id': _default_stage_id,
'priority': '2' 'priority': '2'
} }
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None): 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') stage_obj = self.pool.get('event.track.stage')
result = stage_obj.name_search(cr, uid, '', context=context) result = stage_obj.name_search(cr, uid, '', context=context)
@ -117,6 +120,10 @@ class event_track(osv.osv):
# #
class event_event(osv.osv): class event_event(osv.osv):
_inherit = "event.event" _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): def _get_tracks_tag_ids(self, cr, uid, ids, field_names, arg=None, context=None):
res = dict.fromkeys(ids, []) res = dict.fromkeys(ids, [])
for event in self.browse(cr, uid, ids, context=context): for event in self.browse(cr, uid, ids, context=context):
@ -134,11 +141,13 @@ class event_event(osv.osv):
'show_blog': fields.boolean('News'), 'show_blog': fields.boolean('News'),
'tracks_tag_ids': fields.function(_get_tracks_tag_ids, type='one2many', relation='event.track.tag', string='Tags of 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 Tags', help="List of available tags for track proposals."), '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 = { _defaults = {
'show_track_proposal': False, 'show_track_proposal': False,
'show_tracks': False, 'show_tracks': False,
'show_blog': 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): def _get_new_menu_pages(self, cr, uid, event, context=None):
context = context or {} context = context or {}

View File

@ -52,3 +52,43 @@
background-image: -ms-linear-gradient(top, #C2792A, #DB9141); background-image: -ms-linear-gradient(top, #C2792A, #DB9141);
background-image: -o-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"> <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"/> <button name="%(website_event_track.act_event_list_tracks)d" type="action" string="Tracks"/>
</xpath> </xpath>
<xpath expr="//field[@name='organizer_id']" position="after">
<field name="timezone_of_event" />
</xpath>
<xpath expr="//div[@class='oe_title']" position="inside"> <xpath expr="//div[@class='oe_title']" position="inside">
<label for="tag_ids" class="oe_edit_only"/> <label for="tag_ids" class="oe_edit_only"/>
<field name="tag_ids" widget="many2many_tags"/> <field name="tag_ids" widget="many2many_tags"/>
@ -319,6 +322,7 @@
<field name="duration" class="oe_inline"/> minutes <field name="duration" class="oe_inline"/> minutes
</div> </div>
<field name="tag_ids" widget="many2many_tags"/> <field name="tag_ids" widget="many2many_tags"/>
<field name="color"/>
</group> </group>
</group> </group>
<label for="description" class="oe_edit_only"/> <label for="description" class="oe_edit_only"/>
@ -357,6 +361,7 @@
<record model="ir.actions.act_window" id="action_event_track"> <record model="ir.actions.act_window" id="action_event_track">
<field name="name">Event Tracks</field> <field name="name">Event Tracks</field>
<field name="res_model">event.track</field> <field name="res_model">event.track</field>
<field name="view_mode">tree,form,calendar</field>
</record> </record>
<menuitem name="Event Tracks" id="menu_event_track" action="action_event_track" parent="event.event_configuration" groups="base.group_no_one"/> <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"> <template id="agenda">
<t t-call="website_event.layout"> <t t-call="website_event.layout">
<section data-snippet-id="title"> <t t-set="head">
<h1 class="text-center mb0" t-field="event.name"/> <script type="text/javascript" src="/website_event_track/static/src/js/website_event_track.js"></script>
</section> <t t-raw="head or ''"/>
</t>
<section class="container"> <section class="container">
<div class="row"> <h1 class="text-center" t-field="event.name"/>
<div id="left_column"> <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>
<div class="col-md-12" id="right_column"> </section>
<p class="text-muted fa fa-info-circle"> You can click on cells to highlight your interests.</p> <section class="container" t-foreach="days.keys()" t-as="day">
<h3 class="page-header mt0"> <t t-set="locations" t-value="days[day]['locations']"/>
Monday, 3rd June <t t-set="dates" t-value="days[day]['dates']"/>
<small>23 talks</small> <h3 class="page-header mt0">
</h3> <t t-esc="day"/>
<table class="table table-bordered table-condensed"> <small><t t-esc="days_nbr[day]"/> talks</small>
<tr> </h3>
<th></th> <table id="table_search" class="table table-bordered table-condensed">
<th class="active"><a href="#">Room 1</a></th> <tr>
<th class="active"><a href="#">Room 2</a></th> <th/>
<th class="active"><a href="#">Room 3</a></th> <t t-foreach="locations.keys()" t-as="location">
<th class="active"><a href="#">Room 5</a></th> <th t-if="location" class="active">
<th class="active"><a href="#">Room 6</a></th> <span t-esc="location and location.name or 'Unknown'"/>
</tr> </th>
<tr> </t>
<td class="active"><b>09:00</b><br/><span class="text-muted">10:00</span></td> </tr>
<th colspan="5" class="success text-center"> <tr t-foreach="dates" t-as="dt">
<a href="#">Plenary Session</a><br/> <td class="active">
Room 5 <b t-esc="dt[0].strftime('%H:%M')"/>
</th> </td>
</tr> <t t-if="dt[2]"> <!-- Not a multi location -->
<tr> <t t-foreach="locations" t-as="location">
<td class="active"><b>10:00</b><br/><span class="text-muted">10:30</span></td> <t t-if="location and dt[1].get(location, False)">
<td><a href="#">fkdsj kl jkl sdfjksdfj kl</a></td> <t t-set="track" t-value="dt[1][location][0]"/>
<td rowspan="2" class="danger"><a href="#">Learning Python</a></td> <t t-if="track">
<td></td> <td t-att-rowspan="dt[1][location][3]" t-attf-class="event_color_#{track.color} #{track and 'event_track' or ''}">
<td><a href="#">Learning Pytdon</a></td> <t t-if="track">
<td><a href="#">Boost your Sales Witd OpenERP CRM</a></td> <a t-attf-href="/event/#{ slug(event) }/track/#{ slug(track) }">
</tr> <span t-esc="track and track.name"/>
<tr> </a>
<th class="active">10:30<br/><span class="text-muted">11:00</span></th> <div class="text-muted" t-foreach="track.speaker_ids" t-as="speaker">
<td></td> <small t-esc="speaker.display_name"/>
<td>Boost your Sales Witd OpenERP CRM</td> </div>
<td>Learning Pytdon</td> </t>
<td rowspan="2">fkdsj kl jkl sdfjksdfj kl</td> </td>
</tr> </t>
<tr> <td t-if="not track" t-att-rowspan="dt[1][location][3]" class="event_track"/>
<th class="active">11:00<br/><span class="text-muted">12:00</span></th> </t>
<td class="danger">Learning Pytdon</td> </t>
<td>Boost your Sales Witd OpenERP CRM</td> </t><t t-if="not dt[2]">
<td>Learning Pytdon</td> <t t-set="track" t-value="dt[1][False][0]"/>
<td>this is a test</td> <td t-att-colspan="len(locations)-1" t-attf-class="text-center event_color_#{track.color} #{track and 'event_track' or ''}">
</tr> <a t-attf-href="/event/#{ slug(event) }/track/#{ slug(track) }">
<tr class="active"> <span t-esc="track.name"/><br/>
<td colspan="6" class="text-center text-muted"><span class="fa fa-clock-o"/></td> <div class="text-muted" t-foreach="track.speaker_ids" t-as="speaker">
</tr> <small t-esc="speaker.display_name"/>
<tr> </div>
<th class="active">14:00<br/><span class="text-muted">15:00</span></th> </a>
<td>Boost your Sales Witd OpenERP CRM</td> </td>
<td class="danger">Learning Pytdon</td> </t>
<td></td> </tr>
<td>fkdsj kl jkl sdfjksdfj kl</td> </table>
<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>
</t> </t>
</template> </template>