class DataItem(db.Model): __tablename__ = 'data_item' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) update_time = db.Column(db.DateTime) def __init__(self, name, update_time): self.name = name self.update_time = update_time def __repr__(self): return '<User %r>' % self.name
class InvestWarning(db.Model): __tablename__ = 'invest_warning' id = db.Column(db.Integer, primary_key=True) author = db.Column(db.String(50)) content = db.Column(db.String(2000)) created_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, author, content): self.author = author self.content = content def __repr__(self): return '<InvestWarning %r>' % self.id
class Role(db.Model): """Represents Proected roles.""" __tablename__ = 'roles' id = db.Column(db.String(45), primary_key=True) name = db.Column(db.String(255), unique=True) description = db.Column(db.String(255)) def __init__(self): self.id = str(uuid4()) def __repr__(self): return "<Model Role `{}`>".format(self.id)
class RelationStock(db.Model): __tablename__ = 'relation_stocks' id = db.Column(db.Integer, primary_key=True) main_stock = db.Column(db.String(255)) relation_stock = db.Column(db.String(255)) user_id = db.Column(db.String(45)) created_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, mcode, scode): self.main_stock = mcode self.relation_stock = scode def __repr__(self): return '<RelationStock %r>' % self.id
class ReqErrorLog(db.Model): __tablename__ = 'req_error_log' id = db.Column(db.Integer, primary_key=True) action = db.Column(db.String(50)) key = db.Column(db.String(255)) msg = db.Column(db.String(2000)) created_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, action, key, msg): self.action = action self.key = key self.msg = msg def __repr__(self): return '<ReqErrorLog %r>' % self.id
class FinanceBasic(db.Model): __tablename__ = 'hexun_finance_basic' id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(255)) report_type = db.Column(db.String(255)) mgsy = db.Column(db.Numeric) mgjzc = db.Column(db.Numeric) mgjyxjl = db.Column(db.Numeric) yysr = db.Column(db.Numeric) kjlr = db.Column(db.Numeric) jyjxjl = db.Column(db.Numeric) def __init__(self): pass def __repr__(self): return '<FinanceBasic %r>' % self.name
class MyStockFavor(db.Model): __tablename__ = 'my_stock_favor' id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(255)) title = db.Column(db.String(255)) url = db.Column(db.String(255)) src_type = db.Column(db.String(50)) pub_date = db.Column(db.Date) user_id = db.Column(db.String(45)) created_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, code, title, url, pub_date, src_type): self.code = code self.title = title self.url = url self.pub_date = pub_date self.src_type = src_type def __repr__(self): return '<MyStockFavor %r>' % self.id
class Comment(db.Model): __tablename__ = 'comments' id = db.Column(db.String(45), primary_key=True) stock = db.Column(db.String(255)) user_id = db.Column(db.String(45)) ct_flag = db.Column(db.String(10), default="-1") content = db.Column(db.String(255)) parent_id = db.Column(db.String(45)) created_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, stock, content): self.id = str(uuid4()) self.stock = stock self.content = content def __repr__(self): return '<Comment %r>' % self.id
class MyHolderFavor(db.Model): __tablename__ = 'my_holder_favor' id = db.Column(db.Integer, primary_key=True) holder_code = db.Column(db.String(255)) holder_name = db.Column(db.String(255)) amt = db.Column(db.Integer, default=1) user_id = db.Column(db.String(45)) created_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, code, name, uid): self.holder_code = code self.holder_name = name self.user_id = uid def __repr__(self): return '<MyHolderFavor %r>' % self.id
class User(db.Model): """Represents Proected users.""" # Set the name for table __tablename__ = 'users' id = db.Column(db.String(45), primary_key=True) username = db.Column(db.String(50)) password = db.Column(db.String(255)) last_login_time = db.Column(db.DateTime, default=datetime.now) # many to many: user <==> roles roles = db.relationship('Role', secondary=users_roles, backref=db.backref('users', lazy='dynamic')) def __init__(self, username, password): self.id = str(uuid4()) self.username = username self.password = self.set_password(password) # Setup the default-role for user. default = Role.query.filter_by(name="default").one() self.roles.append(default) def __repr__(self): """Define the string format for instance of User.""" return "<Model User `{}`>".format(self.id) def set_password(self, password): """Convert the password to cryptograph via flask-bcrypt""" return bcrypt.generate_password_hash(password) def check_password(self, password): """Check the entry-password whether as same as user.password.""" return bcrypt.check_password_hash(self.password, password) def is_authenticated(self): """Check the user whether logged in.""" # Check the User's instance whether Class AnonymousUserMixin's instance. if isinstance(self, AnonymousUserMixin): return False else: return True def is_active(): """Check the user whether pass the activation process.""" return True def is_anonymous(self): """Check the user's login status whether is anonymous.""" if isinstance(self, AnonymousUserMixin): return True else: return False def get_id(self): """Get the user's uuid from database.""" return unicode(self.id) @staticmethod @cache.memoize(60) def verify_auth_token(token): """Validate the token whether is night.""" serializer = Serializer(current_app.config['SECRET_KEY']) try: # serializer object already has tokens in itself and wait for # compare with token from HTTP Request /api/posts Method `POST`. data = serializer.loads(token) except SignatureExpired: return None except BadSignature: return None user = User.query.filter_by(id=data['id']).first() return user
class MyStock(db.Model): __tablename__ = 'my_stocks' id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(255)) name = db.Column(db.String(255)) market = db.Column(db.String(255)) user_id = db.Column(db.String(45)) tag = db.Column(db.String(255)) flag = db.Column(db.Integer, default=1) in_price = db.Column(db.Numeric, default=0) in_date = db.Column(db.Date) created_time = db.Column(db.DateTime, default=datetime.now) updated_time = db.Column(db.DateTime, default=datetime.now) def __init__(self, code, name, market): self.code = code self.name = name self.market = market self.tag = '' def __repr__(self): return '<MyStock %r>' % self.id @property def ncode(self): return self.market + self.code
class Stock(db.Model): __tablename__ = 'stock_basic' id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(255)) name = db.Column(db.String(255)) flag = db.Column(db.String(5)) industry = db.Column(db.String(255)) area = db.Column(db.String(255)) zgb = db.Column(db.Numeric) ltgb = db.Column(db.Numeric) launch_date = db.Column(db.Date) latest_report = db.Column(db.Date) holder_updated_time = db.Column(db.DateTime) trade_updated_time = db.Column(db.DateTime) finance_updated_time = db.Column(db.DateTime) desc = db.Column(db.String(500)) grow_type = db.Column(db.String(3)) def __init__(self, name, code): self.name = name self.code = code def __repr__(self): return '<Stock %r>' % self.id @classmethod def find_by_code(self, cd): return Stock.query.filter_by(code=cd, flag=0).first() @property def current_price(self): try: data = self.query_trade_data() return round(float(data[3]), 2) except: return None def query_trade_data(self): url = "http://hq.sinajs.cn/list=" + self.code req = urllib2.Request(url) res_data = urllib2.urlopen(req).read() match = re.search(r'".*"', res_data).group(0) trade_data = match.split(',') return trade_data