2024-01-31 21:41:29 +01:00

235 lines
8.3 KiB
Python

# %%
PROJECT_PATH = '/home/md/Work/ligalytics/leagues_stable/'
import os, sys
sys.path.insert(0, PROJECT_PATH)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "leagues.settings")
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
from leagues import settings
# settings.DATABASES['default']['NAME'] = PROJECT_PATH+'/db.sqlite3'
settings.DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'
settings.DATABASES['default']['HOST'] = '0.0.0.0'
settings.DATABASES['default']['PORT'] = '5432'
settings.DATABASES['default']['USER'] = 'postgres'
settings.DATABASES['default']['PASSWORD'] = 'secret123'
settings.DATABASES['default']['NAME'] = 'mypgsqldb'
settings.DATABASES['default']['ATOMIC_REQUESTS'] = False
settings.DATABASES['default']['AUTOCOMMIT'] = True
settings.DATABASES['default']['CONN_MAX_AGE'] = 0
settings.DATABASES['default']['CONN_HEALTH_CHECKS'] = False
settings.DATABASES['default']['OPTIONS'] = {}
import django
django.setup()
from scheduler.models import *
from common.models import *
from common.stats.models import *
import csv
import datetime
# %%
# MOST ACTIVE
login_dict = defaultdict(lambda:0)
browsers = defaultdict(lambda:0)
devices = defaultdict(lambda:0)
with open('analyze_access.log', newline='') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
date = datetime.datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S')
splitstr = row[1].split('LOGGED IN:')
if len(splitstr) > 1:
kind = splitstr[0].split('INFO')[1].strip()
user = splitstr[1].split('from')[0].strip()
plattform = splitstr[1].split('with (')
if len(plattform) > 1:
plattform = plattform[1].split('/')[0].strip()
login_dict[(kind,user)] += 1
if 'Firefox' in row[1]:
browsers['Firefox'] += 1
if 'Chrome' in row[1]:
browsers['Chrome'] += 1
if 'Safari' in row[1]:
browsers['Safari'] += 1
if 'Edge' in row[1]:
browsers['Edge'] += 1
if 'Opera' in row[1]:
browsers['Opera'] += 1
if 'MSIE' in row[1]:
browsers['MSIE'] += 1
if 'Trident' in row[1]:
browsers['Trident'] += 1
if 'Netscape' in row[1]:
browsers['Netscape'] += 1
if 'Mozilla' in row[1]:
browsers['Mozilla'] += 1
if 'AppleWebKit' in row[1]:
browsers['AppleWebKit'] += 1
if 'Gecko' in row[1]:
browsers['Gecko'] += 1
if 'KHTML' in row[1]:
browsers['KHTML'] += 1
if 'iPhone' in row[1]:
devices['iPhone'] += 1
elif 'PC' in row[1]:
devices['PC'] += 1
elif 'K' in row[1]:
devices['Android'] += 1
elif 'Other' in row[1]:
devices['other'] += 1
browsers = sorted(browsers.items(), key=lambda x:x[1], reverse=True)[:10]
devices = sorted(devices.items(), key=lambda x:x[1], reverse=True)[:10]
# %%
login_dict = sorted(login_dict.items(), key=lambda x:x[1], reverse=True)
# %%
# Monday = 0
weekday_dict = defaultdict(lambda:[0,0,0,0,0,0,0])
weekday_ranking = [0,0,0,0,0,0,0]
hours_dict = defaultdict(lambda:[0]*24)
hours_ranking = [0]*24
clicks_per_day = defaultdict(lambda:defaultdict(lambda:0))
active_days = defaultdict(lambda:set())
active_hours = defaultdict(lambda:set())
wishes_added = defaultdict(lambda:0)
logouts = defaultdict(lambda:0)
solutions = defaultdict(lambda:0)
days = defaultdict(lambda:0)
deletions = defaultdict(lambda:0)
downloads = defaultdict(lambda:0)
actions = defaultdict(lambda:0)
active_teams = defaultdict(lambda:0)
active_clubs = defaultdict(lambda:0)
with open('analyze_info.log', newline='') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
date = datetime.datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S')
verbose = row[1].split('INFO')
if len(verbose) > 1:
user = verbose[1].split(':')[0].strip()
kind = verbose[1].split(':')[1].strip()
if user == 'md':
user = 'martin'
weekday_dict[user][date.weekday()] += 1
weekday_ranking[date.weekday()] += 1
hours_dict[user][date.hour] += 1
hours_ranking[date.hour] += 1
actions[user] += 1
clicks_per_day[user][date.strftime("%Y-%m-%d")] += 1
active_days[user].add(date.strftime("%Y-%m-%d"))
active_hours[user].add(date.strftime("%Y-%m-%d %H"))
if '/add/' in kind:
wishes_added[user] += 1
if kind == '/accounts/logout/':
logouts[user] += 1
if kind == '/schedule_sol/':
solutions[user] += 1
if 'day' in kind:
days[user] += 1
if 'delete' in kind:
deletions[user] += 1
if 'download' in kind:
downloads[user] += 1
if user == "SINGLETEAM":
active_teams[kind.split('/')[0].strip()] += 1
if user == "CLUB":
active_clubs[kind.split('/')[0].strip()] += 1
downloads = sorted(downloads.items(), key=lambda x:x[1], reverse=True)[:10]
wishes_added = sorted(wishes_added.items(), key=lambda x:x[1], reverse=True)[:10]
logouts = sorted(logouts.items(), key=lambda x:x[1], reverse=True)[:10]
solutions = sorted(solutions.items(), key=lambda x:x[1], reverse=True)[:10]
days = sorted(days.items(), key=lambda x:x[1], reverse=True)[:10]
deletions = sorted(deletions.items(), key=lambda x:x[1], reverse=True)[:10]
active_days = [(user,len(active_days[user])) for user in active_days]
active_days = sorted(active_days, key=lambda x:x[1], reverse=True)[:10]
active_hours = [(user,len(active_hours[user])) for user in active_hours]
active_hours = sorted(active_hours, key=lambda x:x[1], reverse=True)[:10]
actions = sorted(actions.items(), key=lambda x:x[1], reverse=True)[:10]
active_teams = sorted(active_teams.items(), key=lambda x:x[1], reverse=True)[:10]
active_clubs = sorted(active_clubs.items(), key=lambda x:x[1], reverse=True)[:10]
for user in clicks_per_day:
clicks_per_day[user] = sorted(clicks_per_day[user].items(), key=lambda x:x[1], reverse=True)
# %%
staff_user = ['martin','stephanwestphal','dirk','philipp','Kilian']
actions = {
u[0]:u[1] for u in actions
}
active = {
u[0]:u[1] for u in active_days
}
for user in staff_user:
print(user)
print(actions[user]//active[user])
# for s in staff_user:
# print(s)
# print(weekday_dict[s])
# print(hours_dict[s])
# print('')
# # %%
# commits_per_hour = "{"0":15,"1":9,"2":5,"3":6,"4":3,"5":1,"6":22,"7":28,"8":63,"9":111,"10":161,"11":194,"12":160,"13":141,"14":145,"15":150,"16":145,"17":131,"18":85,"19":93,"20":110,"21":112,"22":76,"23":34}"
# commits_per_weekday = "{"Sunday":135,"Monday":338,"Tuesday":341,"Wednesday":388,"Thursday":388,"Friday":302,"Saturday":108}"
# commits_per_hour = json.loads(commits_per_hour.replace('"','"'))
# commits_per_weekday = json.loads(commits_per_weekday.replace('"','"'))
# %%
import json
with open('trello.json') as f:
data = json.load(f)
created = defaultdict(lambda:0)
for a in data['actions']:
if a['type'] == 'createCard':
created[a['memberCreator']['fullName']] += 1
# %%
# MOST SCENARIOS
scenarios = {}
for league in League.objects.all():
scenarios[league.name] = Scenario.objects.filter(season__league=league,lastComputation__gte=datetime.datetime(2023,1,1)).count()
scenarios = sorted(scenarios.items(), key=lambda x:x[1], reverse=True)
# %%
# MOST WISHES
wishes = {}
for league in League.objects.all():
for scenario in Scenario.objects.filter(season__league=league,lastComputation__gte=datetime.datetime(2023,1,1)):
wishes[league.name] = HAWish.objects.filter(scenario=scenario).count()+EncWish.objects.filter(scenario=scenario).count()+Blocking.objects.filter(scenario=scenario).count()+Pairing.objects.filter(scenario=scenario).count()
wishes = sorted(wishes.items(), key=lambda x:x[1], reverse=True)[:10]
# %%