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.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py
index 04588ad1..72f85369 100644
--- a/mediagoblin/db/migrations.py
+++ b/mediagoblin/db/migrations.py
@@ -579,6 +579,29 @@ PRIVILEGE_FOUNDATIONS_v0 = [{'privilege_name':u'admin'},
{'privilege_name':u'active'}]
+class Activity_R0(declarative_base()):
+ __tablename__ = "core__activities"
+ id = Column(Integer, primary_key=True)
+ 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=False)
+ title = Column(Unicode, nullable=True)
+ target = Column(Integer, ForeignKey(User.id), nullable=True)
+ object_comment = Column(Integer, ForeignKey(MediaComment.id), nullable=True)
+ object_collection = Column(Integer, ForeignKey(Collection.id), nullable=True)
+ object_media = Column(Integer, ForeignKey(MediaEntry.id), nullable=True)
+ object_user = Column(Integer, ForeignKey(User.id), nullable=True)
+
+class Generator(declarative_base()):
+ __tablename__ = "core__generators"
+ id = Column(Integer, primary_key=True)
+ name = Column(Unicode, nullable=False)
+ published = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ updated = Column(DateTime, nullable=False, default=datetime.datetime.now)
+ object_type = Column(Unicode, nullable=False)
+
# vR1 stands for "version Rename 1". This only exists because we need
# to deal with dropping some booleans and it's otherwise impossible
# with sqlite.
@@ -890,3 +913,38 @@ def revert_username_index(db):
db.rollback()
db.commit()
+
+@RegisterMigration(24, MIGRATIONS)
+def create_activity_table(db):
+ """ This will create the activity table """
+ Activity_R0.__table__.create(db.bind)
+ Generator_R0.__table__.create(db.bind)
+ db.commit()
+
+ # Create the GNU MediaGoblin generator
+ gmg_generator = Generator(name="GNU MediaGoblin", object_type="service")
+ gmg_generator.save()
+
+ # Now we want to retroactively add what activities we can
+ # first we'll add activities when people uploaded media.
+ for media in MediaEntry.query.all():
+ activity = Activity_R0(
+ verb="create",
+ actor=media.uploader,
+ published=media.created,
+ object_media=media.id,
+ )
+ activity.generate_content()
+ activity.save()
+
+ # Now we want to add all the comments people made
+ for comment in MediaComment.query.all():
+ activity = Activity_R0(
+ verb="comment",
+ actor=comment.author,
+ published=comment.created,
+ )
+ activity.generate_content()
+ activity.save()
+
+ db.commit()