Ejemplo n.º 1
0
def test_0009(models, before, after):
    valid = int("wtf" not in before)

    view = View.objects.create(model_name="core.Product", query=before)
    migration_helpers.forwards_0009(View)
    view.refresh_from_db()
    assert view.query == after
    assert len(BoundQuery.bind(view.get_query(),
                               models).valid_filters) == valid

    view = View.objects.create(model_name="core.SKU",
                               query=f"product__{before}")
    migration_helpers.forwards_0009(View)
    view.refresh_from_db()
    assert view.query == f"product__{after}"
    assert len(BoundQuery.bind(view.get_query(),
                               models).valid_filters) == valid
Ejemplo n.º 2
0
def test_0009_multiple_filters(models):
    view = View.objects.create(
        model_name="core.Product",
        query="name__is_null=True&boat__gt=1&name__is_null__equals=True",
    )
    migration_helpers.forwards_0009(View)
    view.refresh_from_db()
    assert view.query == "name__is_null=IsNull&boat__gt=1&name__is_null__equals=IsNull"
    assert len(BoundQuery.bind(view.get_query(), models).valid_filters) == 3
Ejemplo n.º 3
0
def test_0009(req, with_arrays, before, after):  # pragma: postgres
    orm_models = get_models(req)
    valid = int("wtf" not in before)

    view = View.objects.create(model_name="array.ArrayModel", query=before)
    migration_helpers.forwards_0009(View)
    view.refresh_from_db()
    assert view.query == after
    assert len(BoundQuery.bind(view.get_query(), orm_models).valid_filters) == valid
 def test_bad_filter_value(self, orm_models):
     query = Query(
         "app.model",
         [],
         [QueryFilter("num", "equals", "fred"), QueryFilter("num", "equals", 1)],
     )
     bound_query = BoundQuery.bind(query, orm_models)
     assert [f.value for f in bound_query.filters] == ["fred", 1]
     assert [f.value for f in bound_query.valid_filters] == [1]
Ejemplo n.º 5
0
 def helper(queries, *args, **kwargs):
     query = Query.from_request("core.Product", *args, **kwargs)
     bound_query = BoundQuery.bind(query, orm_models)
     with django_assert_num_queries(queries):
         data = get_results(req, bound_query, orm_models, False)
         return {
             "cols": flatten_table(bound_query.col_fields, data["cols"]),
             "rows": flatten_table(bound_query.row_fields, data["rows"]),
             "body": [
                 flatten_table(bound_query.data_fields, row) for row in data["body"]
             ],
         }
Ejemplo n.º 6
0
    def helper(fields, query=None):
        query = query or {}

        admin.site.register(JsonModel, JsonAdmin)
        try:
            orm_models = get_models(req)
            query = Query.from_request("json.JsonModel", fields, query)
            bound_query = BoundQuery.bind(query, orm_models)
            data = get_results(req, bound_query, orm_models, False)
        finally:
            admin.site.unregister(JsonModel)
        return data["rows"]
Ejemplo n.º 7
0
    def helper(fields, query=None):
        query = query or []

        orm_models = get_models(req)
        query = Query.from_request("array.ArrayModel", fields, query)
        bound_query = BoundQuery.bind(query, orm_models)
        data = get_results(req, bound_query, orm_models, False)

        for f in bound_query.filters:
            if f.err_message:
                print("filter error:", f.path_str, f.lookup, f.value, "->",
                      f.err_message)

        return data["rows"]
Ejemplo n.º 8
0
    def helper(*fields, **filters):
        orm_models = get_models(admin_ddb_request)
        query = Query.from_request("array.ArrayModel", ",".join(fields),
                                   list(filters.items()))
        bound_query = BoundQuery.bind(query, orm_models)
        data = get_results(admin_ddb_request, bound_query, orm_models, False)

        for f in bound_query.filters:
            if f.err_message:
                print(  # pragma: no cover
                    "filter error:", f.path_str, f.lookup, f.value, "->",
                    f.err_message)

        return data["rows"]
 def test_filter_calculated_field(self, orm_models):
     query = Query("app.model", [], [QueryFilter("fn", "equals", "fred")])
     bound_query = BoundQuery.bind(query, orm_models)
     assert [f.path for f in bound_query.filters] == []
Ejemplo n.º 10
0
 def get_product_flat(*args, **kwargs):
     query = Query.from_request("core.Product", *args)
     bound_query = BoundQuery.bind(query, orm_models)
     data = get_results(req, bound_query, orm_models, False)
     return flatten_table(bound_query.fields, data["rows"])
Ejemplo n.º 11
0
 def helper(queries, *args, **kwargs):
     query = Query.from_request("core.Product", *args, **kwargs)
     bound_query = BoundQuery.bind(query, orm_models)
     with django_assert_num_queries(queries):
         data = get_results(req, bound_query, orm_models, False)
         return flatten_table(bound_query.fields, data["rows"])
 def test_bad_field_lookup(self, orm_models):
     query = Query("app.model", [QueryField("fa__count__bob")], [])
     bound_query = BoundQuery.bind(query, orm_models)
     assert [f.path for f in bound_query.fields] == []
 def test_bad_fk_field_aggregate(self, orm_models):
     query = Query("app.model", [QueryField("tom__jones__yata")], [])
     bound_query = BoundQuery.bind(query, orm_models)
     assert [f.path for f in bound_query.fields] == []
 def test_aggregate(self, orm_models):
     query = Query("app.model", [QueryField("tom__jones__count")], [])
     bound_query = BoundQuery.bind(query, orm_models)
     assert [f.path for f in bound_query.fields] == [["tom", "jones", "count"]]
 def test_piovt(self, orm_models):
     query = Query("app.model", [QueryField("tom__jones", pivoted=True)], [])
     bound_query = BoundQuery.bind(query, orm_models)
     assert [f.pivoted for f in bound_query.fields] == [True]
def bound_query(query, orm_models):
    return BoundQuery.bind(query, orm_models)
 def test_fk(self, orm_models):
     query = Query("app.model", [QueryField("tom")], [])
     bound_query = BoundQuery.bind(query, orm_models)
     assert [f.path for f in bound_query.fields] == []
 def test_bad_filter(self, orm_models):
     query = Query("app.model", [], [QueryFilter("yata", "equals", "fred")])
     bound_query = BoundQuery.bind(query, orm_models)
     assert [f.path for f in bound_query.filters] == []