Просмотр исходного кода

Add date_modified to the conversations model

Peter Justin 7 лет назад
Родитель
Сommit
619c3afd06

+ 4 - 0
flaskbb/message/models.py

@@ -28,6 +28,8 @@ class Conversation(db.Model, CRUDMixin):
     subject = db.Column(db.String(255), nullable=True)
     date_created = db.Column(UTCDateTime(timezone=True), default=time_utcnow,
                              nullable=False)
+    date_modified = db.Column(UTCDateTime(timezone=True), default=time_utcnow,
+                              nullable=False)
     trash = db.Column(db.Boolean, default=False, nullable=False)
     draft = db.Column(db.Boolean, default=False, nullable=False)
     unread = db.Column(db.Boolean, default=False, nullable=False)
@@ -73,6 +75,7 @@ class Conversation(db.Model, CRUDMixin):
             message.save(self)
             return self
 
+        self.date_modified = time_utcnow()
         db.session.add(self)
         db.session.commit()
         return self
@@ -101,6 +104,7 @@ class Message(db.Model, CRUDMixin):
         """
         if conversation is not None:
             self.conversation_id = conversation.id
+            conversation.date_modified = time_utcnow()
             self.date_created = time_utcnow()
 
         db.session.add(self)

+ 41 - 0
migrations/881dd22cab94_add_date_modified_to_conversations.py

@@ -0,0 +1,41 @@
+"""Add date_modified to conversations
+
+Revision ID: 881dd22cab94
+Revises:
+Create Date: 2017-06-30 09:17:14.436704
+
+"""
+from alembic import op
+import sqlalchemy as sa
+import flaskbb
+from flaskbb.utils.helpers import time_utcnow
+
+# revision identifiers, used by Alembic.
+revision = '881dd22cab94'
+down_revision = '933bd7d807c4'
+branch_labels = ()
+depends_on = None
+
+
+def upgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    with op.batch_alter_table('conversations', schema=None) as batch_op:
+        batch_op.add_column(sa.Column('date_modified', flaskbb.utils.database.UTCDateTime(timezone=True), nullable=True))
+
+    with op.batch_alter_table('conversations', schema=None) as batch_op:
+        date_modified = sa.sql.table('conversations', sa.sql.column('date_modified'))
+        batch_op.execute(date_modified.update().values(date_modified=time_utcnow()))
+        batch_op.alter_column('date_modified',
+            existing_type=flaskbb.utils.database.UTCDateTime(timezone=True),
+            nullable=False
+        )
+
+    # ### end Alembic commands ###
+
+
+def downgrade():
+    # ### commands auto generated by Alembic - please adjust! ###
+    with op.batch_alter_table('conversations', schema=None) as batch_op:
+        batch_op.drop_column('date_modified')
+
+    # ### end Alembic commands ###