reports.py
2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# -*- coding: utf-8 -*-
from django.utils.translation import ugettext as _
from dictionary.models import Lexeme, LexemeAttributeValue, CrossReferenceType
from patterns.models import Pattern
report_functions = []
def report_list(fun):
report_functions.append(fun)
return fun
@report_list
def derivatives_without_verb():
derivatives = Lexeme.objects.filter(
part_of_speech__symbol__in=('ger', 'pact', 'ppas', 'appas'))
return {
_(u'No cross-reference to the verb'):
derivatives.exclude(refs_to__type__symbol__endswith='ver'),
}
@report_list
def verbs_without_derivatives():
proper = list(LexemeAttributeValue.objects.filter(
attribute__name=u'właściwy').exclude(value='Q'))
trans = LexemeAttributeValue.objects.get(
attribute__name=u'przechodniość', value='T')
q_trans = LexemeAttributeValue.objects.get(
attribute__name=u'przechodniość', value='qT')
imperf = list(LexemeAttributeValue.objects.filter(
attribute__name=u'aspekt').exclude(value='dk'))
ppas = CrossReferenceType.objects.get(
symbol='verppas', to_pos__symbol='ppas')
appas = CrossReferenceType.objects.get(
symbol='verppas', to_pos__symbol='appas')
patterns10 = list(Pattern.objects.filter(
type__inflection_type_id='v', endings__base_form_label__symbol='10'))
patterns11 = list(Pattern.objects.filter(
type__inflection_type_id='v', endings__base_form_label__symbol='11'))
patterns3 = list(Pattern.objects.filter(
type__inflection_type_id='v', endings__base_form_label__symbol='3'))
proper_verbs = Lexeme.objects.filter(
part_of_speech__symbol='v', lexemeattributevalue__in=proper)
# czasownik właściwy przechodni wymaga imiesłowu biernego
proper_trans = proper_verbs.filter(
lexemeattributevalue=trans, patterns__in=patterns10)
no_ppas = proper_trans.exclude(refs_to__type=ppas)
# czasownik właściwy quasi-przechodni wymaga quasi-imiesłowu biernego
proper_qt = proper_verbs.filter(
lexemeattributevalue=q_trans, patterns__in=patterns10)
no_appas = proper_qt.exclude(refs_to__type=appas)
# czasownik właściwy niedokononany wymaga imiesłowu czynnego
proper_imperf = proper_verbs.filter(
lexemeattributevalue__in=imperf, patterns__in=patterns3)
no_pact = proper_imperf.exclude(refs_to__type__symbol='verpact')
# czasownik właściwy z wzorem z zakończeniem 11 wymaga gerundium
proper_11 = proper_verbs.filter(patterns__in=patterns11)
no_ger = proper_11.exclude(refs_to__type__symbol='verger')
return {
_(u'No passive participle'): no_ppas,
_(u'No passive quasi-participle'): no_appas,
_(u'No active participle'): no_pact,
_(u'No gerund'): no_ger,
}