add_missing_heads.py 872 Bytes
from django.core.management.base import BaseCommand

from webapp.models import Meaning, Segment


class Command(BaseCommand):
    help = 'Clean database.'

    def handle(self, *args, **options):
        add_missing_heads()


def add_missing_heads():
    for meaning in Meaning.objects.all():
        expressions = meaning.expressions.filter(main_expression=None)
        for expression in expressions:
            if missing_head(expression) and expression.segments.count() == 1:
                head = expression.segments.all()[0]
                print 'adding head:\t', meaning, '---->', expression, '---->', head
                head.is_head = True
                head.save()


def missing_head(expression):
    is_missing = False
    try:
        expression.segments.get(is_head=True)
    except Segment.DoesNotExist:
        is_missing = True
    return is_missing