[docs]classCommand(BaseCommand):help="Generate similarities for all activities"defadd_arguments(self,parser):parser.add_argument("--run",action="store_true",dest="run",default=False,help="Run.")defhandle(self,*args,**options):print(EighthActivitySimilarity.objects.all().delete())start=time.time()acts=(EighthActivity.objects.all().exclude(restricted=True).exclude(special=True).exclude(administrative=True).exclude(deleted=True).order_by("name"))foractinacts:start_act=time.time()freq_users=act.frequent_usersforu_infoinfreq_users:u_id=u_info["eighthsignup_set__user"]foract_infoinget_user_model().objects.get(id=u_id).frequent_signups.exclude(scheduled_activity__activity=act):act_id=act_info["scheduled_activity__activity"]act2=EighthActivity.undeleted_objects.get(id=act_id)ifEighthActivitySimilarity.objects.filter(activity_set__id=act.id).filter(activity_set__id=act2.id).exists():sim=EighthActivitySimilarity.objects.filter(activity_set__id=act.id).filter(activity_set__id=act2.id).first()sim.count+=1else:sim=EighthActivitySimilarity.objects.create(count=0,weighted=0)sim.activity_set.add(act,act2)sim.count=1sim.save()print(f"Finished similarities for {act} in {time.time()-start_act} seconds")foractinacts:ifact.is_popular:forsiminact.similarities.all():sim.count*=2sim.save()forsiminEighthActivitySimilarity.objects.all():sim.update_weighted()print(f"Generated similarities in {time.time()-start} seconds")