From 02f07bfe145fb4c3a31101c48202224d803004da Mon Sep 17 00:00:00 2001 From: Elrond Date: Wed, 28 Mar 2012 13:19:11 +0200 Subject: [PATCH] 411: Add relationship and backrefs to media_data tables. 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 | 6 ++++-- mediagoblin/media_types/image/models.py | 4 ++++ mediagoblin/media_types/video/models.py | 4 ++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/mediagoblin/media_types/ascii/models.py b/mediagoblin/media_types/ascii/models.py index a35e6958..865c216c 100644 --- a/mediagoblin/media_types/ascii/models.py +++ b/mediagoblin/media_types/ascii/models.py @@ -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 diff --git a/mediagoblin/media_types/image/models.py b/mediagoblin/media_types/image/models.py index 5eb20ed4..fc518daa 100644 --- a/mediagoblin/media_types/image/models.py +++ b/mediagoblin/media_types/image/models.py @@ -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) diff --git a/mediagoblin/media_types/video/models.py b/mediagoblin/media_types/video/models.py index cf42b7c8..35ed92bf 100644 --- a/mediagoblin/media_types/video/models.py +++ b/mediagoblin/media_types/video/models.py @@ -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) -- 2.25.1