aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/db
diff options
context:
space:
mode:
authorJessica Tallon <jessica@megworld.co.uk>2015-04-28 20:43:15 +0200
committerJessica Tallon <jessica@megworld.co.uk>2015-05-26 16:48:59 +0200
commite8b44d7c093ce24c2c77674a389238efc4d58f60 (patch)
tree20c484eaebaaebeb06e4d123a2a7477b2e2e68ea /mediagoblin/db
parent6185a4b9e6465ecd9c4806ffeec7688f7baa1f2f (diff)
downloadmediagoblin-e8b44d7c093ce24c2c77674a389238efc4d58f60.tar.lz
mediagoblin-e8b44d7c093ce24c2c77674a389238efc4d58f60.tar.xz
mediagoblin-e8b44d7c093ce24c2c77674a389238efc4d58f60.zip
Add migration to remove ActivityIntermediator
Migration to drop the table and removal of it from the model as it has now been superseeded by the GenericForeignKey field.
Diffstat (limited to 'mediagoblin/db')
-rw-r--r--mediagoblin/db/migrations.py15
-rw-r--r--mediagoblin/db/models.py56
2 files changed, 12 insertions, 59 deletions
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py
index 8661c95a..70bf6234 100644
--- a/mediagoblin/db/migrations.py
+++ b/mediagoblin/db/migrations.py
@@ -1398,8 +1398,17 @@ def rename_and_remove_object_and_target(db):
# Commit the changes to the database.
db.commit()
+@RegisterMigration(31, MIGRATIONS)
+def remove_activityintermediator(db):
+ """
+ This removes the old specific ActivityIntermediator model which has been
+ superseeded by the GenericForeignKey field.
+ """
+ metadata = MetaData(bind=db.bind)
+ # Drop the table
+ ai_table = inspect_table(metadata, "core__activity_intermediators")
+ ai_table.drop()
-
-
-
+ # Commit the changes
+ db.commit()
diff --git a/mediagoblin/db/models.py b/mediagoblin/db/models.py
index b4cfe2a8..a771ec2f 100644
--- a/mediagoblin/db/models.py
+++ b/mediagoblin/db/models.py
@@ -1372,62 +1372,6 @@ class Generator(Base):
if "displayName" in data:
self.name = data["displayName"]
-
-class ActivityIntermediator(Base):
- """
- This is used so that objects/targets can have a foreign key back to this
- object and activities can a foreign key to this object. This objects to be
- used multiple times for the activity object or target and also allows for
- different types of objects to be used as an Activity.
- """
- __tablename__ = "core__activity_intermediators"
-
- id = Column(Integer, primary_key=True)
- type = Column(Unicode, nullable=False)
-
- TYPES = {
- "user": User,
- "media": MediaEntry,
- "comment": MediaComment,
- "collection": Collection,
- }
-
- def _find_model(self, obj):
- """ Finds the model for a given object """
- for key, model in self.TYPES.items():
- if isinstance(obj, model):
- return key, model
-
- return None, None
-
- def set(self, obj):
- """ This sets itself as the activity """
- key, model = self._find_model(obj)
- if key is None:
- raise ValueError("Invalid type of object given")
-
- self.type = key
-
- # We need to populate the self.id so we need to save but, we don't
- # want to save this AI in the database (yet) so commit=False.
- self.save(commit=False)
- obj.activity = self.id
- obj.save()
-
- def get(self):
- """ Finds the object for an activity """
- if self.type is None:
- return None
-
- model = self.TYPES[self.type]
- return model.query.filter_by(activity=self.id).first()
-
- @validates("type")
- def validate_type(self, key, value):
- """ Validate that the type set is a valid type """
- assert value in self.TYPES
- return value
-
class Activity(Base, ActivityMixin):
"""
This holds all the metadata about an activity such as uploading an image,