411: Add relationship and backrefs to media_data tables.
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Wed, 28 Mar 2012 11:19:11 +0000 (13:19 +0200)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Wed, 28 Mar 2012 11:21:47 +0000 (13:21 +0200)
Adding proper relationship()s and especially backref()s
will delete media_data rows along with the main MediaEntry.
This fixes #411.

mediagoblin/media_types/ascii/models.py
mediagoblin/media_types/image/models.py
mediagoblin/media_types/video/models.py

index a35e69581131c410a487b2f8294902712799e248..865c216c5bddc1a4f81eded38b1d06e83fb49ada 100644 (file)
@@ -18,8 +18,8 @@
 from mediagoblin.db.sql.base import Base
 
 from sqlalchemy import (
-    Column, Integer, Unicode, UnicodeText, DateTime, Boolean, ForeignKey,
-    UniqueConstraint)
+    Column, Integer, ForeignKey)
+from sqlalchemy.orm import relationship, backref
 
 
 class AsciiData(Base):
@@ -28,6 +28,8 @@ class AsciiData(Base):
     # The primary key *and* reference to the main media_entry
     media_entry = Column(Integer, ForeignKey('core__media_entries.id'),
         primary_key=True)
+    get_media_entry = relationship("MediaEntry",
+        backref=backref("ascii__media_data", cascade="all, delete-orphan"))
 
 
 DATA_MODEL = AsciiData
index 5eb20ed4365a7287bc98d57878411be0e9e170db..fc518daa752387767fdc03e792ceb80e3a38b978 100644 (file)
@@ -19,6 +19,7 @@ from mediagoblin.db.sql.base import Base
 
 from sqlalchemy import (
     Column, Integer, Float, ForeignKey)
+from sqlalchemy.orm import relationship, backref
 from mediagoblin.db.sql.extratypes import JSONEncoded
 
 
@@ -28,6 +29,9 @@ class ImageData(Base):
     # The primary key *and* reference to the main media_entry
     media_entry = Column(Integer, ForeignKey('core__media_entries.id'),
         primary_key=True)
+    get_media_entry = relationship("MediaEntry",
+        backref=backref("image__media_data", cascade="all, delete-orphan"))
+
     width = Column(Integer)
     height = Column(Integer)
     exif_all = Column(JSONEncoded)
index cf42b7c83a4ffb49a254318184205ad79414c762..35ed92bf72957ff50776312ee77c14e7afb30fdb 100644 (file)
@@ -19,6 +19,7 @@ from mediagoblin.db.sql.base import Base
 
 from sqlalchemy import (
     Column, Integer, SmallInteger, ForeignKey)
+from sqlalchemy.orm import relationship, backref
 
 
 class VideoData(Base):
@@ -27,6 +28,9 @@ class VideoData(Base):
     # The primary key *and* reference to the main media_entry
     media_entry = Column(Integer, ForeignKey('core__media_entries.id'),
         primary_key=True)
+    get_media_entry = relationship("MediaEntry",
+        backref=backref("video__media_data", cascade="all, delete-orphan"))
+
     width = Column(SmallInteger)
     height = Column(SmallInteger)