|
7 | 7 | from cql2 import Expr |
8 | 8 |
|
9 | 9 |
|
10 | | -def append_qs_filter(qs: str, filter: Expr, filter_lang: Optional[str] = None) -> bytes: |
| 10 | +def append_qs_filter( |
| 11 | + qs: str, cql2_filter: Expr, filter_lang: Optional[str] = None |
| 12 | +) -> bytes: |
11 | 13 | """Insert a filter expression into a query string. If a filter already exists, combine them.""" |
12 | 14 | qs_dict = {k: v[0] for k, v in parse_qs(qs).items()} |
13 | 15 | new_qs_dict = append_body_filter( |
14 | | - qs_dict, filter, filter_lang or qs_dict.get("filter-lang", "cql2-text") |
| 16 | + qs_dict, cql2_filter, filter_lang or qs_dict.get("filter-lang", "cql2-text") |
15 | 17 | ) |
16 | 18 | return dict_to_query_string(new_qs_dict).encode("utf-8") |
17 | 19 |
|
18 | 20 |
|
19 | 21 | def append_body_filter( |
20 | | - body: dict, filter: Expr, filter_lang: Optional[str] = None |
| 22 | + body: dict, cql2_filter: Expr, filter_lang: Optional[str] = None |
21 | 23 | ) -> dict: |
22 | 24 | """Insert a filter expression into a request body. If a filter already exists, combine them.""" |
23 | 25 | cur_filter = body.get("filter") |
24 | 26 | filter_lang = filter_lang or body.get("filter-lang", "cql2-json") |
25 | 27 | if cur_filter: |
26 | | - filter = filter + Expr(cur_filter) |
| 28 | + cql2_filter = cql2_filter + Expr(cur_filter) |
| 29 | + cql2_filter = cql2_filter.reduce() |
27 | 30 | return { |
28 | 31 | **body, |
29 | | - "filter": filter.to_text() if filter_lang == "cql2-text" else filter.to_json(), |
| 32 | + "filter": ( |
| 33 | + cql2_filter.to_text() |
| 34 | + if filter_lang == "cql2-text" |
| 35 | + else cql2_filter.to_json() |
| 36 | + ), |
30 | 37 | "filter-lang": filter_lang, |
31 | 38 | } |
32 | 39 |
|
|
0 commit comments