def sort_key(x): wordform, reference, lexeme = x if reference: ref_wordform = lexeme.base_vars[0].idem key = (sort_key1(wordform), -1, sort_key2(wordform), sort_key1(ref_wordform), lexeme.homonym_order or 0, sort_key2(ref_wordform)) else: key = sort_key1(wordform), lexeme.homonym_order or 0, sort_key2(wordform) return key
lexemes = Entry.objects.all() test_entries = None if len(sys.argv) > 1: r = re.compile(r'\s*,\s*|\s+') s = u' '.join(sys.argv[1:]).strip(' ,') test_entries = [int(i) for i in r.split(s)] if test_entries: lexemes = lexemes.filter(pk__in=test_entries) lexemes = [e for e in lexemes if e.first_volume] for lexeme in lexemes: wordform = lexeme.base_vars[0].idem reference = None entries.append((wordform, reference, lexeme)) key = sort_key1(wordform) # Варианты for var in lexeme.orth_vars_refs[1:]: wordform = resolve_titles(var.idem) key2 = sort_key1(wordform) if key2 != key: reference = ucs_convert(wordform) entries.append((wordform, reference, lexeme)) # Названия народов COMMA = ur',\s+' if lexeme.nom_sg: wordform = lexeme.nom_sg reference = lexeme.nom_sg_ucs_wax[1] for wordform, reference in zip(