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(),
""" 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)
@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}