import datetime from sqlalchemy.dialects.postgresql import ARRAY from sqlalchemy.dialects.postgresql import ENUM from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship from sqlalchemy.orm import scoped_session from sqlalchemy.orm import sessionmaker from sqlalchemy.schema import Column from sqlalchemy.schema import ForeignKey from sqlalchemy.schema import Sequence from sqlalchemy.types import Boolean from sqlalchemy.types import CHAR from sqlalchemy.types import Integer from sqlalchemy.types import String from sqlalchemy.types import Text from sqlalchemy.types import TIMESTAMP from zope.sqlalchemy import ZopeTransactionExtension DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension())) Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, Sequence('users_id_seq'), primary_key=True) email = Column(String(254), nullable=False) password = Column(CHAR(64), nullable=False) is_developer = Column(Boolean, default='false') reports = relationship('Report') class Bug(Base): __tablename__ = 'bugs' id = Column(Integer, Sequence('bugs_id_seq'), primary_key=True) state = Column(ENUM('NOSTATE', 'Open', 'Analyzed', 'Feedback', 'Closed', 'Suspended', name='bugstate'), nullable=False) reported = Column(Integer, nullable=False) reports = relationship('Report') class Report(Base): __tablename__ = 'reports' id = Column(Integer, Sequence('reports_id_seq'), primary_key=True) bug_id = Column(Integer, ForeignKey('bugs.id')) user_id = Column(Integer, ForeignKey('users.id'), nullable=False) received_datetime = Column(TIMESTAMP, default=datetime.datetime.now) confirmation_code = Column(CHAR(length=16), nullable=False) confirmed = Column(Boolean, default='false') bugs_id = Column(ARRAY(Integer)) crashtype = Column(Text) crashdate = Column(Text) hostname = Column(Text) ostype = Column(Text) osrelease = Column(Text) version = Column(Text) machine = Column(Text) panic = Column(Text) backtrace = Column(Text) top_significant_func = Column(Text) rem_significant_funcs = Column(ARRAY(Text)) ps_axl = Column(Text) vmstat_s = Column(Text) vmstat_m = Column(Text) vmstat_z = Column(Text) vmstat_i = Column(Text) pstat_t = Column(Text) pstat_s = Column(Text) iostat = Column(Text) ipcs_a = Column(Text) ipcs_t = Column(Text) nfsstat = Column(Text) netstat_s = Column(Text) netstat_m = Column(Text) netstat_id = Column(Text) netstat_anr = Column(Text) netstat_ana = Column(Text) netstat_al = Column(Text) fstat = Column(Text) dmesg = Column(Text) kernelconfig = Column(Text) ddbcapturebuffer = Column(Text)