-
+ |
From da0fad79580b6e429c2c033bda7851682e0a39aa Mon Sep 17 00:00:00 2001
From: Paramjit Singh Sahota
Date: Fri, 7 Mar 2014 17:40:07 +0530
Subject: [PATCH 03/56] [IMP] Search box
bzr revid: psa@tinyerp.com-20140307121007-oa5y7jgjtvcirphz
---
addons/website_event_track/views/website_event.xml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/addons/website_event_track/views/website_event.xml b/addons/website_event_track/views/website_event.xml
index e01ad2e7e8e..ef6bc0e1738 100644
--- a/addons/website_event_track/views/website_event.xml
+++ b/addons/website_event_track/views/website_event.xml
@@ -60,7 +60,9 @@
From cda569e3615476b940288f5f75ada168ce76019c Mon Sep 17 00:00:00 2001
From: "Darshan Kalola (OpenERP)"
Date: Fri, 7 Mar 2014 17:56:42 +0530
Subject: [PATCH 04/56] [IMP]added speakers in event_track demo data and
display speaker after event title.
bzr revid: dka@tinyerp.com-20140307122642-j8dfijlsa2jzl962
---
.../website_event_track/controllers/event.py | 8 ++---
.../data/website_event_track_demo.xml | 33 +++++++++++++++++--
.../views/website_event.xml | 15 +++++++--
3 files changed, 47 insertions(+), 9 deletions(-)
diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py
index a62acbf58db..8100e3bef32 100644
--- a/addons/website_event_track/controllers/event.py
+++ b/addons/website_event_track/controllers/event.py
@@ -60,7 +60,7 @@ class website_event(http.Controller):
room_list = []
new_schedule = OrderedDict()
location_object = request.registry.get('event.track.location')
-
+ event_track_obj = request.registry.get('event.track')
for track in fetch_tracks:
room_list.append(track[1])
if not unsort_tracks.has_key(track[2][:8]):
@@ -69,6 +69,7 @@ class website_event(http.Controller):
unsort_tracks[track[2][:8]][track[5]] = []
end_time = datetime.datetime.strptime(track[5], '%Y-%m-%d %H:%M:%S') + datetime.timedelta(minutes = int(track[3]))
new_schedule[track[0]] = {'time': track[5],'end_time': end_time}
+ speaker = event_track_obj.browse(request.cr, request.uid, track[0], context=request.context)['speaker_ids']
unsort_tracks[track[2][:8]][track[5]].append({
'id': track[0],
'title': track[4],
@@ -76,9 +77,9 @@ class website_event(http.Controller):
'location_id': track[1],
'duration':track[3],
'location_id': track[1],
- 'end_time': end_time
+ 'end_time': end_time,
+ 'speaker_ids': [s.name for s in speaker],
})
- print "new schecule",new_schedule
#Get All Locations
room_list = list(set(room_list))
room_list.sort()
@@ -119,7 +120,6 @@ class website_event(http.Controller):
def html2text(html):
return re.sub(r'<[^>]+>', "", html)
-
values = {
'event': event,
'main_object': event,
diff --git a/addons/website_event_track/data/website_event_track_demo.xml b/addons/website_event_track/data/website_event_track_demo.xml
index 88f585dbc60..61c87211a63 100644
--- a/addons/website_event_track/data/website_event_track_demo.xml
+++ b/addons/website_event_track/data/website_event_track_demo.xml
@@ -26,6 +26,7 @@
+
@@ -34,7 +35,8 @@
-
+
+
How to develop real time apps, the live chat module explained.
@@ -42,7 +44,8 @@
-
+
+
How to develop automated tests in the OpenERP web client.
@@ -50,7 +53,8 @@
-
+
+
The new way to promote your modules in the Apps platform and OpenERP website.
@@ -59,6 +63,7 @@
+
Detailed roadmap of accounting new modules and improvements for version 8.
@@ -67,6 +72,7 @@
+
A technical explanation of OpenERP as a CMS and a eCommerce platform for version 8.
@@ -75,6 +81,7 @@
+
Discover OpenERP CRM: How to optimize your sales, from leads to sales orders.
@@ -84,6 +91,7 @@
2
+
How to use OpenERP for your HR process: recruitment, leaves management, appraisals, expenses, etc.
@@ -94,6 +102,7 @@
2
+
Raising qualitive insights with the survey app
@@ -111,6 +120,7 @@
+
Manage your events with OpenERP, the new training modules.
@@ -119,6 +129,7 @@
+
Advanced reporting with Google Spreadsheets integration.
@@ -127,6 +138,7 @@
+
New Paypal modules (portal, handling, installments).
@@ -135,6 +147,7 @@
+
OpenERP Mobile for Notes, Meetings and Messages.
@@ -143,6 +156,7 @@
+
OpenERP as your Enterprise Social Network.
@@ -151,6 +165,7 @@
+
The Art of Making an OpenERP Demo.
@@ -159,6 +174,8 @@
+
+
How to build your marketing strategy for the purpose of generating leads with OpenERP.
@@ -168,6 +185,7 @@
5
+
Advanced lead management with OpenERP: tips and tricks from the fields
@@ -177,6 +195,7 @@
5
+
New Certification Program (valid from Oct. 2013).
@@ -185,6 +204,7 @@
+
Recruiting high skilled talents with OpenERP HR apps
@@ -202,6 +222,7 @@
+
Key Success factors selling OpenERP.
@@ -210,6 +231,7 @@
+
Merge proposals review, code sprint (entire day).
@@ -218,6 +240,7 @@
+
Merge proposals review, code sprint (entire afternoon)
@@ -226,6 +249,7 @@
+
Registration & Coffee - Main entrance + Partners' Village
@@ -240,6 +264,7 @@
+
OpenERP Status & Strategy 2014
@@ -247,6 +272,7 @@
+
The new marketing strategy.
@@ -254,6 +280,7 @@
+
Morning break
diff --git a/addons/website_event_track/views/website_event.xml b/addons/website_event_track/views/website_event.xml
index ef6bc0e1738..cab11ef8818 100644
--- a/addons/website_event_track/views/website_event.xml
+++ b/addons/website_event_track/views/website_event.xml
@@ -80,13 +80,24 @@
- |
+
+
+
+ By
+
+ ,
+
+ |
-
+
+ By
+
+ ,
+
From f9575281f2cd3796ef56a82f9ba9fbfaf8f3a286 Mon Sep 17 00:00:00 2001
From: "Vidhin Mehta (OpenERP)"
Date: Tue, 11 Mar 2014 12:22:52 +0530
Subject: [PATCH 05/56] [IMP]IMplement alog half.(other part in progress.)
bzr revid: vme@tinyerp.com-20140311065252-glvmfxhfqfahs5hf
---
.../website_event_track/controllers/event.py | 62 +++++++++++++++++--
1 file changed, 58 insertions(+), 4 deletions(-)
diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py
index 8100e3bef32..bea73cf330d 100644
--- a/addons/website_event_track/controllers/event.py
+++ b/addons/website_event_track/controllers/event.py
@@ -42,7 +42,57 @@ class website_event(http.Controller):
# TODO: not implemented
@http.route(['/event//agenda/'], type='http', auth="public", website=True, multilang=True)
def event_agenda(self, event, tag=None, **post):
-
+ def algo_for_timetable(new_start_date, new_end_date):
+ global new_schedule
+ if not new_schedule:
+ new_schedule.append([new_start_date, new_end_date])
+ return
+ first_start_date = new_schedule[0][0]
+ first_end_date = new_schedule[0][1]
+ last_start_date = new_schedule[-1][0]
+ last_end_date = new_schedule[-1][1]
+ print "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
+ print "first date",first_start_date,first_end_date
+ print "last date",last_start_date,last_end_date
+ print "new date",new_start_date,new_end_date
+
+ #totally outter
+ if first_start_date > new_start_date and new_end_date > last_end_date:
+ new_schedule.insert(0, [new_start_date, first_start_date])
+ new_schedule.append([last_end_date, new_end_date])
+ return
+
+ #lower outer
+ if first_start_date > new_end_date:
+ new_schedule.insert(0, [new_start_date, new_end_date])
+ new_schedule.insert(1, [new_end_date, first_start_date])
+ return
+
+ # upper outer
+ if new_start_date > last_end_date:
+ new_schedule.append([last_end_date, new_start_date])
+ new_schedule.append([new_start_date, new_end_date])
+ return
+
+ #When inner time
+ if first_start_date < new_start_date and last_end_date > new_end_date:
+ for index,ct in enumerate([new_start_date, new_end_date]):
+ for index2,dt in enumerate(new_schedule):
+ st = dt[0]
+ et = dt[1]
+ if st == ct or et == ct:break
+ if st < ct and et > ct:
+ new_schedule.pop(index2)
+ new_schedule.insert(index2, [ct, et])
+ new_schedule.insert(index2, [st, ct])
+ break
+
+ for x in new_schedule:
+ print "final schedule",x[0],x[1]
+
+
+
+
request.cr.execute('''
Select id, location_id, groupby_datetime, duration, name, date from (
Select id, location_id, to_char(date_trunc('hour',date),'mm-dd-yy hh AM') as
@@ -58,7 +108,8 @@ class website_event(http.Controller):
fetch_tracks = request.cr.fetchall()
unsort_tracks = {}
room_list = []
- new_schedule = OrderedDict()
+ global new_schedule
+ new_schedule = []
location_object = request.registry.get('event.track.location')
event_track_obj = request.registry.get('event.track')
for track in fetch_tracks:
@@ -67,8 +118,11 @@ class website_event(http.Controller):
unsort_tracks[track[2][:8]] = {}
if not unsort_tracks[track[2][:8]].has_key(track[5]):
unsort_tracks[track[2][:8]][track[5]] = []
- end_time = datetime.datetime.strptime(track[5], '%Y-%m-%d %H:%M:%S') + datetime.timedelta(minutes = int(track[3]))
- new_schedule[track[0]] = {'time': track[5],'end_time': end_time}
+
+ start_time = datetime.datetime.strptime(track[5], '%Y-%m-%d %H:%M:%S')
+ end_time = start_time + datetime.timedelta(minutes = int(track[3]))
+ algo_for_timetable(start_time, end_time)
+
speaker = event_track_obj.browse(request.cr, request.uid, track[0], context=request.context)['speaker_ids']
unsort_tracks[track[2][:8]][track[5]].append({
'id': track[0],
From 40d60c0bde6f4f00604cc5d182b72495c363580c Mon Sep 17 00:00:00 2001
From: "Vidhin Mehta (OpenERP)"
Date: Tue, 11 Mar 2014 15:00:58 +0530
Subject: [PATCH 06/56] [IMP]Complete algo for timetable.
bzr revid: vme@tinyerp.com-20140311093058-80ot2az38sg4dc92
---
.../website_event_track/controllers/event.py | 86 ++++++++++---------
1 file changed, 47 insertions(+), 39 deletions(-)
diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py
index bea73cf330d..498f1f7106d 100644
--- a/addons/website_event_track/controllers/event.py
+++ b/addons/website_event_track/controllers/event.py
@@ -43,40 +43,9 @@ class website_event(http.Controller):
@http.route(['/event//agenda/'], type='http', auth="public", website=True, multilang=True)
def event_agenda(self, event, tag=None, **post):
def algo_for_timetable(new_start_date, new_end_date):
- global new_schedule
- if not new_schedule:
- new_schedule.append([new_start_date, new_end_date])
- return
- first_start_date = new_schedule[0][0]
- first_end_date = new_schedule[0][1]
- last_start_date = new_schedule[-1][0]
- last_end_date = new_schedule[-1][1]
- print "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
- print "first date",first_start_date,first_end_date
- print "last date",last_start_date,last_end_date
- print "new date",new_start_date,new_end_date
-
- #totally outter
- if first_start_date > new_start_date and new_end_date > last_end_date:
- new_schedule.insert(0, [new_start_date, first_start_date])
- new_schedule.append([last_end_date, new_end_date])
- return
-
- #lower outer
- if first_start_date > new_end_date:
- new_schedule.insert(0, [new_start_date, new_end_date])
- new_schedule.insert(1, [new_end_date, first_start_date])
- return
-
- # upper outer
- if new_start_date > last_end_date:
- new_schedule.append([last_end_date, new_start_date])
- new_schedule.append([new_start_date, new_end_date])
- return
-
- #When inner time
- if first_start_date < new_start_date and last_end_date > new_end_date:
- for index,ct in enumerate([new_start_date, new_end_date]):
+ def insert_time(time):
+ global new_schedule
+ for index,ct in enumerate(time):
for index2,dt in enumerate(new_schedule):
st = dt[0]
et = dt[1]
@@ -85,13 +54,52 @@ class website_event(http.Controller):
new_schedule.pop(index2)
new_schedule.insert(index2, [ct, et])
new_schedule.insert(index2, [st, ct])
- break
-
- for x in new_schedule:
- print "final schedule",x[0],x[1]
-
+ global new_schedule
+ if not new_schedule:
+ new_schedule.append([new_start_date, new_end_date])
+ return
+ first_start_date = new_schedule[0][0]
+ first_end_date = new_schedule[0][1]
+ last_start_date = new_schedule[-1][0]
+ last_end_date = new_schedule[-1][1]
+ #totally outter
+ if first_start_date >= new_start_date and new_end_date >= last_end_date:
+ if not new_start_date == first_start_date:
+ new_schedule.insert(0, [new_start_date, first_start_date])
+ if not last_end_date == new_end_date:
+ new_schedule.append([last_end_date, new_end_date])
+ return
+ #lower outer
+ if first_start_date >= new_end_date:
+ new_schedule.insert(0, [new_start_date, new_end_date])
+ if not new_end_date == first_start_date:
+ new_schedule.insert(1, [new_end_date, first_start_date])
+ return
+
+ # upper outer
+ if new_start_date >= last_end_date:
+ if not last_end_date == new_start_date:
+ new_schedule.append([last_end_date, new_start_date])
+ new_schedule.append([new_start_date, new_end_date])
+ return
+
+ #When inner time
+ if first_start_date <= new_start_date and last_end_date >= new_end_date:
+ insert_time([new_start_date, new_end_date])
+ return
+
+ #when start date is more and end date in range
+ if first_start_date > new_start_date and last_end_date >= new_end_date:
+ new_schedule.insert(0, [new_start_date, first_start_date])
+ insert_time([new_end_date])
+
+ #when end date is more and start date in range
+ if new_end_date > last_end_date and new_start_date >= first_start_date:
+ insert_time([new_start_date])
+ new_schedule.append([last_end_date, new_end_date])
+ return
request.cr.execute('''
Select id, location_id, groupby_datetime, duration, name, date from (
From 346fd24b1d4efda483c6f2b61fbf417b9f3fa984 Mon Sep 17 00:00:00 2001
From: "Vidhin Mehta (OpenERP)"
Date: Tue, 11 Mar 2014 15:07:53 +0530
Subject: [PATCH 07/56] [IMP]Remove global variable.
bzr revid: vme@tinyerp.com-20140311093753-4y0y8s9ct01hy7y1
---
.../website_event_track/controllers/event.py | 36 +++++++++----------
1 file changed, 17 insertions(+), 19 deletions(-)
diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py
index 498f1f7106d..c86e6769767 100644
--- a/addons/website_event_track/controllers/event.py
+++ b/addons/website_event_track/controllers/event.py
@@ -42,9 +42,8 @@ class website_event(http.Controller):
# TODO: not implemented
@http.route(['/event//agenda/'], type='http', auth="public", website=True, multilang=True)
def event_agenda(self, event, tag=None, **post):
- def algo_for_timetable(new_start_date, new_end_date):
- def insert_time(time):
- global new_schedule
+ def algo_for_timetable(new_start_date, new_end_date, new_schedule):
+ def insert_time(time, new_schedule):
for index,ct in enumerate(time):
for index2,dt in enumerate(new_schedule):
st = dt[0]
@@ -54,13 +53,12 @@ class website_event(http.Controller):
new_schedule.pop(index2)
new_schedule.insert(index2, [ct, et])
new_schedule.insert(index2, [st, ct])
- global new_schedule
+ break
+ return new_schedule
if not new_schedule:
new_schedule.append([new_start_date, new_end_date])
- return
+ return new_schedule
first_start_date = new_schedule[0][0]
- first_end_date = new_schedule[0][1]
- last_start_date = new_schedule[-1][0]
last_end_date = new_schedule[-1][1]
#totally outter
@@ -69,37 +67,38 @@ class website_event(http.Controller):
new_schedule.insert(0, [new_start_date, first_start_date])
if not last_end_date == new_end_date:
new_schedule.append([last_end_date, new_end_date])
- return
+ return new_schedule
#lower outer
if first_start_date >= new_end_date:
new_schedule.insert(0, [new_start_date, new_end_date])
if not new_end_date == first_start_date:
new_schedule.insert(1, [new_end_date, first_start_date])
- return
+ return new_schedule
# upper outer
if new_start_date >= last_end_date:
if not last_end_date == new_start_date:
new_schedule.append([last_end_date, new_start_date])
new_schedule.append([new_start_date, new_end_date])
- return
+ return new_schedule
#When inner time
if first_start_date <= new_start_date and last_end_date >= new_end_date:
- insert_time([new_start_date, new_end_date])
- return
+ new_schedule = insert_time([new_start_date, new_end_date], new_schedule)
+ return new_schedule
#when start date is more and end date in range
if first_start_date > new_start_date and last_end_date >= new_end_date:
- new_schedule.insert(0, [new_start_date, first_start_date])
- insert_time([new_end_date])
+ new_schedule.insert(0, [new_start_date, first_start_date])
+ new_schedule = insert_time([new_end_date], new_schedule)
+ return new_schedule
#when end date is more and start date in range
if new_end_date > last_end_date and new_start_date >= first_start_date:
- insert_time([new_start_date])
+ new_schedule = insert_time([new_start_date], new_schedule)
new_schedule.append([last_end_date, new_end_date])
- return
+ return new_schedule
request.cr.execute('''
Select id, location_id, groupby_datetime, duration, name, date from (
@@ -116,7 +115,6 @@ class website_event(http.Controller):
fetch_tracks = request.cr.fetchall()
unsort_tracks = {}
room_list = []
- global new_schedule
new_schedule = []
location_object = request.registry.get('event.track.location')
event_track_obj = request.registry.get('event.track')
@@ -129,8 +127,8 @@ class website_event(http.Controller):
start_time = datetime.datetime.strptime(track[5], '%Y-%m-%d %H:%M:%S')
end_time = start_time + datetime.timedelta(minutes = int(track[3]))
- algo_for_timetable(start_time, end_time)
-
+ new_schedule = algo_for_timetable(start_time, end_time, new_schedule)
+
speaker = event_track_obj.browse(request.cr, request.uid, track[0], context=request.context)['speaker_ids']
unsort_tracks[track[2][:8]][track[5]].append({
'id': track[0],
From 13c55facde9c4814503fb4bba96c3bdde327bf9d Mon Sep 17 00:00:00 2001
From: "Darshan Kalola (OpenERP)"
Date: Tue, 11 Mar 2014 16:12:23 +0530
Subject: [PATCH 08/56] [IMP]event-track: implement color code for event and
added color in demo data of event_track.
bzr revid: dka@tinyerp.com-20140311104223-whztnya4fwf8i0c9
---
.../website_event_track/controllers/event.py | 10 +++--
.../data/website_event_track_demo.xml | 1 +
.../static/src/css/website_event_track.css | 40 +++++++++++++++++++
.../views/website_event.xml | 12 ++++--
4 files changed, 55 insertions(+), 8 deletions(-)
diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py
index c86e6769767..46bae6c4f1f 100644
--- a/addons/website_event_track/controllers/event.py
+++ b/addons/website_event_track/controllers/event.py
@@ -124,12 +124,13 @@ class website_event(http.Controller):
unsort_tracks[track[2][:8]] = {}
if not unsort_tracks[track[2][:8]].has_key(track[5]):
unsort_tracks[track[2][:8]][track[5]] = []
-
+
start_time = datetime.datetime.strptime(track[5], '%Y-%m-%d %H:%M:%S')
end_time = start_time + datetime.timedelta(minutes = int(track[3]))
new_schedule = algo_for_timetable(start_time, end_time, new_schedule)
-
- speaker = event_track_obj.browse(request.cr, request.uid, track[0], context=request.context)['speaker_ids']
+ event_track = event_track_obj.browse(request.cr, request.uid, track[0], context=request.context)
+ if event_track.color > 9 : color = 0;
+ else: color = event_track.color
unsort_tracks[track[2][:8]][track[5]].append({
'id': track[0],
'title': track[4],
@@ -138,7 +139,8 @@ class website_event(http.Controller):
'duration':track[3],
'location_id': track[1],
'end_time': end_time,
- 'speaker_ids': [s.name for s in speaker],
+ 'speaker_ids': [s.name for s in event_track.speaker_ids],
+ 'color': color,
})
#Get All Locations
room_list = list(set(room_list))
diff --git a/addons/website_event_track/data/website_event_track_demo.xml b/addons/website_event_track/data/website_event_track_demo.xml
index 61c87211a63..b989e833a06 100644
--- a/addons/website_event_track/data/website_event_track_demo.xml
+++ b/addons/website_event_track/data/website_event_track_demo.xml
@@ -27,6 +27,7 @@
+ 3
diff --git a/addons/website_event_track/static/src/css/website_event_track.css b/addons/website_event_track/static/src/css/website_event_track.css
index 7862175ec27..f6c01f8f19e 100644
--- a/addons/website_event_track/static/src/css/website_event_track.css
+++ b/addons/website_event_track/static/src/css/website_event_track.css
@@ -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;
+}
diff --git a/addons/website_event_track/views/website_event.xml b/addons/website_event_track/views/website_event.xml
index cab11ef8818..67ae4ecdc54 100644
--- a/addons/website_event_track/views/website_event.xml
+++ b/addons/website_event_track/views/website_event.xml
@@ -90,8 +90,12 @@
|
-
-
+
+
+ |
+
+
+
By
@@ -101,8 +105,8 @@
-
- |
+ |
+
From 5587ede447bde748cd247a461f348a07f7a66450 Mon Sep 17 00:00:00 2001
From: "Vidhin Mehta (OpenERP)"
Date: Thu, 13 Mar 2014 12:17:37 +0530
Subject: [PATCH 09/56] [IMP]complete algo,template and working well timetable.
bzr revid: vme@tinyerp.com-20140313064737-r49q62owvgaltmuq
---
.../website_event_track/controllers/event.py | 71 +++++++++++++------
.../views/website_event.xml | 62 +++++++++-------
2 files changed, 87 insertions(+), 46 deletions(-)
diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py
index 46bae6c4f1f..2d8f58d9c57 100644
--- a/addons/website_event_track/controllers/event.py
+++ b/addons/website_event_track/controllers/event.py
@@ -115,23 +115,41 @@ class website_event(http.Controller):
fetch_tracks = request.cr.fetchall()
unsort_tracks = {}
room_list = []
- new_schedule = []
+ new_schedule = {}
location_object = request.registry.get('event.track.location')
event_track_obj = request.registry.get('event.track')
+
for track in fetch_tracks:
room_list.append(track[1])
- if not unsort_tracks.has_key(track[2][:8]):
- unsort_tracks[track[2][:8]] = {}
- if not unsort_tracks[track[2][:8]].has_key(track[5]):
- unsort_tracks[track[2][:8]][track[5]] = []
-
+ # make schedule for future
+ if not new_schedule.has_key(track[2][:8]):
+ new_schedule[track[2][:8]] = []
start_time = datetime.datetime.strptime(track[5], '%Y-%m-%d %H:%M:%S')
end_time = start_time + datetime.timedelta(minutes = int(track[3]))
- new_schedule = algo_for_timetable(start_time, end_time, new_schedule)
- event_track = event_track_obj.browse(request.cr, request.uid, track[0], context=request.context)
- if event_track.color > 9 : color = 0;
- else: color = event_track.color
- unsort_tracks[track[2][:8]][track[5]].append({
+ new_schedule[track[2][:8]] = algo_for_timetable(start_time, end_time, new_schedule[track[2][:8]])
+
+
+ for key in new_schedule.keys():
+ unsort_tracks[key] = OrderedDict()
+ for value in new_schedule[key]:
+ unsort_tracks[key][value[0].strftime('%H:%M')+" - "+value[1].strftime('%H:%M')] = []
+
+ for track in fetch_tracks:
+ start_time = datetime.datetime.strptime(track[5], '%Y-%m-%d %H:%M:%S')
+ end_time = start_time + datetime.timedelta(minutes = int(track[3]))
+ secret_key = None
+ row_span = 0
+ for index, value in enumerate(new_schedule[track[2][:8]]):
+ if value[0] <= start_time and value[1] > start_time:
+ keys = unsort_tracks[track[2][:8]].keys()
+ secret_key = keys[index]
+ row_span = index
+ if value[1] == end_time:
+ if not index == row_span:
+ index = index + 1
+ event_tracks = event_track_obj.browse(request.cr, request.uid, track[0], context=request.context)
+ color = 0 if event_tracks.color > 9 else event_tracks.color
+ unsort_tracks[track[2][:8]][secret_key].append({
'id': track[0],
'title': track[4],
'time': track[5],
@@ -139,9 +157,11 @@ class website_event(http.Controller):
'duration':track[3],
'location_id': track[1],
'end_time': end_time,
- 'speaker_ids': [s.name for s in event_track.speaker_ids],
- 'color': color,
+ 'speaker_ids': [s.name for s in event_tracks.speaker_ids],
+ 'row_span': index - row_span,
+ 'color': color
})
+
#Get All Locations
room_list = list(set(room_list))
room_list.sort()
@@ -149,19 +169,30 @@ class website_event(http.Controller):
for room in room_list:
if room:rooms.append([room, location_object.browse(request.cr, openerp.SUPERUSER_ID, room).name])
- sort_track = {}
+ skip_td = {}
for track in unsort_tracks.keys():
- sorted_key = sorted(unsort_tracks[track].keys() ,key=lambda x: (dparser.parse(x)).strftime('%a, %d %b %Y %H:%M:%S'))
- sort_track[track] = OrderedDict()
- for tra in sorted_key:
- sort_track[track][tra] = sorted(unsort_tracks[track][tra], key=lambda x: x['location_id'])
-
+ skip_td[track] = {}
+ key1 = unsort_tracks[track].keys()
+ for tra in unsort_tracks[track].keys():
+ list1 = unsort_tracks[track][tra]
+ unsort_tracks[track][tra] = sorted(list1, key=lambda x: x['location_id'])
+ for i in unsort_tracks[track][tra]:
+ if i['row_span']:
+ skip_time = key1[key1.index(tra)+1: key1.index(tra)+i['row_span']]
+ if not skip_td[track].has_key(i['location_id']):
+ skip_td[track] [i['location_id']] = []
+ skip_td[track] [i['location_id']] = skip_td[track] [i['location_id']] + skip_time
+
+ for skip in skip_td.keys():
+ for loc in skip_td[skip].keys():
+ skip_td[skip][loc] = list(set(skip_td[skip][loc]))
values = {
'event': event,
'main_object': event,
'room_list': rooms,
- 'days': sort_track,
+ 'days': unsort_tracks,
+ 'skip_td': skip_td
}
return request.website.render("website_event_track.agenda", values)
diff --git a/addons/website_event_track/views/website_event.xml b/addons/website_event_track/views/website_event.xml
index 67ae4ecdc54..7011af19482 100644
--- a/addons/website_event_track/views/website_event.xml
+++ b/addons/website_event_track/views/website_event.xml
@@ -66,48 +66,58 @@
+
+
|
|
-
-
+
|
-
-
-
-
-
- By
-
- ,
-
- |
-
-
-
-
+
+
+
+
|
-
-
-
-
- By
-
- ,
-
+
+
+
+
+
+
+ By
+
+ ,
+
+ |
+
+
+
+ |
+
+
+
+
+
+ By
+
+ ,
+
+ |
- |
+
-
+
+
|
From 08823a364083a00df0222e07fe7734f8e787e304 Mon Sep 17 00:00:00 2001
From: "Vidhin Mehta (OpenERP)"
Date: Thu, 13 Mar 2014 14:12:26 +0530
Subject: [PATCH 10/56] [IMP]track can't overlapped now, contraint added,
change in demo data.
bzr revid: vme@tinyerp.com-20140313084226-dx4tkrhi6ju0th8y
---
.../data/website_event_track_demo.xml | 4 ++--
addons/website_event_track/models/event.py | 16 ++++++++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/addons/website_event_track/data/website_event_track_demo.xml b/addons/website_event_track/data/website_event_track_demo.xml
index b989e833a06..c949049489d 100644
--- a/addons/website_event_track/data/website_event_track_demo.xml
+++ b/addons/website_event_track/data/website_event_track_demo.xml
@@ -36,7 +36,7 @@
-
+
@@ -138,7 +138,7 @@
-
+
diff --git a/addons/website_event_track/models/event.py b/addons/website_event_track/models/event.py
index e99318f1ced..f47878ffa4f 100644
--- a/addons/website_event_track/models/event.py
+++ b/addons/website_event_track/models/event.py
@@ -22,6 +22,7 @@
from openerp.osv import fields, osv
from openerp.tools.translate import _
from openerp.addons.website.models.website import slug
+import datetime
class event_track_tag(osv.osv):
_name = "event.track.tag"
@@ -100,6 +101,21 @@ class event_track(osv.osv):
'stage_id': _default_stage_id,
'priority': '2'
}
+ def _check_if_track_overlap(self, cr, uid, ids, context=None):
+ for track in self.browse(cr, uid, ids, context=context):
+ ids_to_compare = self.search(cr, uid, [("id","!=",track.id),('event_id', '=', track.event_id.id),('location_id', '=', track.location_id.id)])
+ start_time = datetime.datetime.strptime(track.date, '%Y-%m-%d %H:%M:%S')
+ end_time = start_time + datetime.timedelta(minutes = track.duration)
+ for com_track in self.browse(cr, uid, ids_to_compare, context=context):
+ com_start_time = datetime.datetime.strptime(com_track.date, '%Y-%m-%d %H:%M:%S')
+ com_end_time = com_start_time + datetime.timedelta(minutes = com_track.duration)
+ if (com_start_time <= start_time and com_end_time > start_time) or (com_start_time < end_time and com_end_time >= end_time):
+ return False
+ return True
+
+ _constraints = [
+ (_check_if_track_overlap, 'This track is overlapping', ['This track is overlapping']),
+ ]
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)
From 8152dff1c1e73d262c3343f7a519cbd952fb1ab0 Mon Sep 17 00:00:00 2001
From: "Vidhin Mehta (OpenERP)"
Date: Thu, 13 Mar 2014 14:54:28 +0530
Subject: [PATCH 11/56] [ADD]comment
bzr revid: vme@tinyerp.com-20140313092428-rvyc6zz8nubfsg3g
---
addons/website_event_track/controllers/event.py | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py
index 2d8f58d9c57..b044b964ed1 100644
--- a/addons/website_event_track/controllers/event.py
+++ b/addons/website_event_track/controllers/event.py
@@ -42,7 +42,10 @@ class website_event(http.Controller):
# TODO: not implemented
@http.route(['/event//agenda/'], type='http', auth="public", website=True, multilang=True)
def event_agenda(self, event, tag=None, **post):
+ #To make timeslot according to given track time
def algo_for_timetable(new_start_date, new_end_date, new_schedule):
+ #If new time in range of start and end time, it make two slot
+ #and remove old element.
def insert_time(time, new_schedule):
for index,ct in enumerate(time):
for index2,dt in enumerate(new_schedule):
@@ -119,21 +122,22 @@ class website_event(http.Controller):
location_object = request.registry.get('event.track.location')
event_track_obj = request.registry.get('event.track')
+ #Make all possible timeslot for each day.
for track in fetch_tracks:
room_list.append(track[1])
- # make schedule for future
if not new_schedule.has_key(track[2][:8]):
new_schedule[track[2][:8]] = []
start_time = datetime.datetime.strptime(track[5], '%Y-%m-%d %H:%M:%S')
end_time = start_time + datetime.timedelta(minutes = int(track[3]))
new_schedule[track[2][:8]] = algo_for_timetable(start_time, end_time, new_schedule[track[2][:8]])
-
+ #Add timeslot as key to track
for key in new_schedule.keys():
unsort_tracks[key] = OrderedDict()
for value in new_schedule[key]:
unsort_tracks[key][value[0].strftime('%H:%M')+" - "+value[1].strftime('%H:%M')] = []
-
+
+ #Add track to its related time slot and day.
for track in fetch_tracks:
start_time = datetime.datetime.strptime(track[5], '%Y-%m-%d %H:%M:%S')
end_time = start_time + datetime.timedelta(minutes = int(track[3]))
@@ -162,15 +166,16 @@ class website_event(http.Controller):
'color': color
})
- #Get All Locations
+ #Get All Locations and make room_list contain unique value.
room_list = list(set(room_list))
room_list.sort()
rooms = []
for room in room_list:
if room:rooms.append([room, location_object.browse(request.cr, openerp.SUPERUSER_ID, room).name])
+ #For rowspan calculate all td which will not display in future.
+ #Sort track according to location(to display under related location).
skip_td = {}
-
for track in unsort_tracks.keys():
skip_td[track] = {}
key1 = unsort_tracks[track].keys()
@@ -184,9 +189,11 @@ class website_event(http.Controller):
skip_td[track] [i['location_id']] = []
skip_td[track] [i['location_id']] = skip_td[track] [i['location_id']] + skip_time
+ #Remove repeated element in list if any.
for skip in skip_td.keys():
for loc in skip_td[skip].keys():
skip_td[skip][loc] = list(set(skip_td[skip][loc]))
+
values = {
'event': event,
'main_object': event,
From 03ca05f6383fa1d0b419276d16c1ac841cd42a45 Mon Sep 17 00:00:00 2001
From: "Vidhin Mehta (OpenERP)"
Date: Thu, 13 Mar 2014 15:45:59 +0530
Subject: [PATCH 12/56] [IMP] start date and end date can't be same, track must
have secret key.
bzr revid: vme@tinyerp.com-20140313101559-q3h08sxbvuy3j7ov
---
addons/website_event_track/controllers/event.py | 2 +-
addons/website_event_track/models/event.py | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py
index b044b964ed1..888ab47f3f9 100644
--- a/addons/website_event_track/controllers/event.py
+++ b/addons/website_event_track/controllers/event.py
@@ -148,7 +148,7 @@ class website_event(http.Controller):
keys = unsort_tracks[track[2][:8]].keys()
secret_key = keys[index]
row_span = index
- if value[1] == end_time:
+ if value[1] == end_time and secret_key:
if not index == row_span:
index = index + 1
event_tracks = event_track_obj.browse(request.cr, request.uid, track[0], context=request.context)
diff --git a/addons/website_event_track/models/event.py b/addons/website_event_track/models/event.py
index c829660fb64..4da6706e186 100644
--- a/addons/website_event_track/models/event.py
+++ b/addons/website_event_track/models/event.py
@@ -107,6 +107,7 @@ class event_track(osv.osv):
ids_to_compare = self.search(cr, uid, [("id","!=",track.id),('event_id', '=', track.event_id.id),('location_id', '=', track.location_id.id)])
start_time = datetime.datetime.strptime(track.date, '%Y-%m-%d %H:%M:%S')
end_time = start_time + datetime.timedelta(minutes = track.duration)
+ if end_time <= start_time:return False
for com_track in self.browse(cr, uid, ids_to_compare, context=context):
com_start_time = datetime.datetime.strptime(com_track.date, '%Y-%m-%d %H:%M:%S')
com_end_time = com_start_time + datetime.timedelta(minutes = com_track.duration)
From 0628fca1fc8dae2cc17d1870da7cd0e79a7712ec Mon Sep 17 00:00:00 2001
From: "Vidhin Mehta (OpenERP)"
Date: Thu, 13 Mar 2014 19:02:24 +0530
Subject: [PATCH 13/56] [IMP]add talks
bzr revid: vme@tinyerp.com-20140313133224-jmzacgnqlxee32y5
---
addons/website_event_track/controllers/event.py | 12 +++++++++---
addons/website_event_track/views/website_event.xml | 2 +-
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py
index 888ab47f3f9..960a0545b2f 100644
--- a/addons/website_event_track/controllers/event.py
+++ b/addons/website_event_track/controllers/event.py
@@ -116,6 +116,12 @@ class website_event(http.Controller):
''',(event.id,))
fetch_tracks = request.cr.fetchall()
+
+ request.cr.execute('''
+ select count(*), date_trunc('day',date) from event_track where event_id = %s group by date_trunc('day',date) order by date_trunc('day',date)
+ ''',(event.id,))
+ talks = request.cr.fetchall()
+
unsort_tracks = {}
room_list = []
new_schedule = {}
@@ -130,7 +136,7 @@ class website_event(http.Controller):
start_time = datetime.datetime.strptime(track[5], '%Y-%m-%d %H:%M:%S')
end_time = start_time + datetime.timedelta(minutes = int(track[3]))
new_schedule[track[2][:8]] = algo_for_timetable(start_time, end_time, new_schedule[track[2][:8]])
-
+
#Add timeslot as key to track
for key in new_schedule.keys():
unsort_tracks[key] = OrderedDict()
@@ -193,13 +199,13 @@ class website_event(http.Controller):
for skip in skip_td.keys():
for loc in skip_td[skip].keys():
skip_td[skip][loc] = list(set(skip_td[skip][loc]))
-
values = {
'event': event,
'main_object': event,
'room_list': rooms,
'days': unsort_tracks,
- 'skip_td': skip_td
+ 'skip_td': skip_td,
+ 'talks':talks
}
return request.website.render("website_event_track.agenda", values)
diff --git a/addons/website_event_track/views/website_event.xml b/addons/website_event_track/views/website_event.xml
index dd38f4fa568..b3f44d7fe91 100644
--- a/addons/website_event_track/views/website_event.xml
+++ b/addons/website_event_track/views/website_event.xml
@@ -59,7 +59,7 @@
|