1- from tigaserver_app .models import Report , TigaUser , TigaProfile , Award
1+ from tigaserver_app .models import Report , TigaUser , Award
22from tigaserver_project import settings as conf
33import pandas as pd
44import datetime
@@ -324,106 +324,17 @@ def get_unrelated_awards_score( user_uuid, user_uuids ):
324324# return str(diff.days) + _(" days ago")
325325
326326
327- def compute_user_score_in_xp_v2_fast (user_uuid ):
327+ def compute_user_score_in_xp_v2 (user_uuid ):
328328
329329 user = TigaUser .objects .get (pk = user_uuid )
330330 user_uuids = None
331331 if user .profile is not None :
332332 user_uuids = TigaUser .objects .filter (profile = user .profile ).values ('user_UUID' )
333333
334- result = {}
335- result ['total_score' ] = 0
336- result ['user_uuid' ] = user_uuid
337- result ['score_detail' ] = {}
338-
339- if user_uuids is None :
340- user_reports = Report .objects .filter (user__user_UUID = user_uuid ).order_by ('-creation_time' )
341- else :
342- user_reports = Report .objects .filter (user__user_UUID__in = user_uuids ).order_by ('-creation_time' )
343-
344- adults = user_reports .filter (type = 'adult' )
345- #bites = user_reports.filter(type='bite')
346- sites = user_reports .filter (type = 'site' )
347-
348- adult_last_versions = adults .non_deleted ().all ()
349- #bite_last_versions = bites.non_deleted().all()
350- site_last_versions = sites .non_deleted ().all ()
351-
352- results_adult = {}
353- results_adult ['score' ] = 0
354- results_adult ['score_items' ] = []
355- result ['score_detail' ]['adult' ] = results_adult
356-
357- adult_score = 0
358- for report in adult_last_versions :
359- result = get_adult_report_score (report , result )
360- index = len (result ['score_detail' ]['adult' ]['score_items' ]) - 1
361- result ['score_detail' ]['adult' ]['score' ] += result ['score_detail' ]['adult' ]['score_items' ][index ][
362- 'report_score' ]
363- adult_score += result ['score_detail' ]['adult' ]['score_items' ][index ]['report_score' ]
364- result ['total_score' ] += adult_score
365-
366- '''
367- results_bite = {}
368- results_bite['score'] = 0
369- results_bite['score_items'] = []
370- result['score_detail']['bite'] = results_bite
371-
372- bite_score = 0
373- for report in bite_last_versions:
374- result = get_bite_report_score(report, result)
375- index = len(result['score_detail']['bite']['score_items']) - 1
376- result['score_detail']['bite']['score'] += result['score_detail']['bite']['score_items'][index]['report_score']
377- bite_score += result['score_detail']['bite']['score_items'][index]['report_score']
378- result['total_score'] += bite_score
379- '''
380-
381- results_site = {}
382- results_site ['score' ] = 0
383- results_site ['score_items' ] = []
384- result ['score_detail' ]['site' ] = results_site
385-
386- site_score = 0
387- for report in site_last_versions :
388- result = get_site_report_score (report , result )
389- index = len (result ['score_detail' ]['site' ]['score_items' ]) - 1
390- result ['score_detail' ]['site' ]['score' ] += result ['score_detail' ]['site' ]['score_items' ][index ]['report_score' ]
391- site_score += result ['score_detail' ]['site' ]['score_items' ][index ]['report_score' ]
392- result ['total_score' ] += site_score
393-
394- unrelated_score = get_unrelated_awards_score (user_uuid , user_uuids )
395-
396- result ['total_score' ] += unrelated_score ['score' ]
397-
398- return result
399-
400-
401- def get_uuid_replicas ():
402- profiles = TigaProfile .objects .all ()
403- exclude = []
404- for p in profiles :
405- if p .profile_devices .count () > 1 :
406- i = 0
407- for d in p .profile_devices .all ().order_by ('user_UUID' ):
408- if i > 0 :
409- exclude .append (d .user_UUID )
410- i += 1
411- return exclude
412-
413-
414- def compute_user_score_in_xp_v2 (user_uuid , update = False ):
415-
416- user = TigaUser .objects .get (pk = user_uuid )
417- user_uuids = None
418- if user .profile is not None :
419- user_uuids = TigaUser .objects .filter (profile = user .profile ).values ('user_UUID' )
420-
421- uuid_replicas = get_uuid_replicas ()
422-
423- qs_overall = TigaUser .objects .exclude (score_v2 = 0 ).exclude (user_UUID__in = uuid_replicas )
424- qs_adult = TigaUser .objects .exclude (score_v2_adult = 0 ).exclude (user_UUID__in = uuid_replicas )
425- qs_site = TigaUser .objects .exclude (score_v2_site = 0 ).exclude (user_UUID__in = uuid_replicas )
426- #qs_bite = TigaUser.objects.exclude(score_v2_bite=0).exclude(user_UUID__in=uuid_replicas)
334+ qs_overall = TigaUser .objects .exclude (score_v2 = 0 )
335+ qs_adult = TigaUser .objects .exclude (score_v2_adult = 0 )
336+ qs_site = TigaUser .objects .exclude (score_v2_site = 0 )
337+ #qs_bite = TigaUser.objects.exclude(score_v2_bite=0)
427338
428339 overall_df = pd .DataFrame (list (qs_overall .values_list ('score_v2' , 'user_UUID' )), columns = ['score_v2' , 'user_UUID' ])
429340 adult_df = pd .DataFrame (list (qs_adult .values_list ('score_v2_adult' , 'user_UUID' )), columns = ['score_v2_adult' , 'user_UUID' ])
@@ -461,12 +372,7 @@ def compute_user_score_in_xp_v2(user_uuid, update=False):
461372 #rank_value_bite = get_user_rank_value(bite_sorted_df, user_uuid)
462373 #min_max_bite = get_min_max(bite_sorted_df, 'score_v2_bite')
463374
464- current_date = datetime .date .today ()
465- if user is not None :
466- result ['joined_value' ] = user .registration_time .strftime ("%d/%m/%Y" )
467- #result['joined_label'] = get_elapsed_label(current_date, user.registration_time.date())
468- else :
469- result ['joined_value' ] = None
375+ result ['joined_value' ] = user .registration_time .strftime ("%d/%m/%Y" )
470376
471377 if user_uuids is None :
472378 user_reports = Report .objects .filter (user__user_UUID = user_uuid ).order_by ('-creation_time' )
@@ -494,7 +400,7 @@ def compute_user_score_in_xp_v2(user_uuid, update=False):
494400 result ['score_detail' ]['adult' ] = results_adult
495401
496402 adult_score = 0
497- for report in adult_last_versions :
403+ for report in adult_last_versions . iterator () :
498404 result = get_adult_report_score (report , result )
499405 index = len (result ['score_detail' ]['adult' ]['score_items' ]) - 1
500406 result ['score_detail' ]['adult' ]['score' ] += result ['score_detail' ]['adult' ]['score_items' ][index ]['report_score' ]
@@ -508,7 +414,7 @@ def compute_user_score_in_xp_v2(user_uuid, update=False):
508414
509415 '''
510416 bite_score = 0
511- for report in bite_last_versions:
417+ for report in bite_last_versions.iterator() :
512418 result = get_bite_report_score(report, result)
513419 index = len(result['score_detail']['bite']['score_items']) - 1
514420 result['score_detail']['bite']['score'] += result['score_detail']['bite']['score_items'][index]['report_score']
@@ -522,7 +428,7 @@ def compute_user_score_in_xp_v2(user_uuid, update=False):
522428 result ['score_detail' ]['site' ] = results_site
523429
524430 site_score = 0
525- for report in site_last_versions :
431+ for report in site_last_versions . iterator () :
526432 result = get_site_report_score (report , result )
527433 index = len (result ['score_detail' ]['site' ]['score_items' ]) - 1
528434 result ['score_detail' ]['site' ]['score' ] += result ['score_detail' ]['site' ]['score_items' ][index ]['report_score' ]
@@ -587,18 +493,6 @@ def compute_user_score_in_xp_v2(user_uuid, update=False):
587493 result ['score_detail' ]['site' ]['top_perc' ] = (float (site_number_below_rank ) / float (site_number_total )) * 100.0
588494 result ['score_detail' ]['site' ]['ranked_users' ] = site_number_total
589495
590- if update :
591- if user_uuids is not None :
592- all_users_in_profile = TigaUser .objects .filter (user_UUID__in = user_uuids )
593- all_users_in_profile .update (score_v2 = result ['total_score' ])
594- all_users_in_profile .update (score_v2_adult = result ['score_detail' ]['adult' ]['score' ])
595- all_users_in_profile .update (score_v2_site = result ['score_detail' ]['site' ]['score' ])
596- else :
597- user .score_v2 = result ['total_score' ]
598- user .score_v2_adult = result ['score_detail' ]['adult' ]['score' ]
599- user .score_v2_site = result ['score_detail' ]['site' ]['score' ]
600- user .save ()
601-
602496 '''
603497 if bite_number_below_rank == 0 and bite_number_total == 0:
604498 result['score_detail']['bite']['top_perc'] = 100.0
@@ -610,14 +504,6 @@ def compute_user_score_in_xp_v2(user_uuid, update=False):
610504 return result
611505
612506
613- def compute_all_user_scores ():
614- all_users = TigaUser .objects .all ()
615- for user in all_users :
616- score = compute_user_score_in_xp_v2 ( user .user_UUID )
617- user .score_v2 = score
618- user .save ()
619-
620-
621507def get_all_user_reports (user_uuid ):
622508 user = TigaUser .objects .get (pk = user_uuid )
623509 user_uuids = None
0 commit comments