-
Notifications
You must be signed in to change notification settings - Fork 0
/
user_states.py
46 lines (35 loc) · 1.33 KB
/
user_states.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import datetime
import sys
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from server.alchemy import SQLUser, SQLContact
def main(username):
db_engine = create_engine('sqlite:///server.db')
total = 0
data_count = []
data_date = []
session = sessionmaker(bind=db_engine)()
user = session.query(SQLUser).filter(SQLUser.login.ilike(username)).first()
if user:
contacts = session.query(SQLContact).filter(SQLContact.user.is_(user.gid)).order_by(SQLContact.created_date.asc()).all()
for contact in contacts:
total += 1
data_count.append(total)
data_date.append(contact.created_date)
if data_count:
fg = plt.figure()
fg.suptitle('Количество контактов для пользователя {}'.format(username))
gca = fg.gca()
gca.xaxis.set_major_locator(MaxNLocator(integer=True))
plt.plot(data_count, data_date)
plt.show()
else:
print('Пользователь не найден, или у него нет контактов')
if __name__ == '__main__':
args = sys.argv
if len(args) != 2:
print('Usage: python3 user_states.py USERNAME')
username = args[1]
main(username)