diff --git a/models/database.py b/models/database.py index 42fea95d1f1944e76f4fbede2ce4095aba8b2dff..f11780df01e8c95dc0c82b046869012371dcfc19 100644 --- a/models/database.py +++ b/models/database.py @@ -108,6 +108,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) @@ -430,7 +436,12 @@ class Protocol(DatabaseModel): tzinfo=tz.tzlocal()) @staticmethod - def create_new_protocol(protocoltype, date, start_time=None, invitation_by=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 if invitation_by is None: diff --git a/server.py b/server.py index 1c378dae2248520ce8b423b974ddf6ba85c1c2a2..1bca2f995ce510bf0dffbfb4d050ad15ed70f99e 100755 --- a/server.py +++ b/server.py @@ -75,7 +75,7 @@ try: "release": get_git_revision(), } sentry.get_user_info = get_user_info -except ModuleNotFoundError: +except ImportError: print("Raven not installed. Not sending issues to Sentry.") except AttributeError: print("DSN not configured. Not sending issues to Sentry.") @@ -91,7 +91,7 @@ def make_celery(app, config): raven_client = RavenClient(config.SENTRY_DSN) register_logger_signal(raven_client) register_signal(raven_client) - except ModuleNotFoundError: + except ImportError: print("Raven not installed. Not sending celery issues to Sentry.") except AttributeError: print("DSN not configured. Not sending celery issues to Sentry.") @@ -937,7 +937,7 @@ def send_protocol_reminder(protocol): if not config.MAIL_ACTIVE: flash("Die Mailfunktion ist nicht aktiviert.", "alert-error") return back.redirect("show_protocol", protocol_id=protocol.id) - meetingreminders = protocol.reminders + meetingreminders = protocol.protocoltype.reminders if len(meetingreminders) == 0: flash("Für diesen Protokolltyp sind keine Einladungsmails " "konfiguriert.", "alert-error") 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)