Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from sqlalchemy import Table, Column, Integer, String, DateTime, ForeignKey
- from sqlalchemy.orm import relationship
- from database import Base
- def dump_datetime(value):
- """Deserialize datetime object into string form for JSON processing."""
- if value is None:
- return ""
- return value.strftime("%d/%m/%Y %H:%M:%S")
- class MigrateModel(Base):
- __tablename__ = 'da_models'
- id = Column(Integer, primary_key=True)
- name = Column(String(100), unique=True)
- migrated_date = Column(DateTime)
- def __init__(self, name=None, migrated_date=None):
- self.name = name
- self.migrated_date = migrated_date
- def __repr__(self):
- return '%r' % (self.name)
- @property
- def serialize(self):
- return {
- 'id': self.id,
- 'name': self.name,
- 'migrated_date': dump_datetime(self.migrated_date),
- }
- class MigrateModelField(Base):
- __tablename__ = 'da_models_fields'
- id = Column(Integer, primary_key=True)
- name = Column(String(100))
- model_id = Column(Integer, ForeignKey('da_models.id'))
- model = relationship(MigrateModel, backref="fields")
- ttype = Column(String(20))
- relation = Column(String(100))
- def __init__(self, name=None, ttype=None, relation=None):
- self.name = name
- self.ttype = ttype
- self.relation = relation
- def __repr__(self):
- return '%r - %r' % (self.model, self.name)
- dimensions_rel = Table(
- 'da_dimensions_rel', Base.metadata,
- Column('cube_id', Integer, ForeignKey('da_cubes.id')),
- Column('dimension_id', Integer, ForeignKey('da_dimensions.id'))
- )
- class Cube(Base):
- __tablename__ = 'da_cubes'
- id = Column(Integer, primary_key=True)
- name = Column(String(100), unique=True)
- fact_table_id = Column(Integer, ForeignKey('da_models.id'))
- fact_table = relationship(MigrateModel, backref="cubes")
- dimensions = relationship("Dimension", secondary=dimensions_rel,
- backref="cubes")
- def __repr__(self):
- return '%r' % (self.name)
- @property
- def serialize(self):
- return {
- 'id': self.id,
- 'name': self.name,
- 'fact_table': self.fact_table.name,
- }
- class Measure(Base):
- __tablename__ = 'da_measures'
- id = Column(Integer, primary_key=True)
- name = Column(String(100))
- cube_id = Column(Integer, ForeignKey('da_cubes.id'))
- cube = relationship(Cube, backref="measures")
- field_id = Column(Integer, ForeignKey('da_models_fields.id'))
- field = relationship(MigrateModelField, backref="measures")
- def __repr__(self):
- return '%r' % (self.name)
- @property
- def serialize(self):
- return {
- 'id': self.id,
- 'name': self.name,
- }
- class Dimension(Base):
- __tablename__ = 'da_dimensions'
- id = Column(Integer, primary_key=True)
- name = Column(String(100))
- def __repr__(self):
- return '%r' % (self.name)
- @property
- def serialize(self):
- return {
- 'id': self.id,
- 'name': self.name,
- }
- class Level(Base):
- __tablename__ = 'da_levels'
- id = Column(Integer, primary_key=True)
- name = Column(String(100))
- dimension_id = Column(Integer, ForeignKey('da_dimensions.id'))
- dimension = relationship(Dimension, backref="levels")
- field_id = Column(Integer, ForeignKey('da_models_fields.id'))
- field = relationship(MigrateModelField, backref="levels")
- def __repr__(self):
- return '%r - %r' % (self.dimension, self.name)
- @property
- def serialize(self):
- return {
- 'id': self.id,
- 'name': self.name,
- }
- # column = fields.Many2One('ir.model.field', 'Column', required=True,
- # domain=[('model', '=', Eval('_parent_hierarchy', {}).get('table'))])
- levels_rel = Table(
- 'da_levels_rel', Base.metadata,
- Column('hierarchy_id', Integer, ForeignKey('da_hierarchies.id')),
- Column('level_id', Integer, ForeignKey('da_levels.id'))
- )
- class Hierarchy(Base):
- __tablename__ = 'da_hierarchies'
- id = Column(Integer, primary_key=True)
- name = Column(String(100))
- dimension_id = Column(Integer, ForeignKey('da_dimensions.id'))
- dimension = relationship(Dimension, backref="hierarchies")
- levels = relationship("Level", secondary=levels_rel,
- backref="hierarchies")
- def __repr__(self):
- return '%r' % (self.name)
- #
- # table = fields.Many2One('ir.model', 'Table', required=True)
- # domain=[('model', '=', Eval('_parent_dimension', {}).get('foreignkey.relation'))])
- # primarykey = fields.Many2One('ir.model.field', 'Primary Key', required=True,
- # domain=[('model', '=', Eval('_parent_dimension', {}).get('table'))])
- class LevelAttribute(Base):
- __tablename__ = 'da_levelattributes'
- id = Column(Integer, primary_key=True)
- name = Column(String(100))
- level_id = Column(Integer, ForeignKey('da_levels.id'))
- level = relationship(Level, backref="levelattributes")
- field_id = Column(Integer, ForeignKey('da_models_fields.id'))
- field = relationship(MigrateModelField, backref="levelattributes")
- def __repr__(self):
- return '%r' % (self.name)
- class Attribute(Base):
- __tablename__ = 'da_attributes'
- id = Column(Integer, primary_key=True)
- name = Column(String(100))
- dimension_id = Column(Integer, ForeignKey('da_dimensions.id'))
- dimension = relationship(Dimension, backref="attributes")
- def __repr__(self):
- return '%r' % (self.name)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement