From b16179c52ed54bd04f988ed1973e41cb8b2a80b0 Mon Sep 17 00:00:00 2001
From: Robin Sonnabend <robin@fsmpi.rwth-aachen.de>
Date: Tue, 17 Nov 2015 21:21:41 +0100
Subject: [PATCH] Less cascading deletion by correct definition of
 relationships (fixes #7)

---
 models/database.py | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/models/database.py b/models/database.py
index f30847c..bc36fc2 100644
--- a/models/database.py
+++ b/models/database.py
@@ -43,6 +43,9 @@ class Event(db.Model):
     paused_until = db.Column(db.DateTime)
     current_topic_id = db.Column(db.Integer)
     
+    topics = relationship("Topic", backref=backref("event"), cascade="all, delete-orphan")
+    speakers = relationship("Speaker", backref=backref("event"), cascade="all, delete-orphan")
+    
     def __init__(self, name, paused=False, current_topic_id=None):
         self.name = name
         self.paused = paused
@@ -73,8 +76,8 @@ class Topic(db.Model):
     mode = db.Column(db.String)
     event_id = db.Column(db.Integer, db.ForeignKey("events.id"))
     index = db.Column(db.Integer)
-    
-    event = relationship("Event", backref=backref("topics",order_by=id), foreign_keys=[event_id], cascade="all, delete-orphan", single_parent=True)
+
+    statements = relationship("Statement", backref=backref("topic"), cascade="all, delete-orphan")
     
     def __init__(self, name, mode, event_id):
         self.name = name
@@ -128,7 +131,8 @@ class Speaker(db.Model):
     name = db.Column(db.String)
     number = db.Column(db.Integer)
     event_id = db.Column(db.Integer, db.ForeignKey("events.id"))
-    event = relationship("Event", backref=backref("speakers",order_by=id), cascade="all, delete-orphan", single_parent=True)
+
+    statements = relationship("Statement", backref=backref("speaker"), cascade="all, delete-orphan")
     
     def __init__(self, name, number, event_id):
         self.name = name
@@ -171,8 +175,6 @@ class Statement(db.Model):
     is_meta = db.Column(db.Boolean, default=False)
     is_current = db.Column(db.Boolean, default=False)
 
-    speaker = relationship("Speaker", backref=backref("statements",order_by=id), cascade="all, delete-orphan", single_parent=True)
-    topic = relationship("Topic", backref=backref("statements",order_by=id), cascade="all, delete-orphan", single_parent=True)
     
     def __init__(self, speaker_id, topic_id, insertion_time=None, executed=False, execution_time=None, is_meta=False, is_current=False):
         self.speaker_id = speaker_id
-- 
GitLab