DotaNoobs main site.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.1 KiB

  1. import simplejson as json
  2. from flask.ext.sqlalchemy import SQLAlchemy
  3. from time import time
  4. from app import db
  5. # Get a little of that Mongoness back
  6. class Json(db.TypeDecorator):
  7. impl = db.Unicode
  8. def process_bind_param(self, value, dialect):
  9. return unicode(json.dumps(value))
  10. def process_result_value(self, value, dialect):
  11. return json.loads(value)
  12. class User(db.Model):
  13. id = db.Column(db.Integer, primary_key=True)
  14. steam_id = db.Column(db.String(40), unique=True)
  15. nickname = db.Column(db.String(80))
  16. avatar = db.Column(db.String(255))
  17. @staticmethod
  18. def get_or_create(steam_id):
  19. rv = User.query.filter_by(steam_id=steam_id).first()
  20. if rv is None:
  21. rv = User()
  22. rv.steam_id = steam_id
  23. db.session.add(rv)
  24. return rv
  25. def __repr__(self):
  26. return '<User {}>'.format(self.steam_id)
  27. class TeamspeakData(db.Model):
  28. id = db.Column(db.Integer, primary_key=True)
  29. time = db.Column(db.Float())
  30. clients = db.Column(Json())
  31. def __init__(self, clientlist):
  32. self.time = time()
  33. self.clients = clientlist