Advertisement
Guest User

Models

a guest
May 5th, 2012
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.72 KB | None | 0 0
  1. from sqlalchemy import Table, Column, Integer, String, DateTime, ForeignKey
  2. from sqlalchemy.orm import relationship
  3. from database import Base
  4.  
  5. def dump_datetime(value):
  6.     """Deserialize datetime object into string form for JSON processing."""
  7.     if value is None:
  8.         return ""
  9.     return value.strftime("%d/%m/%Y %H:%M:%S")
  10.    
  11. class MigrateModel(Base):
  12.     __tablename__ = 'da_models'
  13.     id = Column(Integer, primary_key=True)
  14.     name = Column(String(100), unique=True)
  15.     migrated_date = Column(DateTime)
  16.  
  17.     def __init__(self, name=None, migrated_date=None):
  18.         self.name = name
  19.         self.migrated_date = migrated_date
  20.        
  21.     def __repr__(self):
  22.         return '%r' % (self.name)
  23.  
  24.     @property
  25.     def serialize(self):
  26.        return {
  27.            'id': self.id,
  28.            'name': self.name,
  29.            'migrated_date': dump_datetime(self.migrated_date),
  30.        }
  31.  
  32. class MigrateModelField(Base):
  33.     __tablename__ = 'da_models_fields'
  34.     id = Column(Integer, primary_key=True)
  35.     name = Column(String(100))
  36.     model_id = Column(Integer, ForeignKey('da_models.id'))
  37.     model = relationship(MigrateModel, backref="fields")
  38.     ttype = Column(String(20))
  39.     relation = Column(String(100))    
  40.  
  41.     def __init__(self, name=None, ttype=None, relation=None):
  42.         self.name = name
  43.         self.ttype = ttype
  44.         self.relation = relation
  45.                
  46.     def __repr__(self):
  47.         return '%r - %r' % (self.model, self.name)
  48.  
  49. dimensions_rel = Table(
  50.     'da_dimensions_rel', Base.metadata,
  51.     Column('cube_id', Integer, ForeignKey('da_cubes.id')),
  52.     Column('dimension_id', Integer, ForeignKey('da_dimensions.id'))
  53.     )
  54.    
  55. class Cube(Base):
  56.     __tablename__ = 'da_cubes'
  57.     id = Column(Integer, primary_key=True)
  58.     name = Column(String(100), unique=True)    
  59.     fact_table_id = Column(Integer, ForeignKey('da_models.id'))
  60.     fact_table = relationship(MigrateModel, backref="cubes")
  61.     dimensions = relationship("Dimension", secondary=dimensions_rel,
  62.             backref="cubes")
  63.  
  64.     def __repr__(self):
  65.         return '%r' % (self.name)
  66.        
  67.     @property
  68.     def serialize(self):
  69.        return {
  70.            'id': self.id,
  71.            'name': self.name,
  72.            'fact_table': self.fact_table.name,
  73.        }
  74.  
  75. class Measure(Base):
  76.     __tablename__ = 'da_measures'
  77.     id = Column(Integer, primary_key=True)    
  78.     name = Column(String(100))    
  79.     cube_id = Column(Integer, ForeignKey('da_cubes.id'))
  80.     cube = relationship(Cube, backref="measures")
  81.     field_id = Column(Integer, ForeignKey('da_models_fields.id'))
  82.     field = relationship(MigrateModelField, backref="measures")
  83.  
  84.     def __repr__(self):
  85.         return '%r' % (self.name)
  86.  
  87.     @property
  88.     def serialize(self):
  89.        return {
  90.            'id': self.id,
  91.            'name': self.name,
  92.        }        
  93.  
  94. class Dimension(Base):
  95.     __tablename__ = 'da_dimensions'
  96.     id = Column(Integer, primary_key=True)    
  97.     name = Column(String(100))    
  98.  
  99.     def __repr__(self):
  100.         return '%r' % (self.name)
  101.  
  102.     @property
  103.     def serialize(self):
  104.        return {
  105.            'id': self.id,
  106.            'name': self.name,
  107.        }        
  108.    
  109. class Level(Base):
  110.     __tablename__ = 'da_levels'
  111.     id = Column(Integer, primary_key=True)    
  112.     name = Column(String(100))    
  113.     dimension_id = Column(Integer, ForeignKey('da_dimensions.id'))
  114.     dimension = relationship(Dimension, backref="levels")
  115.     field_id = Column(Integer, ForeignKey('da_models_fields.id'))
  116.     field = relationship(MigrateModelField, backref="levels")
  117.  
  118.     def __repr__(self):
  119.         return '%r - %r' % (self.dimension, self.name)
  120.  
  121.     @property
  122.     def serialize(self):
  123.        return {
  124.            'id': self.id,
  125.            'name': self.name,
  126.        }        
  127.  
  128. #    column = fields.Many2One('ir.model.field', 'Column', required=True,
  129. #            domain=[('model', '=', Eval('_parent_hierarchy', {}).get('table'))])
  130.  
  131.  
  132. levels_rel = Table(
  133.     'da_levels_rel', Base.metadata,
  134.     Column('hierarchy_id', Integer, ForeignKey('da_hierarchies.id')),
  135.     Column('level_id', Integer, ForeignKey('da_levels.id'))
  136.     )
  137.  
  138. class Hierarchy(Base):
  139.     __tablename__ = 'da_hierarchies'
  140.     id = Column(Integer, primary_key=True)    
  141.     name = Column(String(100))    
  142.     dimension_id = Column(Integer, ForeignKey('da_dimensions.id'))
  143.     dimension = relationship(Dimension, backref="hierarchies")
  144.     levels = relationship("Level", secondary=levels_rel,
  145.             backref="hierarchies")
  146.  
  147.     def __repr__(self):
  148.         return '%r' % (self.name)
  149.  
  150. #
  151. #    table = fields.Many2One('ir.model', 'Table', required=True)
  152. #            domain=[('model', '=', Eval('_parent_dimension', {}).get('foreignkey.relation'))])
  153. #    primarykey = fields.Many2One('ir.model.field', 'Primary Key', required=True,
  154. #            domain=[('model', '=', Eval('_parent_dimension', {}).get('table'))])
  155.  
  156.  
  157. class LevelAttribute(Base):
  158.     __tablename__ = 'da_levelattributes'
  159.     id = Column(Integer, primary_key=True)    
  160.     name = Column(String(100))    
  161.     level_id = Column(Integer, ForeignKey('da_levels.id'))
  162.     level = relationship(Level, backref="levelattributes")
  163.     field_id = Column(Integer, ForeignKey('da_models_fields.id'))
  164.     field = relationship(MigrateModelField, backref="levelattributes")                        
  165.  
  166.     def __repr__(self):
  167.         return '%r' % (self.name)
  168.  
  169. class Attribute(Base):
  170.     __tablename__ = 'da_attributes'
  171.     id = Column(Integer, primary_key=True)    
  172.     name = Column(String(100))    
  173.     dimension_id = Column(Integer, ForeignKey('da_dimensions.id'))
  174.     dimension = relationship(Dimension, backref="attributes")
  175.  
  176.     def __repr__(self):
  177.         return '%r' % (self.name)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement