diff --git a/polln_shift/models/planning.py b/polln_shift/models/planning.py index cec1e0a04..a36140030 100644 --- a/polln_shift/models/planning.py +++ b/polln_shift/models/planning.py @@ -41,6 +41,39 @@ def subscribe(self): return res +class TaskTemplate(models.Model): + _inherit = "beesdoo.shift.template" + + def name_get(self): + res = [] + for rec in self: + name = "%s %s %s (%s-%s)" % ( + rec.name, + rec.planning_id.name, + rec.day_nb_id.name, + float_to_time(rec.start_time), + float_to_time(rec.end_time) + ) + res.append((rec.id, name)) + return res + + @api.model + def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None): + domain = [] + time_domain = [] + FIELDS = ['planning_id', 'name', 'day_nb_id'] + for n in name.split(" "): + if re.search(r"^\(\d{2}:\d{2}-\d{2}:\d{2}\)$", n): + start, end = n[1:-1].split('-') + start, end = time_to_float(start), time_to_float(end) + time_domain = [['&', ('start_time', '=', start), ('end_time', '=', end)]] + elif n.startswith('('): # Ignore missformed hour + continue + else: + domain.append(expression.OR([[(f, 'ilike', n)] for f in FIELDS])) + return self.search(expression.AND(domain + time_domain)).name_get() + + class Task(models.Model): _inherit = "beesdoo.shift.shift"