diff options
author | Jessica Tallon <jessica@megworld.co.uk> | 2015-04-28 20:43:15 +0200 |
---|---|---|
committer | Jessica Tallon <jessica@megworld.co.uk> | 2015-05-26 16:48:59 +0200 |
commit | e8b44d7c093ce24c2c77674a389238efc4d58f60 (patch) | |
tree | 20c484eaebaaebeb06e4d123a2a7477b2e2e68ea | |
parent | 6185a4b9e6465ecd9c4806ffeec7688f7baa1f2f (diff) | |
download | mediagoblin-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.
-rw-r--r-- | mediagoblin/db/migrations.py | 15 | ||||
-rw-r--r-- | mediagoblin/db/models.py | 56 |
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, |