Python parsing, evaluation and inspection tools for jQuery-QueryBuilder rules
Project description
jQueryQueryBuilder
Python Rule evaluator for jQuery-QueryBuilder. It evaluates rules agains provided objects.
Website • autobotAI Cloud Governance
Inspired from SixiS/jquery_query_builder-rails
Usage
Install the package.
pip install jqqb
Usage Example:
from jqqb import QueryBuilder
rule_json = {
"condition": "AND",
"rules": [{
"id": "tagname",
"field": "tags.name",
"type": "string",
"input": "text",
"operator": "not_contains",
"value": "production"
}, {
"id": "tagname",
"field": "tags.name",
"type": "string",
"input": "text",
"operator": "begins_with",
"value": "development"
}, {
"condition": "OR",
"rules": [{
"id": "type",
"field": "type",
"type": "string",
"input": "text",
"operator": "equal",
"value": "ec2"
},{
"id": "type",
"field": "type",
"type": "string",
"input": "text",
"operator": "equal",
"value": "ami"
}]
}]
}
evaluator = QueryBuilder(rule_json)
object_1 = {'type': "ec2", "tags": [{"name": "hello"}, {"name": "asdfasfproduction_instance"}]}
object_2 = {'type': "ami", "tags": [{"name": "development"}, {"name": "asfdafdroduction_instance"}, {"name": "proction"}]}
objects = [object_1, object_2]
print(evaluator.match_objects(objects))
print(evaluator.inspect_objects(objects))
Result:
[{'type': 'ami', 'tags': [{'name': 'development'}, {'name': 'asfdafdroduction_instance'}, {'name': 'proction'}]}]
[
{
'object': {'type': 'ec2', 'tags': [{'name': 'hello'}, {'name': 'asdfasfproduction_instance'}]},
'selected': False,
'results': [
(
{'id': 'tagname', 'field': 'tags.name', 'type': 'string', 'input': 'text', 'operator': 'not_contains', 'value': 'production'},
(['hello', 'asdfasfproduction_instance'], 'production', False)
),
(
{'id': 'tagname', 'field': 'tags.name', 'type': 'string', 'input': 'text', 'operator': 'begins_with', 'value': 'development'},
(['hello', 'asdfasfproduction_instance'], 'development', False)
),
(
{
'condition': 'OR',
'rules': [
{
'id': 'type',
'field': 'type',
'type': 'string',
'input': 'text',
'operator': 'equal',
'value': 'ec2'
}, {
'id': 'type',
'field': 'type',
'type': 'string',
'input': 'text',
'operator': 'equal',
'value': 'ami'
}
]
},
[
(
{'id': 'type', 'field': 'type', 'type': 'string', 'input': 'text', 'operator': 'equal', 'value': 'ec2'},
('ec2', 'ec2', True)
),
(
{'id': 'type', 'field': 'type', 'type': 'string', 'input': 'text', 'operator': 'equal', 'value': 'ami'},
('ec2', 'ami', False)
)
]
)
]
},
{
'object': {'type': 'ami', 'tags': [{'name': 'development'}, {'name': 'asfdafdroduction_instance'}, {'name': 'proction'}]},
'selected': True,
'results': [
(
{'id': 'tagname', 'field': 'tags.name', 'type': 'string', 'input': 'text', 'operator': 'not_contains', 'value': 'production'},
(
['development', 'asfdafdroduction_instance', 'proction'], 'production', True
)
), (
{'id': 'tagname', 'field': 'tags.name', 'type': 'string', 'input': 'text', 'operator': 'begins_with', 'value': 'development'},
(
['development', 'asfdafdroduction_instance', 'proction'], 'development', True
)
), (
{
'condition': 'OR',
'rules': [
{'id': 'type', 'field': 'type', 'type': 'string', 'input': 'text', 'operator': 'equal', 'value': 'ec2'},
{'id': 'type', 'field': 'type', 'type': 'string', 'input': 'text', 'operator': 'equal', 'value': 'ami'}
]
}, [
(
{'id': 'type', 'field': 'type', 'type': 'string', 'input': 'text', 'operator': 'equal', 'value': 'ec2'},
('ami', 'ec2', False)
), (
{'id': 'type', 'field': 'type', 'type': 'string', 'input': 'text', 'operator': 'equal', 'value': 'ami'},
('ami', 'ami', True)
)
]
)
]
}
]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
jqqb-1.4.0.tar.gz
(5.9 kB
view details)
Built Distribution
jqqb-1.4.0-py3-none-any.whl
(6.4 kB
view details)
File details
Details for the file jqqb-1.4.0.tar.gz
.
File metadata
- Download URL: jqqb-1.4.0.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ab728f7471095e442cc80415bb57d925748bca74fb59d96d7acaf417b4241e97 |
|
MD5 | fb7f547c50c43126a3cda71ad7a51bf4 |
|
BLAKE2b-256 | 3ae81fca873171205c903d435150ea072e22cd6afbe8a48c31d48b6e2a6f0815 |
File details
Details for the file jqqb-1.4.0-py3-none-any.whl
.
File metadata
- Download URL: jqqb-1.4.0-py3-none-any.whl
- Upload date:
- Size: 6.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | adf591eb27833aaf4d035f29eb700884251cfbe3e2e95dea86f3127425bdb9ac |
|
MD5 | f3b0f46867d21bd65185f68357e823fd |
|
BLAKE2b-256 | 5d9873f291053bc0d914f2200b04d2369b09372389e20ed5d211f6a16f296691 |