-
- import json
- from datetime import date
-
- from sqlalchemy import (
- Column, Integer, String, Boolean, Date, Enum
- )
-
- from model import Base
-
-
- class User(Base):
- __tablename__ = 'accounts'
-
- name = Column(String(24), primary_key=True, unique=True)
- password = Column(String(10))
- ip = Column(String(16))
- register_date = Column(Date())
- last_on = Column(Date())
- loggedin = Column(Boolean())
- vip = Column(Integer())
- level = Column(Integer())
- kills = Column(Integer())
- deaths = Column(Integer())
- money = Column(Integer())
- score = Column(Integer())
- skin = Column(Integer())
- useskin = Column(Enum('0', '1'))
- times_on_server = Column(Integer())
- horseshoe = Column(Integer())
- bank = Column(Integer())
- gang_bank = Column(Integer())
- pmoff = Column(Boolean())
- weed = Column(Integer())
- gang = Column(Integer())
- condoms = Column(Integer())
- first_time = Column(Boolean())
-
- def __init__(self, name, password, **kwargs):
- super(User, self).__init__(**kwargs)
- self.name = name
- self.password = self.password_hash(password)
- self.register_date = kwargs.get('register_date', date.today())
- self.last_on = kwargs.get('last_on', date.today())
-
- def to_json(self):
- return json.dumps({'player': self.to_dict()})
-
- def to_dict(self):
- return {
- 'name': self.name,
- 'score': self.score,
- 'money': self.money,
- 'level': self.level,
- 'vip': self.vip,
- 'register_date': str(self.register_date),
- 'last_on': str(self.last_on),
- 'loggedin': self.loggedin,
- 'kills': self.kills,
- 'deaths': self.deaths,
- 'ratio': '{:.3f}'.format(self.kills / float(self.deaths)) if self.deaths else 0,
- 'times_on_server': self.times_on_server,
- }
-
- def auth(self, password):
- return self.password_hash(password) == int(self.password)
-
- @staticmethod
- def password_hash(password):
- s1 = 1
- s2 = 0
- for n in password:
- s1 = (s1 + ord(n)) % 65521
- s2 = (s2 + s1) % 65521
- return (s2 << 16) + s1
-