You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

42 lines
1.6 KiB

from django.core.management import BaseCommand
from specializations.models import Specialization
from ratings.models import SpecializationRating
from users.models import User, Team
class Command(BaseCommand):
def handle(self, *args, **options):
users = User.objects.values('pk', 'rating').filter(is_superuser=False).order_by('-rating')
teams = Team.objects.values('pk', 'rating').order_by('-rating')
result_list = []
for user in users:
result_list.append([user['rating'], 'user', user['pk']])
for team in teams:
result_list.append([team['rating'], 'team', team['pk'] ])
result_list = list(reversed(sorted(result_list)))
SpecializationRating.objects.all().delete()
specializations = Specialization.objects.all()
for spec in specializations:
i = 0
for res in result_list:
if 'user' in res[1]:
user = User.objects.get(pk=res[2])
team = None
specializations_current = user.contractor_specializations.all()
else:
team = Team.objects.get(pk=res[2])
user = None
specializations_current = team.specializations.all()
if spec in specializations_current:
i += 1
spec_rating = SpecializationRating()
spec_rating.position = i
spec_rating.user = user
spec_rating.team = team
spec_rating.specialization = spec
spec_rating.save()
print('The end')