general: add same_user queryset "filter" (#43328)
This commit is contained in:
parent
9ebb81bd09
commit
1e83b2b629
|
@ -924,6 +924,27 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
queryset = lazy_formdata.objects.exclude_self().filter_by('foo_foo').apply_filter_value('foo')
|
||||
assert queryset.count == 4
|
||||
|
||||
# filter + limit to same user
|
||||
queryset = lazy_formdata.objects.exclude_self().same_user().filter_by('foo_foo').apply_filter_value('foo')
|
||||
assert queryset.count == 0
|
||||
|
||||
for lazy in lazy_formdata.objects.filter_by('foo_foo').apply_filter_value('foo')[:2]:
|
||||
lazy._formdata.user_id = variable_test_data._formdata.user_id
|
||||
lazy._formdata.store()
|
||||
|
||||
queryset = lazy_formdata.objects.exclude_self().same_user().filter_by('foo_foo').apply_filter_value('foo')
|
||||
assert queryset.count == 2
|
||||
|
||||
# + exclude self (lazy being set from the for loop)
|
||||
queryset = lazy.objects.exclude_self().same_user().filter_by('foo_foo').apply_filter_value('foo')
|
||||
assert queryset.count == 1
|
||||
|
||||
# and with anonymous user
|
||||
lazy._formdata.user_id = None
|
||||
lazy._formdata.store()
|
||||
queryset = lazy.objects.same_user().filter_by('foo_foo').apply_filter_value('foo')
|
||||
assert queryset.count == 4
|
||||
|
||||
# template tags
|
||||
context = pub.substitutions.get_context_variables(mode='lazy')
|
||||
tmpl = Template('{{form_objects|filter_by:"foo_foo"|filter_value:"bar"|count}}')
|
||||
|
@ -933,6 +954,14 @@ def test_lazy_formdata_queryset_filter(pub, variable_test_data):
|
|||
tmpl = Template('{{form_objects|filter_by:"foo_foo"|filter_value:form_var_foo_foo|count}}')
|
||||
assert tmpl.render(context) == '7'
|
||||
|
||||
context = pub.substitutions.get_context_variables(mode='lazy')
|
||||
tmpl = Template('{{form_objects|filter_by:"foo_foo"|filter_value:"bar"|count}}')
|
||||
assert tmpl.render(context) == '7'
|
||||
|
||||
context = pub.substitutions.get_context_variables(mode='lazy')
|
||||
tmpl = Template('{{form_objects|same_user|filter_by:"foo_foo"|filter_value:"foo"|count}}')
|
||||
assert tmpl.render(context) == '4'
|
||||
|
||||
|
||||
def test_lazy_global_forms(pub, variable_test_data):
|
||||
lazy_formdata = variable_test_data
|
||||
|
|
|
@ -516,6 +516,11 @@ def distance_filter(queryset, distance=1000):
|
|||
return queryset.distance_filter(distance=int(distance))
|
||||
|
||||
|
||||
@register.filter
|
||||
def same_user(queryset):
|
||||
return queryset.same_user()
|
||||
|
||||
|
||||
@register.filter
|
||||
def objects(forms_source, slug):
|
||||
if hasattr(slug, 'get_value'):
|
||||
|
|
|
@ -79,6 +79,12 @@ class LazyFormDefObjectsManager(object):
|
|||
assert self._formdata
|
||||
return self._clone(self._criterias + [NotEqual('id', str(self._formdata.id))])
|
||||
|
||||
def same_user(self):
|
||||
assert self._formdata
|
||||
if self._formdata.user_id is None:
|
||||
return self
|
||||
return self._clone(self._criterias + [Equal('user_id', str(self._formdata.user.id))])
|
||||
|
||||
def drafts(self):
|
||||
criterias = [x for x in self._criterias if not getattr(x, 'exclude_drafts', False)]
|
||||
return self._clone(criterias + [Equal('status', 'draft')])
|
||||
|
|
Loading…
Reference in New Issue