osc_homonyms.py 946 Bytes
# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand
from django.db import transaction

from accounts.util import bot_history
from dictionary.models import Lexeme, Vocabulary


class Command(BaseCommand):
    help = 'fixes homonym numbers'

    @transaction.atomic
    def handle(self, **options):
        bot_history()
        vocab = Vocabulary.objects.get(id='antyMorfeusz')
        osc_entries = Lexeme.objects.filter(part_of_speech='osc')\
            .values_list('entry', flat=True)
        osc_distinct = list(osc_entries.distinct())
        subst_osc = Lexeme.objects.filter(
            part_of_speech='subst', entry__in=osc_distinct)
        subst_osc_entries = list(
            subst_osc.values_list('entry', flat=True).distinct())
        redundant_osc = Lexeme.objects.filter(
            part_of_speech='osc', entry__in=subst_osc_entries)
        for osc in redundant_osc:
            vocab.add_lexeme(osc)