Skip to content
Snippets Groups Projects
models_changelog.py 4.44 KiB
Newer Older
# coding: utf-8
"""
class StationmetaChangelog(Base)
================================
"""
from sqlalchemy import Column, DateTime, BigInteger, ForeignKey, String, text, \
                       Text, CheckConstraint, Table, Sequence
from sqlalchemy.orm import relationship
from .models_core import StationmetaCore
from toardb.auth_user.models import AuthUser
from toardb.base import Base

STATIONMETA_CHANGELOG_ID_SEQ = Sequence('stationmeta_changelog_id_seq')  # define sequence explicitly
class StationmetaChangelog(Base):
    """ Table "public.stationmeta_changelog"

    +----------------+--------------------------+-----------+----------+--------------------------------------------------------+
    |     Column     |           Type           | Collation | Nullable |                      Default                           |
    +================+==========================+===========+==========+========================================================+
    | id             | bigint                   |           | not null | nextval('stationmeta_changelog_id_seq'::regclass)      |
    +----------------+--------------------------+-----------+----------+--------------------------------------------------------+
    | datetime       | timestamp with time zone |           | not null | now()                                                  |
    +----------------+--------------------------+-----------+----------+--------------------------------------------------------+
    | station_id     | bigint                   |           | not null |                                                        |
    +----------------+--------------------------+-----------+----------+--------------------------------------------------------+
    | type_of_change | integer                  |           | not null |                                                        |
    +----------------+--------------------------+-----------+----------+--------------------------------------------------------+
    | description    | text                     |           | not null |                                                        |
    +----------------+--------------------------+-----------+----------+--------------------------------------------------------+
    | old_value      | character varying(256)   |           | not null |                                                        |
    +----------------+--------------------------+-----------+----------+--------------------------------------------------------+
    | new_value      | character varying(256)   |           | not null |                                                        |
    +----------------+--------------------------+-----------+----------+--------------------------------------------------------+
    | author_id      | integer                  |           | not null |                                                        |
    +----------------+--------------------------+-----------+----------+--------------------------------------------------------+
    Indexes:
     "stationmeta_changelog_pkey" PRIMARY KEY, btree (id)
    Foreign-key constraints:
     "stationmeta_changelog_author_id_fk_auth_user_id" FOREIGN KEY (author_id) REFERENCES auth_user(id)
     "stationmeta_changelog_station_id_fk_stationmeta_core_id" FOREIGN KEY (station_id) REFERENCES stationmeta_core(id)
     "stationmeta_changelog_type_of_change_fk_cl_vocabulary_enum_val" FOREIGN KEY (type_of_change) REFERENCES cl_vocabulary(enum_val)
    """
    __tablename__ = 'stationmeta_changelog'

    id = Column(BigInteger, STATIONMETA_CHANGELOG_ID_SEQ, primary_key=True, server_default=STATIONMETA_CHANGELOG_ID_SEQ.next_value())
    datetime = Column(DateTime(True), nullable=False, server_default=text("now()"))
    description = Column(Text, nullable=False)
    old_value = Column(String(256), nullable=False)
    new_value = Column(String(256), nullable=False)
# do not use string declaration here (not working for pytest)
# use the explicit class name here,
# see: https://groups.google.com/forum/#!topic/sqlalchemy/YjGhE4d6K4U
    station_id = Column(ForeignKey(StationmetaCore.id, deferrable=True, initially='DEFERRED'), nullable=False)
    author_id = Column(ForeignKey(AuthUser.id), nullable=False)
# still to check for some pytest solution for controlled vocabulary
    type_of_change = Column(ForeignKey('cl_vocabulary.enum_val'), nullable=False)

    author = relationship('AuthUser')
    station = relationship('StationmetaCore')

#   cl_vocabulary = relationship('ClVocabulary')