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
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')
|
|
|