mirror of
https://gitlab.science.ru.nl/technicie/MarietjeDjango.git
synced 2025-12-09 21:02:24 +01:00
general clean-up
This commit is contained in:
@ -1,9 +1,8 @@
|
||||
from datetime import datetime, timedelta, time
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from django.core.cache import caches
|
||||
from django.conf import settings
|
||||
from django.db.models import Count, Q, Sum
|
||||
from django.shortcuts import render
|
||||
from django.utils import timezone
|
||||
|
||||
from queues.models import PlaylistSong
|
||||
@ -30,49 +29,34 @@ def recache_user_stats():
|
||||
return new_stats
|
||||
|
||||
|
||||
def time_convert(time):
|
||||
try:
|
||||
for tr in time:
|
||||
tr['duration'] = str(round(tr['total'] / 86400, 2)) + ' days'
|
||||
avg_dur_sec = tr['avg_dur'] % 60
|
||||
avg_dur_min = int((tr['avg_dur'] - avg_dur_sec) / 60)
|
||||
tr['avg_dur'] = '{}:{}'.format(avg_dur_min, avg_dur_sec)
|
||||
return time
|
||||
except:
|
||||
avg_dur_sec = round(time % 60)
|
||||
avg_dur_min = int(round((time - avg_dur_sec) / 60))
|
||||
return ('{} minutes and {} seconds'.format(avg_dur_min, avg_dur_sec))
|
||||
|
||||
|
||||
def calculate_uploaders(requests_uploader, most_requested_uploaders):
|
||||
for x in requests_uploader:
|
||||
def best_uploaders_list(requests_uploader, most_requested_uploaders):
|
||||
for requests in requests_uploader:
|
||||
a = len(most_requested_uploaders)
|
||||
b = 0
|
||||
while b <= a:
|
||||
if b == a:
|
||||
adding_list_item(most_requested_uploaders, x)
|
||||
elif x['song__user__id'] == most_requested_uploaders[b]['id']:
|
||||
if x['song__user__name'] == x['user__name']:
|
||||
most_requested_uploaders[b]['own_total'] = x['total']
|
||||
adding_list_item(most_requested_uploaders, requests)
|
||||
elif requests['song__user__id'] == most_requested_uploaders[b]['id']:
|
||||
if requests['song__user__name'] == requests['user__name']:
|
||||
most_requested_uploaders[b]['own_total'] = requests['total']
|
||||
else:
|
||||
most_requested_uploaders[b]['total'] += x['total']
|
||||
most_requested_uploaders[b]['total'] += requests['total']
|
||||
break
|
||||
b += 1
|
||||
return
|
||||
|
||||
|
||||
def adding_list_item(list, x):
|
||||
list.append({
|
||||
'id': x['song__user__id'],
|
||||
'name': x['song__user__name'],
|
||||
def adding_list_item(most_requested_list, requests):
|
||||
# adds a single item to the best_uploaders list
|
||||
most_requested_list.append({
|
||||
'id': requests['song__user__id'],
|
||||
'name': requests['song__user__name'],
|
||||
'total': 0,
|
||||
'own_total': 0
|
||||
})
|
||||
if x['song__user__id'] == x['user__id']:
|
||||
list[-1]['own_total']: x['total']
|
||||
if requests['song__user__id'] == requests['user__id']:
|
||||
most_requested_list[-1]['own_total']: requests['total']
|
||||
else:
|
||||
list[-1]['_total']: x['total']
|
||||
return
|
||||
most_requested_list[-1]['_total']: requests['total']
|
||||
|
||||
|
||||
def compute_stats():
|
||||
@ -137,13 +121,10 @@ def compute_stats():
|
||||
| Q(user_id__in=settings.STATS_REQUEST_IGNORE_USER_IDS)).aggregate(
|
||||
total=Sum('song__duration'))
|
||||
|
||||
total_time_overall = 0
|
||||
count = 0
|
||||
for x in list(time_requested):
|
||||
total_time_overall += x['avg_dur']
|
||||
count += 1
|
||||
total_average = total_time_overall / count
|
||||
total_average = time_convert(total_average)
|
||||
total_time_overall = sum(x['avg_dur'] for x in time_requested)
|
||||
total_average = total_time_overall / len(time_requested)
|
||||
avg_dur_min, avg_dur_sec = divmod(total_average, 60)
|
||||
total_average = '{} minutes and {} seconds'.format(avg_dur_min, avg_dur_sec)
|
||||
|
||||
requests_uploader = PlaylistSong.objects.filter(state=2).exclude(
|
||||
Q(user_id=None)
|
||||
@ -152,7 +133,15 @@ def compute_stats():
|
||||
'user__id').annotate(total=Count('song__user__name'))
|
||||
|
||||
most_requested_uploaders = []
|
||||
calculate_uploaders(list(requests_uploader), most_requested_uploaders)
|
||||
best_uploaders_list(list(requests_uploader), most_requested_uploaders)
|
||||
|
||||
for time in list(time_requested):
|
||||
# converts total time and average time in respectively days and minutes, seconds
|
||||
time['duration'] = str(round(time['total'] / 86400, 2)) + ' days'
|
||||
avg_dur_min, avg_dur_sec = divmod(time['avg_dur'], 60)
|
||||
if avg_dur_sec < 10:
|
||||
avg_dur_sec = '0' + str(avg_dur_sec)
|
||||
time['avg_dur'] = '{}:{}'.format(avg_dur_min, avg_dur_sec)
|
||||
|
||||
return {
|
||||
'last_updated': last_updated,
|
||||
@ -164,10 +153,11 @@ def compute_stats():
|
||||
'total_unique_requests': total_unique_requests,
|
||||
'most_played_songs': list(most_played_songs),
|
||||
'most_played_songs_14_days': list(most_played_songs_14_days),
|
||||
'time_requested': time_convert(list(time_requested)),
|
||||
'time_requested': time_requested,
|
||||
'total_time_requested': str(round(float(total_time_requested['total']) / 86400, 2)) + ' days',
|
||||
'stats_top_count': settings.STATS_TOP_COUNT,
|
||||
'most_requested_uploaders': list(most_requested_uploaders),
|
||||
'total_average': total_average,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -2,8 +2,6 @@ from datetime import datetime, timedelta
|
||||
|
||||
from django.core.cache import caches
|
||||
from django.shortcuts import render
|
||||
from stats.utils import user_stats
|
||||
from django.http import JsonResponse, HttpResponseForbidden
|
||||
|
||||
|
||||
def stats(request):
|
||||
|
||||
Reference in New Issue
Block a user