diff --git a/addons/website_event_track/models/event.py b/addons/website_event_track/models/event.py
index b14d076b65e..48cb00f5f7c 100644
--- a/addons/website_event_track/models/event.py
+++ b/addons/website_event_track/models/event.py
@@ -110,21 +110,30 @@ class event_track(osv.osv):
}
def _check_if_track_overlap(self, cr, uid, ids, context=None):
+ check = False
+ string = "This track is overlapping by "
for track in self.browse(cr, uid, ids, context=context):
#if duration and start date enter check overlapping.
if track.date and track.duration:
if track.location_id:
- cr.execute("SELECT (date, (duration || 'minutes')::INTERVAL) OVERLAPS (%s, (%s || 'minutes')::INTERVAL) from event_track where id!= %s and event_id=%s and (location_id=%s or location_id IS Null)", (track.date, track.duration, track.id, track.event_id.id, track.location_id.id or None))
+ cr.execute("SELECT name, (date, (duration || 'minutes')::INTERVAL) OVERLAPS (%s, (%s || 'minutes')::INTERVAL) from event_track where id!= %s and event_id=%s and (location_id=%s or location_id IS Null)", (track.date, track.duration, track.id, track.event_id.id, track.location_id.id or None))
else:
- cr.execute("SELECT (date, (duration || 'minutes')::INTERVAL) OVERLAPS (%s, (%s || 'minutes')::INTERVAL) from event_track where id!= %s and event_id=%s", (track.date, track.duration, track.id, track.event_id.id))
+ cr.execute("SELECT name, (date, (duration || 'minutes')::INTERVAL) OVERLAPS (%s, (%s || 'minutes')::INTERVAL) from event_track where id!= %s and event_id=%s", (track.date, track.duration, track.id, track.event_id.id))
result = cr.fetchall()
+ if not check: check = not not len([res[1] for res in result if res[1]])
for res in result:
- if(res[0]):
- return False
+ if res[1]:string = string + ", " + res[0]
+ if check and context is None: return False
+ elif check and context.get('show_message'): return string
return True
+
+ def _construct_constraint_msg(self, cr, uid, ids, context):
+ if context is None:context = {}
+ context['show_message'] = True
+ return self._check_if_track_overlap(cr, uid, ids, context=context)
_constraints = [
- (_check_if_track_overlap, 'This track is overlapping', ['This track is overlapping']),
+ (_check_if_track_overlap, _construct_constraint_msg,['date, duration, location_id']),
]
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')
diff --git a/addons/website_event_track/views/event_backend.xml b/addons/website_event_track/views/event_backend.xml
index 52fbe9864e1..eb30f1fa423 100644
--- a/addons/website_event_track/views/event_backend.xml
+++ b/addons/website_event_track/views/event_backend.xml
@@ -322,6 +322,7 @@
minutes
+