21 |
21 |
import qommon.misc
|
22 |
22 |
from qommon.evalutils import make_datetime
|
23 |
23 |
from qommon.templatetags.qommon import parse_datetime
|
|
24 |
from qommon.storage import (Or, Equal)
|
24 |
25 |
|
25 |
26 |
|
26 |
27 |
class LazyFormDefObjectsManager(object):
|
27 |
|
def __init__(self, formdef):
|
|
28 |
def __init__(self, formdef, criterias=None):
|
28 |
29 |
self._formdef = formdef
|
|
30 |
self._criterias = criterias
|
29 |
31 |
|
30 |
32 |
@property
|
31 |
33 |
def count(self):
|
32 |
|
return self._formdef.data_class().count()
|
|
34 |
return self._formdef.data_class().count(clause=self._criterias)
|
|
35 |
|
|
36 |
def all(self):
|
|
37 |
# mimicking django
|
|
38 |
return LazyFormDefObjectsManager(self._formdef)
|
|
39 |
|
|
40 |
def pending(self):
|
|
41 |
status_filters = ['wf-%s' % x.id for x in
|
|
42 |
self._formdef.workflow.get_not_endpoint_status()]
|
|
43 |
criterias = [Or([Equal('status', x) for x in status_filters])]
|
|
44 |
return LazyFormDefObjectsManager(self._formdef, criterias)
|
|
45 |
|
|
46 |
def done(self):
|
|
47 |
status_filters = ['wf-%s' % x.id for x in
|
|
48 |
self._formdef.workflow.get_endpoint_status()]
|
|
49 |
criterias = [Or([Equal('status', x) for x in status_filters])]
|
|
50 |
return LazyFormDefObjectsManager(self._formdef, criterias)
|
33 |
51 |
|
34 |
52 |
def __getattr__(self, attribute):
|
|
53 |
# backward compatibility
|
35 |
54 |
if attribute.startswith('count_status_'):
|
36 |
55 |
status = attribute[len('count_status_'):]
|
37 |
56 |
return len(self._formdef.data_class().get_ids_with_indexed_value(
|
38 |
57 |
'status', 'wf-%s' % status))
|
39 |
|
return super(FormDefSubstVar, self).__getattr__(attribute)
|
|
58 |
return super(LazyFormDefObjectsManager, self).__getattr__(attribute)
|
|
59 |
|
|
60 |
def __iter__(self):
|
|
61 |
for formdata in self._formdef.data_class().select_iterator(clause=self._criterias):
|
|
62 |
yield LazyFormData(formdata)
|
40 |
63 |
|
41 |
64 |
|
42 |
65 |
class LazyFormDef(object):
|
43 |
|
-
|