Exemple #1
0
 class Query2(Query):
     foo = Variable.multi_choice_queryset(
         choices=Foo.objects.all(),
         form__include=True,
         value_to_q_lookup='foo')
     baz = Variable.multi_choice_queryset(
         model=Foo,
         attr=None,
         choices=None,
     )
Exemple #2
0
def test_nice_error_message():
    with pytest.raises(AttributeError) as e:
        value_to_query_string_value_string(Variable(value_to_q_lookup='name'), NonStandardName(non_standard_name='foo'))

    assert str(e.value) == "<class 'tests.models.NonStandardName'> object has no attribute name. You can specify another name property with the value_to_q_lookup argument. Maybe one of ['non_standard_name']?"

    with pytest.raises(AttributeError) as e:
        value_to_query_string_value_string(Variable(value_to_q_lookup='name'), Foo(foo=5))

    assert str(e.value) == "<class 'tests.models.Foo'> object has no attribute name. You can specify another name property with the value_to_q_lookup argument."
Exemple #3
0
def test_invalid_variable():
    q = Query(
        variables__bazaar=Variable(),
    ).bind(request=req('get'))

    query2 = Query(
        variables__bazaar=Variable(),
    ).bind(request=req('get', **{q.advanced_query_param():'not_bazaar=asd'}))
    with pytest.raises(QueryException) as e:
        query2.to_q()
    assert 'Unknown variable "not_bazaar"' in str(e)
Exemple #4
0
def test_invalid_form_data():

    query2 = Query(
        variables__bazaar=Variable.integer(attr='quux__bar__bazaar', form__include=True),
    ).bind(request=req('get', bazaar='asds'))
    assert query2.to_query_string() == ''
    assert repr(query2.to_q()) == repr(Q())
Exemple #5
0
def test_invalid_value():
    q = Query(
        variables__bazaar=Variable.integer(
            value_to_q=lambda variable, op, value_string_or_f: None
        ),
    ).bind(request=req('get'))
    request = req('get', **{q.advanced_query_param(): 'bazaar=asd'})

    query2 = Query(
        variables__bazaar=Variable.integer(
            value_to_q=lambda variable, op, value_string_or_f: None
        ),
    ).bind(request=request)
    with pytest.raises(QueryException) as e:
        query2.to_q()
    assert 'Unknown value "asd" for variable "bazaar"' in str(e)
Exemple #6
0
 class MyQuery(Query):
     foo = Variable(freetext=True)
Exemple #7
0
 class MyQuery(Query):
     foo = Variable(form__include=True)
Exemple #8
0
def test_variable_repr():
    assert repr(Variable(name='foo')) == '<iommi.query.Variable foo>'
Exemple #9
0
 class MyQuery(Query):
     foo = Variable.choice(
         form__include=True,
         form__attr='name',
         choices=('a', 'b'),
     )
Exemple #10
0
 class MyQuery(Query):
     foo = Variable.choice_queryset(
         form__include=True,
         form__attr='name',
         choices=EndPointDispatchModel.objects.all().order_by('id'),
     )
Exemple #11
0
 class MyQuery(Query):
     foo = Variable.boolean()
Exemple #12
0
def test_none_attr():

    query2 = Query(
        variables__bazaar=Variable(attr=None, form__include=True),
    ).bind(request=req('get', bazaar='foo'))
    assert repr(query2.to_q()) == repr(Q())
Exemple #13
0
 class Query2(Query):
     foo = Variable()
Exemple #14
0
 class Query2(Query):
     bazaar = Variable.integer(attr='quux__bar__bazaar', form=Struct(include=True))
Exemple #15
0
    class MyTestQuery(Query):
        foo_name = Variable(attr='foo', freetext=True, form__include=True)
        bar_name = Variable.case_sensitive(attr='bar', freetext=True, form__include=True)

        baz_name = Variable(attr='baz', form__include=True)
Exemple #16
0
 class ShowQuery(Query):
     foo = Variable()
     bar = Variable(
         include=lambda query, variable: query.request().GET['foo'] == 'include' and variable.extra.foo == 'include2',
         extra__foo='include2')
Exemple #17
0
 class Query2(MyTestQuery):
     bazaar = Variable.boolean(attr='quux__bar__bazaar', form__include=True)