[IMP] Event Agenda: merge with cleaning
bzr revid: fp@tinyerp.com-20140409172600-bwy97j8kr8dzrgg9
This commit is contained in:
commit
65908c769b
|
@ -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,
|
||||
}
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 & 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>
|
|
@ -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 {}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
});
|
||||
|
||||
});
|
|
@ -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"/>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue