misc: by default exclude anonymised data from querysets (#45236)
This commit is contained in:
parent
1d78d7cf02
commit
62c0c20d24
|
@ -952,6 +952,11 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
formdata.status = 'draft'
|
||||
formdata.store()
|
||||
|
||||
formdata = data_class()
|
||||
formdata.just_created()
|
||||
formdata.data = {'0': 'bar'}
|
||||
formdata.anonymise()
|
||||
|
||||
# filter function
|
||||
queryset = lazy_formdata.objects.filter_by('foo_foo').apply_filter_value('bar')
|
||||
assert queryset.count == 7
|
||||
|
@ -992,6 +997,10 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
queryset = lazy.objects.same_user().filter_by('foo_foo').apply_filter_value('foo')
|
||||
assert queryset.count == 4
|
||||
|
||||
# filter with anonymised
|
||||
queryset = lazy_formdata.objects.with_anonymised().filter_by('foo_foo').apply_filter_value('bar')
|
||||
assert queryset.count == 8
|
||||
|
||||
# template tags
|
||||
context = pub.substitutions.get_context_variables(mode='lazy')
|
||||
tmpl = Template('{{form_objects|filter_by:"foo_foo"|filter_value:"bar"|count}}')
|
||||
|
|
|
@ -167,7 +167,7 @@ class NotNull(Criteria):
|
|||
class Null(Criteria):
|
||||
sql_op = 'IS NULL'
|
||||
|
||||
def __init__(self, attribute):
|
||||
def __init__(self, attribute, **kwargs):
|
||||
self.attribute = attribute
|
||||
|
||||
def as_sql(self):
|
||||
|
|
|
@ -27,7 +27,7 @@ from pyproj import Geod
|
|||
from .qommon import misc, force_str
|
||||
from .qommon.evalutils import make_datetime
|
||||
from .qommon.templatetags.qommon import parse_datetime
|
||||
from .qommon.storage import (Or, Equal, NotEqual)
|
||||
from .qommon.storage import (Or, Equal, NotEqual, Null)
|
||||
|
||||
from .carddef import CardDef
|
||||
from .formdef import FormDef
|
||||
|
@ -38,10 +38,14 @@ class LazyFormDefObjectsManager(object):
|
|||
self._formdef = formdef
|
||||
self._formdata = formdata
|
||||
if criterias is None:
|
||||
criterias = [NotEqual('status', 'draft')]
|
||||
criterias = [
|
||||
NotEqual('status', 'draft'),
|
||||
Null('anonymised'),
|
||||
]
|
||||
# add custom marker to criteria so it can be found back and removed in
|
||||
# drafts().
|
||||
# drafts() or with_anonymised()
|
||||
criterias[0].exclude_drafts = True
|
||||
criterias[1].exclude_anonymised = True
|
||||
self._criterias = criterias
|
||||
self._order_by = order_by
|
||||
self._cached_resultset = None
|
||||
|
@ -89,6 +93,10 @@ class LazyFormDefObjectsManager(object):
|
|||
criterias = [x for x in self._criterias if not getattr(x, 'exclude_drafts', False)]
|
||||
return self._clone(criterias + [Equal('status', 'draft')])
|
||||
|
||||
def with_anonymised(self):
|
||||
criterias = [x for x in self._criterias if not getattr(x, 'exclude_anonymised', True)]
|
||||
return self._clone(criterias)
|
||||
|
||||
def done(self):
|
||||
status_filters = ['wf-%s' % x.id for x in
|
||||
self._formdef.workflow.get_endpoint_status()]
|
||||
|
|
Loading…
Reference in New Issue