database.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. """Database module"""
  2. from datetime import datetime, timedelta
  3. from app import SESSION
  4. from app.models import Player, Department, DepartmentStat
  5. def get_latest_professor(state_id, department_type):
  6. """Get latest professor from database"""
  7. session = SESSION()
  8. department = get_department(session, state_id, department_type)
  9. professor = department.department_stats.order_by(DepartmentStat.date_time.desc()).first()
  10. session.close()
  11. return professor
  12. def get_player(session, player_id, player_name):
  13. """Get player from database"""
  14. player = session.query(Player).get(player_id)
  15. if player is None:
  16. player = Player()
  17. player.id = player_id
  18. player.name = player_name
  19. session.add(player)
  20. session.commit()
  21. return player
  22. def get_department(session, state_id, department_type):
  23. """Get department from database"""
  24. department = session.query(Department).filter(
  25. Department.state_id == state_id
  26. ).filter(
  27. Department.department_type == department_type
  28. ).first()
  29. if department is None:
  30. department = Department()
  31. department.state_id = state_id
  32. department.department_type = department_type
  33. session.add(department)
  34. session.commit()
  35. return department
  36. def save_professors(state_id, department_type, professors):
  37. """Save professors to database"""
  38. session = SESSION()
  39. department = get_department(session, state_id, department_type)
  40. for professor in professors:
  41. player = get_player(session, professor['id'], professor['name'])
  42. department_stat = DepartmentStat()
  43. department_stat.department_id = department.id
  44. department_stat.date_time = professor['date_time']
  45. department_stat.points = professor['points']
  46. department_stat.player_id = player.id
  47. session.add(department_stat)
  48. session.commit()
  49. session.close()
  50. def get_yesterday_professors(state_id, department_type):
  51. """Get professors from yesterday"""
  52. session = SESSION()
  53. department = get_department(session, state_id, department_type)
  54. until_date = datetime.today()
  55. if until_date.hour < 19:
  56. until_date = until_date - timedelta(1)
  57. until_date = until_date.replace(hour=19, minute=0, second=0)
  58. from_date = until_date - timedelta(1)
  59. professors = session.query(DepartmentStat) \
  60. .filter(DepartmentStat.department_id == department.id) \
  61. .filter(DepartmentStat.date_time >= from_date) \
  62. .filter(DepartmentStat.date_time < until_date) \
  63. .all()
  64. return professors
  65. def get_amount_of_points(state_id, department_type, player_id):
  66. """Get amount of points in department by player id"""
  67. session = SESSION()
  68. department = get_department(session, state_id, department_type)
  69. until_date = datetime.today()
  70. if until_date.hour < 19:
  71. until_date = until_date - timedelta(1)
  72. until_date = until_date.replace(hour=19, minute=0, second=0)
  73. from_date = until_date - timedelta(14)
  74. professors = session.query(DepartmentStat) \
  75. .filter(DepartmentStat.department_id == department.id) \
  76. .filter(DepartmentStat.player_id == player_id) \
  77. .filter(DepartmentStat.date_time >= from_date) \
  78. .filter(DepartmentStat.date_time < until_date) \
  79. .all()
  80. total_points = 0
  81. for professor in professors:
  82. total_points += professor.points
  83. return total_points