Work.objects.count()
15527
User.objects.count()
2271
NB_WORKS_LIMIT = Work.objects.count()
NB_USERS_LIMIT = User.objects.count()
SearchIssue.objects.all().delete()
# Profile.objects.all().delete() # Keeping some profiles would be better
Suggestion.objects.all().delete()
Recommendation.objects.all().delete()
Pairing.objects.all().delete()
SocialApp.objects.all().delete()
Session.objects.all().delete()
ContentType.objects.all().delete()
# Reference.objects.all().delete()
(0, {})
from collections import Counter
nb = Counter(Rating.objects.values_list('work_id', flat=True))
if NB_WORKS_LIMIT:
work_ids = list(Work.objects.values_list('id', flat=True))
work_ids.sort(key=lambda work_id: -nb[work_id])
Work.objects.exclude(id__in=work_ids[:NB_WORKS_LIMIT]).delete()
if NB_WORKS_LIMIT:
bundle = []
for artist_ids in Work.objects.values_list('artists'):
bundle.extend(artist_ids)
kept_artist_ids = list(set([x for x in bundle if x is not None]))
Artist.objects.exclude(id__in=kept_artist_ids).delete()
Artist.objects.count()
2403
Work.objects.count()
15527
Rating.objects.count()
334390
max_user_id = max(User.objects.values_list('id', flat=True))
import random
chosen = User.objects.order_by('?')[:NB_USERS_LIMIT]
kept_ids = chosen.values_list('id', flat=True)
User.objects.exclude(id__in=kept_ids).delete()
(0, {})
User.objects.count()
2271
from django.utils import timezone
new_ids = random.sample(range(max_user_id + 1, max_user_id + NB_USERS_LIMIT + 1), NB_USERS_LIMIT)
for user, new_id in zip(User.objects.all(), new_ids):
old_id = user.id
user.pk = new_id
user.username = str(new_id)
user.is_superuser = False
user.set_password('mangaki')
user.email = '%d@mangaki.fr' % new_id
user.date_joined = timezone.now()
user.last_login = timezone.now()
user.save()
old_user = User.objects.get(id=old_id)
old_user.rating_set.update(user=user)
# old_user.profile.user = user
old_user.delete()
User.objects.all()
<QuerySet [<User: 6630>, <User: 5187>, <User: 6316>, <User: 5084>, <User: 4681>, <User: 5263>, <User: 4888>, <User: 6467>, <User: 6540>, <User: 5021>, <User: 5128>, <User: 4807>, <User: 4559>, <User: 5886>, <User: 5745>, <User: 4710>, <User: 6447>, <User: 4871>, <User: 5669>, <User: 5523>, '...(remaining elements truncated)...']>
Now, please make ./mangaki/manage.py dumpdata > fixtures/seed_data.json
from collections import Counter
import json
j = json.load(open('../fixtures/seed_data.json'))
# Currently
"""Counter({'auth.group': 1,
'auth.user': 2271,
'irl.event': 84,
'irl.location': 2,
'irl.partner': 12,
'mangaki.artist': 2403,
'mangaki.artistspelling': 2394,
'mangaki.category': 3,
'mangaki.editor': 167,
'mangaki.extlanguage': 60,
'mangaki.faqentry': 1,
'mangaki.faqtheme': 1,
'mangaki.genre': 34,
'mangaki.language': 51,
'mangaki.page': 4,
'mangaki.profile': 2271,
'mangaki.rating': 334390,
'mangaki.reference': 10112,
'mangaki.role': 5,
'mangaki.staff': 8597,
'mangaki.studio': 55,
'mangaki.tag': 84,
'mangaki.taggedwork': 103,
'mangaki.top': 13,
'mangaki.work': 15527,
'mangaki.worktitle': 1114,
'sites.site': 1})})"""
Counter(entry['model'] for entry in j)
Counter({'auth.user': 200, 'irl.event': 38, 'irl.location': 2, 'irl.partner': 12, 'mangaki.artist': 48, 'mangaki.artistspelling': 48, 'mangaki.category': 3, 'mangaki.editor': 24, 'mangaki.genre': 34, 'mangaki.page': 4, 'mangaki.rating': 3161, 'mangaki.reference': 30, 'mangaki.role': 5, 'mangaki.staff': 100, 'mangaki.studio': 50, 'mangaki.top': 3, 'mangaki.work': 40})