diff --git a/jupyterhub/alembic/versions/56cc5a70207e_token_tracking.py b/jupyterhub/alembic/versions/56cc5a70207e_token_tracking.py index 9550ee89..3bba1c4c 100644 --- a/jupyterhub/alembic/versions/56cc5a70207e_token_tracking.py +++ b/jupyterhub/alembic/versions/56cc5a70207e_token_tracking.py @@ -18,6 +18,7 @@ import sqlalchemy as sa def upgrade(): tables = op.get_bind().engine.table_names() + op.add_column('users', sa.Column('created', sa.DateTime(), nullable=True)) op.add_column('api_tokens', sa.Column('created', sa.DateTime(), nullable=True)) op.add_column('api_tokens', sa.Column('last_activity', sa.DateTime(), nullable=True)) op.add_column('api_tokens', sa.Column('note', sa.Unicode(length=1023), nullable=True)) @@ -31,6 +32,7 @@ def upgrade(): def downgrade(): op.drop_constraint(None, 'oauth_codes', type_='foreignkey') op.drop_constraint(None, 'oauth_access_tokens', type_='foreignkey') + op.add_column('users', 'created') op.drop_column('oauth_access_tokens', 'last_activity') op.drop_column('oauth_access_tokens', 'created') op.drop_column('api_tokens', 'note') diff --git a/jupyterhub/orm.py b/jupyterhub/orm.py index 70676c56..745ff637 100644 --- a/jupyterhub/orm.py +++ b/jupyterhub/orm.py @@ -134,7 +134,8 @@ class User(Base): return {s.name: s for s in self._orm_spawners} admin = Column(Boolean, default=False) - last_activity = Column(DateTime, default=datetime.utcnow) + created = Column(DateTime, default=datetime.utcnow) + last_activity = Column(DateTime, nullable=True) api_tokens = relationship("APIToken", backref="user") cookie_id = Column(Unicode(255), default=new_token, nullable=False, unique=True) @@ -182,7 +183,7 @@ class Spawner(Base): state = Column(JSONDict) name = Column(Unicode(255)) - last_activity = Column(DateTime, default=datetime.utcnow) + last_activity = Column(DateTime, nullable=True) class Service(Base):