Switching from using "default" to "server_default" for all default time settings, and running migrations so that this is set at the database level rather than in python, to hopefully correct some issues with dates being 4 hours in the future. Having a very hard time replicating this issue locally.

This commit is contained in:
Dan 2021-05-14 12:28:50 -04:00
parent 620b9a5188
commit a1bb30e689
7 changed files with 46 additions and 6 deletions

View File

@ -10,7 +10,7 @@ from crc import db, ma
class DataStoreModel(db.Model):
__tablename__ = 'data_store'
id = db.Column(db.Integer, primary_key=True)
last_updated = db.Column(db.DateTime(timezone=True), default=func.now())
last_updated = db.Column(db.DateTime(timezone=True), server_default=func.now())
key = db.Column(db.String, nullable=False)
workflow_id = db.Column(db.Integer)
study_id = db.Column(db.Integer, nullable=True)

View File

@ -66,7 +66,7 @@ class FileDataModel(db.Model):
data = deferred(db.Column(db.LargeBinary)) # Don't load it unless you have to.
version = db.Column(db.Integer, default=0)
size = db.Column(db.Integer, default=0)
date_created = db.Column(db.DateTime(timezone=True), default=func.now())
date_created = db.Column(db.DateTime(timezone=True), server_default=func.now())
file_model_id = db.Column(db.Integer, db.ForeignKey('file.id'))
file_model = db.relationship("FileModel", foreign_keys=[file_model_id])

View File

@ -15,7 +15,7 @@ class LdapModel(db.Model):
department = db.Column(db.String)
affiliation = db.Column(db.String)
sponsor_type = db.Column(db.String)
date_cached = db.Column(db.DateTime(timezone=True), default=func.now())
date_cached = db.Column(db.DateTime(timezone=True), server_default=func.now())
@classmethod
def from_entry(cls, entry):

View File

@ -41,7 +41,7 @@ class StudyModel(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String)
short_title = db.Column(db.String, nullable=True)
last_updated = db.Column(db.DateTime(timezone=True), default=func.now())
last_updated = db.Column(db.DateTime(timezone=True), server_default=func.now())
status = db.Column(db.Enum(StudyStatus))
irb_status = db.Column(db.Enum(IrbStatus))
primary_investigator_id = db.Column(db.String, nullable=True)
@ -85,7 +85,7 @@ class StudyEvent(db.Model):
id = db.Column(db.Integer, primary_key=True)
study_id = db.Column(db.Integer, db.ForeignKey(StudyModel.id), nullable=False)
study = db.relationship(StudyModel, back_populates='events_history')
create_date = db.Column(db.DateTime(timezone=True), default=func.now())
create_date = db.Column(db.DateTime(timezone=True), server_default=func.now())
status = db.Column(db.Enum(StudyStatus))
comment = db.Column(db.String, default='')
event_type = db.Column(db.Enum(StudyEventType))

View File

@ -89,7 +89,7 @@ class WorkflowModel(db.Model):
workflow_spec = db.relationship("WorkflowSpecModel")
total_tasks = db.Column(db.Integer, default=0)
completed_tasks = db.Column(db.Integer, default=0)
last_updated = db.Column(db.DateTime(timezone=True),default=func.now())
last_updated = db.Column(db.DateTime(timezone=True), server_default=func.now())
user_id = db.Column(db.String, default=None)
# Order By is important or generating hashes on reviews.
dependencies = db.relationship(WorkflowSpecDependencyFile, cascade="all, delete, delete-orphan",

View File

@ -0,0 +1,38 @@
"""empty message
Revision ID: bbf064082623
Revises: c1449d1d1681
Create Date: 2021-05-13 15:07:44.463757
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
from sqlalchemy import func
revision = 'bbf064082623'
down_revision = 'c1449d1d1681'
branch_labels = None
depends_on = None
def upgrade():
op.alter_column('data_store', 'last_updated', server_default=func.now())
op.alter_column('file_data', 'date_created', server_default=func.now())
op.alter_column('data_store', 'last_updated', server_default=func.now())
op.alter_column('ldap_model', 'date_cached', server_default=func.now())
op.alter_column('study', 'last_updated', server_default=func.now())
op.alter_column('study_event', 'create_date', server_default=func.now())
op.alter_column('workflow', 'last_updated', server_default=func.now())
def downgrade():
op.alter_column('data_store', 'last_updated', server_default=None)
op.alter_column('file_data', 'date_created', server_default=None)
op.alter_column('data_store', 'last_updated', server_default=None)
op.alter_column('ldap_model', 'date_cached', server_default=None)
op.alter_column('study', 'last_updated', server_default=None)
op.alter_column('study_event', 'create_date', server_default=None)
op.alter_column('workflow', 'last_updated', server_default=None)

View File

@ -10,3 +10,5 @@ services:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASS}
- POSTGRES_MULTIPLE_DATABASES=crc_dev,crc_test,pb,pb_test
- TZ=America/New_York
- PGTZ=America/New_York