diff --git a/models/database.py b/models/database.py index b9f64aa9f18016f9d3644b83a88f9b26f0964b26..11c68bf6189750b544c6d007e1d0cca4b1eb689c 100644 --- a/models/database.py +++ b/models/database.py @@ -105,6 +105,12 @@ class ProtocolType(DatabaseModel): return None return candidates[0] + def get_protocols_on_date(self, protocol_date): + return [ + protocol for protocol in self.protocols + if protocol.date == protocol_date + ] + def has_public_view_right(self, user, check_networks=True): return ( self.has_public_anonymous_view_right(check_networks=check_networks) @@ -423,7 +429,12 @@ class Protocol(DatabaseModel): tzinfo=tz.tzlocal()) @staticmethod - def create_new_protocol(protocoltype, date, start_time=None): + def create_new_protocol( + protocoltype, date, start_time=None, allow_duplicate=False): + if not allow_duplicate: + duplicate_candidates = protocoltype.get_protocols_on_date(date) + if duplicate_candidates: + return duplicate_candidates[0] if start_time is None: start_time = protocoltype.usual_time protocol = Protocol( diff --git a/tasks.py b/tasks.py index 50d047684b23ee32a6e22e8cf71414cd8f05d8ba..1d142ed568a01422c8993f226540d1136bd13442 100644 --- a/tasks.py +++ b/tasks.py @@ -492,8 +492,9 @@ def parse_protocol_async_inner(protocol): if len(protocol_tag.values) > 1: new_protocol_time = datetime.strptime( protocol_tag.values[1], "%H:%M") - Protocol.create_new_protocol( - protocol.protocoltype, new_protocol_date, new_protocol_time) + if not protocol.protocoltype.get_protocols_on_date(new_protocol_date): + Protocol.create_new_protocol( + protocol.protocoltype, new_protocol_date, new_protocol_time) # TOPs old_tops = list(protocol.tops)