aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/db/migrations.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/db/migrations.py')
-rw-r--r--mediagoblin/db/migrations.py74
1 files changed, 42 insertions, 32 deletions
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py
index e4e5d9b8..c1a73795 100644
--- a/mediagoblin/db/migrations.py
+++ b/mediagoblin/db/migrations.py
@@ -898,28 +898,28 @@ class Generator_R0(declarative_base()):
updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
object_type = Column(Unicode, nullable=False)
+class ActivityIntermediator_R0(declarative_base()):
+ __tablename__ = "core__activity_intermediators"
+ id = Column(Integer, primary_key=True)
+ type = Column(Unicode, nullable=False)
+
class Activity_R0(declarative_base()):
__tablename__ = "core__activities"
id = Column(Integer, primary_key=True)
- actor = Column(Integer, ForeignKey("core__users.id"), nullable=False)
+ actor = Column(Integer, ForeignKey(User.id), nullable=False)
published = Column(DateTime, nullable=False, default=datetime.datetime.now)
updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
verb = Column(Unicode, nullable=False)
content = Column(Unicode, nullable=True)
title = Column(Unicode, nullable=True)
- generator = Column(Integer, ForeignKey("core__generators.id"), nullable=True)
+ generator = Column(Integer, ForeignKey(Generator_R0.id), nullable=True)
object = Column(Integer,
- ForeignKey("core__activity_intermediators.id"),
+ ForeignKey(ActivityIntermediator_R0.id),
nullable=False)
target = Column(Integer,
- ForeignKey("core__activity_intermediators.id"),
+ ForeignKey(ActivityIntermediator_R0.id),
nullable=True)
-class ActivityIntermediator_R0(declarative_base()):
- __tablename__ = "core__activity_intermediators"
- id = Column(Integer, primary_key=True)
- type = Column(Unicode, nullable=False)
-
@RegisterMigration(24, MIGRATIONS)
def activity_migration(db):
"""
@@ -931,6 +931,7 @@ def activity_migration(db):
"""
# Set constants we'll use later
FOREIGN_KEY = "core__activity_intermediators.id"
+ ACTIVITY_COLUMN = "activity"
# Create the new tables.
ActivityIntermediator_R0.__table__.create(db.bind)
@@ -938,7 +939,6 @@ def activity_migration(db):
Activity_R0.__table__.create(db.bind)
db.commit()
-
# Initiate the tables we want to use later
metadata = MetaData(bind=db.bind)
user_table = inspect_table(metadata, "core__users")
@@ -965,16 +965,16 @@ def activity_migration(db):
# Now we want to modify the tables which MAY have an activity at some point
- media_col = Column("activity", Integer, ForeignKey(FOREIGN_KEY))
+ media_col = Column(ACTIVITY_COLUMN, Integer, ForeignKey(FOREIGN_KEY))
media_col.create(media_entry_table)
- user_col = Column("activity", Integer, ForeignKey(FOREIGN_KEY))
+ user_col = Column(ACTIVITY_COLUMN, Integer, ForeignKey(FOREIGN_KEY))
user_col.create(user_table)
- comments_col = Column("activity", Integer, ForeignKey(FOREIGN_KEY))
+ comments_col = Column(ACTIVITY_COLUMN, Integer, ForeignKey(FOREIGN_KEY))
comments_col.create(media_comments_table)
- collection_col = Column("activity", Integer, ForeignKey(FOREIGN_KEY))
+ collection_col = Column(ACTIVITY_COLUMN, Integer, ForeignKey(FOREIGN_KEY))
collection_col.create(collection_table)
db.commit()
@@ -1005,32 +1005,31 @@ def activity_migration(db):
# Add the AI to the media.
db.execute(media_entry_table.update().values(
- activity_as_object=db_ai.id
- ).where(id=media.id))
+ activity=db_ai.id
+ ).where(media_entry_table.c.id==media.id))
# Now we want to add all the comments people made
for comment in db.execute(media_comments_table.select()):
# Get the MediaEntry for the comment
media_entry = db.execute(
- media_entry_table.select(id=comment.media_entry_id))
+ media_entry_table.select(
+ media_entry_table.c.id==comment.media_entry
+ )).first()
# Create an AI for target
- db_ai_media = db.execute(ai_table.insert().values(
- type="media"
- ))
db_ai_media = db.execute(ai_table.select(
- ai_table.c.id==db_ai_media.inserted_primary_key[0]
- ))
+ ai_table.c.id==media_entry.activity
+ )).first().id
db.execute(
- media_entry_table.update().values(
- activity_as_target=db_ai_media.id
- ).where(id=media_entry.id))
+ media_comments_table.update().values(
+ activity=db_ai_media
+ ).where(media_comments_table.c.id==media_entry.id))
# Now create the AI for the comment
db_ai_comment = db.execute(ai_table.insert().values(
type="comment"
- ))
+ )).inserted_primary_key[0]
activity = {
"verb": "comment",
@@ -1038,12 +1037,17 @@ def activity_migration(db):
"published": comment.created,
"updated": comment.created,
"generator": gmg_generator.id,
- "object": db_ai_comment.id,
- "target": db_ai_media.id,
+ "object": db_ai_comment,
+ "target": db_ai_media,
}
# Now add the comment object
- db.execute(media_comments_table.insert().values(**activity))
+ db.execute(activity_table.insert().values(**activity))
+
+ # Now add activity to comment
+ db.execute(media_comments_table.update().values(
+ activity=db_ai_comment
+ ).where(media_comments_table.c.id==comment.id))
# Create 'create' activities for all collections
for collection in db.execute(collection_table.select()):
@@ -1051,11 +1055,14 @@ def activity_migration(db):
db_ai = db.execute(ai_table.insert().values(
type="collection"
))
+ db_ai = db.execute(ai_table.select(
+ ai_table.c.id==db_ai.inserted_primary_key[0]
+ )).first()
# Now add link the collection to the AI
db.execute(collection_table.update().values(
- activity_as_object=db_ai.id
- ).where(id=collection.id))
+ activity=db_ai.id
+ ).where(collection_table.c.id==collection.id))
activity = {
"verb": "create",
@@ -1068,6 +1075,9 @@ def activity_migration(db):
db.execute(activity_table.insert().values(**activity))
-
+ # Now add the activity to the collection
+ db.execute(collection_table.update().values(
+ activity=db_ai.id
+ ).where(collection_table.c.id==collection.id))
db.commit()