From dd7457a9dc03ab001a3e79dff4e1e6f1385f9001 Mon Sep 17 00:00:00 2001 From: Julian Rother <julian@cccv.de> Date: Sun, 12 Mar 2023 13:29:47 +0100 Subject: [PATCH] Add photo creation date --- .../aabfcc081e98_add_photo_creation_date.py | 42 +++++++++++++++++++ warehouse/models.py | 2 + 2 files changed, 44 insertions(+) create mode 100644 warehouse/migrations/versions/aabfcc081e98_add_photo_creation_date.py diff --git a/warehouse/migrations/versions/aabfcc081e98_add_photo_creation_date.py b/warehouse/migrations/versions/aabfcc081e98_add_photo_creation_date.py new file mode 100644 index 0000000..ff97ad7 --- /dev/null +++ b/warehouse/migrations/versions/aabfcc081e98_add_photo_creation_date.py @@ -0,0 +1,42 @@ +"""Add photo creation date + +Revision ID: aabfcc081e98 +Revises: 549a81db4351 +Create Date: 2023-03-11 23:10:39.519330 + +""" +from alembic import op +import sqlalchemy as sa +from flask import current_app +import os +import datetime + +# revision identifiers, used by Alembic. +revision = 'aabfcc081e98' +down_revision = '549a81db4351' +branch_labels = None +depends_on = None + + +def upgrade(): + with op.batch_alter_table('photo', schema=None) as batch_op: + batch_op.add_column(sa.Column('created', sa.DateTime(), nullable=True)) + table = sa.table( + 'photo', + sa.column('id', sa.Integer), + sa.column('path', sa.String(128)), + sa.column('created', sa.DateTime), + ) + conn = op.get_bind() + results = conn.execute(sa.select(table.c.id, table.c.path)).fetchall() + for photo_id, path in results: + path = os.path.join(current_app.config['UPLOAD_FOLDER'], path) + created = datetime.datetime.utcfromtimestamp(os.path.getctime(path)) + op.execute(sa.update(table).where(table.c.id == photo_id).values(created=created)) + with op.batch_alter_table('photo', schema=None) as batch_op: + batch_op.alter_column('created', existing_type=sa.DateTime(), nullable=False) + + +def downgrade(): + with op.batch_alter_table('photo', schema=None) as batch_op: + batch_op.drop_column('created') diff --git a/warehouse/models.py b/warehouse/models.py index d4e9ca5..e30bf8d 100644 --- a/warehouse/models.py +++ b/warehouse/models.py @@ -1,6 +1,7 @@ import secrets import os import io +import datetime from flask import current_app, send_file, Markup from flask_sqlalchemy import SQLAlchemy @@ -13,6 +14,7 @@ class Photo(db.Model): id = db.Column(db.Integer(), primary_key=True, autoincrement=True) mimetype = db.Column(db.String(128), nullable=False) path = db.Column(db.String(128), nullable=True) + created = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False) @classmethod def from_form(cls, filestorage): -- GitLab