# %% 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] # %%