diff options
Diffstat (limited to 'server/piztor/model.py')
-rw-r--r-- | server/piztor/model.py | 85 |
1 files changed, 41 insertions, 44 deletions
diff --git a/server/piztor/model.py b/server/piztor/model.py index b1a7804..03c0192 100644 --- a/server/piztor/model.py +++ b/server/piztor/model.py @@ -3,6 +3,7 @@ from sqlalchemy import Integer, String, Float, ForeignKey, Boolean from sqlalchemy.dialects.mysql import BLOB, TINYINT from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship, backref +from exc import * Base = declarative_base() @@ -20,18 +21,25 @@ class _TableName: # avoid typoes UserModel = 'users' LocationInfo = 'location_info' UserAuth = 'user_auth' - CompanyInfo = 'comp_info' - SectionInfo = 'sec_info' - CompanySub = 'comp_sub' - SectionSub = 'sec_sub' - -#comp_sub_assoc = Table(_TableName.CompanySub, Base.metadata, -# Column('uid', Integer, ForeignKey(_TableName.UserModel + '.id')), -# Column('comp_id', Integer, ForeignKey(_TableName.CompanyInfo + '.id'))) -# -#sec_sub_assoc = Table(_TableName.SectionSub, Base.metadata, -# Column('uid', Integer, ForeignKey(_TableName.UserModel + '.id')), -# Column('sec_id', Integer, ForeignKey(_TableName.SectionInfo + '.id'))) + GroupInfo = 'group_info' + GroupSub = 'group_sub' + + +class GroupInfo(Base): + __tablename__ = _TableName.GroupInfo + __table_args__ = _table_typical_settings + + id = Column(Integer, primary_key = True) + subscribers = None + + def __init__(self, gid): + self.id = gid + +group_sub = Table(_TableName.GroupSub, Base.metadata, + Column('uid', Integer, ForeignKey(_TableName.UserModel + '.id')), + Column('gid', Integer, ForeignKey(_TableName.GroupInfo + '.id')), + mysql_engine = 'InnoDB') + class UserModel(Base): __tablename__ = _TableName.UserModel @@ -39,24 +47,31 @@ class UserModel(Base): id = Column(Integer, primary_key = True) username = Column(String(MAX_USERNAME_SIZE), unique = True, nullable = False) - + nickname = Column(String(MAX_USERNAME_SIZE), + unique = False) sex = Column(Boolean, nullable = False) - sec_no = Column(TINYINT) -# comp_id = Column(TINYINT, ForeignKey(_TableName.CompanyInfo + '.id')) - comp_id = Column(TINYINT) -# sec_id = Column(TINYINT, ForeignKey(_TableName.SectionInfo + '.id')) + comp_id = Column(Integer) sec_id = Column(Integer) -# comp_sub = relationship(_TableName.CompanyInfo, -# secondary = comp_sub_assoc, -# backref = "subscribers") -# sec_sub = relationship(_TableName.SectionInfo, -# secondary = sec_sub_assoc, -# backref = "subscribers") + sub = relationship("GroupInfo", + secondary = group_sub, + backref = "subscribers") location = None auth = None - sec = None + + @classmethod + def to_gid(self, comp_no, sec_no): + return comp_no * 256 + sec_no + + def __init__(self, username, nickname, sex, comp_no, sec_no): + self.username = username + self.nickname = nickname + self.sex = sex + self.comp_id = UserModel.to_gid(comp_no, 0xff) + self.sec_id = UserModel.to_gid(comp_no, sec_no) + self.sub = list() + class LocationInfo(Base): __tablename__ = _TableName.LocationInfo @@ -117,23 +132,5 @@ class UserAuth(Base): def get_token(self): return self.token -# -#class CompanyInfo(Base): -# __tablename__ = _TableName.CompanyInfo -# __table_args__ = _table_typical_settings -# -# id = Column(TINYINT, primary_key = True) -# marker_lat = Column(Float(precesion = 64), nullable = False) -# marker_lng = Column(Float(precesion = 64), nullable = False) -# -# subscribers = None -# -#class SectionInfo(Base): -# __tablename__ = _TableName.SectionInfo -# __table_args__ = _table_typical_settings -# -# id = Column(TINYINT, primary_key = True) -# marker_lat = Column(Float(precesion = 64), nullable = False) -# market_lng = Column(Float(precesion = 64), nullable = False) -# -# subscribers = None + + |