예제 #1
0
파일: tables.py 프로젝트: nvasilakis/inbox
    namespace_id = Column(Integer, ForeignKey('namespace.id'), nullable=False)
    namespace = relationship('Namespace', backref='transactions')

    def set_extra_attrs(self, obj):
        try:
            self.namespace = obj.namespace
        except AttributeError:
            log.info("Couldn't create {2} revision for {0}:{1}".format(
                self.table_name, self.record_id, self.command))
            log.info("Delta is {0}".format(self.delta))
            log.info("Thread is: {0}".format(obj.thread_id))
            import pdb; pdb.set_trace()
            raise

HasRevisions = gen_rev_role(Transaction)

class Contact(Base, HasRevisions):
    """ Inbox-specific sessions. """
    imapaccount_id = Column(ForeignKey('imapaccount.id', ondelete='CASCADE'),
            nullable=False)
    imapaccount = relationship("ImapAccount")

    g_id = Column(String(64))
    source = Column("source", Enum("local", "remote"))

    email_address = Column(String(254), nullable=True, index=True)
    name = Column(Text)
    # phone_number = Column(String(64))

    updated_at = Column(DateTime, default=func.now(),
예제 #2
0
""" Tests for delta logging. """

from pytest import fixture

from sqlalchemy import create_engine, Column, Enum, String, Integer
from sqlalchemy.orm import sessionmaker

from inbox.sqlalchemy.revision import versioned_session, Revision, gen_rev_role
from inbox.sqlalchemy.util import Base

class MonkeyRevision(Base, Revision):
    pass

HasRevisions = gen_rev_role(MonkeyRevision)

class Monkey(Base, HasRevisions):
    type = Column(Enum('chimpanzee', 'gorilla', 'rhesus'), nullable=False)
    name = Column(String(40), nullable=True)
    age = Column(Integer, nullable=False)

class Tree(Base):
    type = Column(Enum('maple', 'palm', 'fir'), nullable=False)
    location = Column(String(40), nullable=False)

@fixture(scope='session')
def db_session(request):
    # engine = create_engine('sqlite:///test.db')
    engine = create_engine('sqlite://')
    Base.metadata.create_all(engine)
    session = versioned_session(sessionmaker()(bind=engine), MonkeyRevision,
            HasRevisions)
예제 #3
0

@as_declarative()
class Base(object):
    id = Column(Integer, primary_key=True, autoincrement=True)

    @declared_attr
    def __tablename__(cls):
        return cls.__name__.lower()


class MonkeyRevision(Base, Revision):
    pass


HasRevisions = gen_rev_role(MonkeyRevision)


class Monkey(Base, HasRevisions):
    type = Column(Enum('chimpanzee', 'gorilla', 'rhesus'), nullable=False)
    name = Column(String(40), nullable=True)
    age = Column(Integer, nullable=False)

    @property
    def favorite_food(self):
        return 'banana'

    def get_versioned_properties(self):
        return {'favorite_food': self.favorite_food}