Source code for nkdsu.apps.vote.management.commands.migrate_away_from
from django.core.management.base import BaseCommand
from ...models import Track, UserTrackListTrack
[docs]
class Command(BaseCommand):
    help = (
        'copy all plays and votes from one track to another and then remove the first'
    )
[docs]
    def add_arguments(self, parser) -> None:
        parser.add_argument('to_remove_id', type=str)
        parser.add_argument('target_id', type=str) 
[docs]
    def handle(self, to_remove_id, target_id, *args, **options) -> None:
        to_remove = Track.objects.get(id=to_remove_id)
        target = Track.objects.get(id=target_id)
        for vote in to_remove.vote_set.all():
            rm = vote.tracks
            rm.remove(to_remove)
            rm.add(target)
            vote.save()
        to_remove.play_set.all().update(track=target)
        to_remove.note_set.all().update(track=target)
        to_remove.shortlist_set.all().update(track=target)
        to_remove.discard_set.all().update(track=target)
        to_remove.request_set.all().update(track=target)
        to_remove.proroulettecommitment_set.all().update(track=target)
        to_remove.block_set.all().update(track=target)
        UserTrackListTrack.objects.filter(track=to_remove).update(track=target)
        target.revealed = to_remove.revealed
        target.hidden = False
        target.media_id = to_remove.media_id
        to_remove.media_id = None
        to_remove.save()
        target.has_hook = to_remove.has_hook
        target.save()
        to_remove.archived = True
        to_remove.save()