summaryrefslogtreecommitdiff
path: root/server/piztor/model.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/piztor/model.py')
-rw-r--r--server/piztor/model.py85
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
+
+