clear-skies 1.22.28__py3-none-any.whl → 1.22.29__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of clear-skies might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: clear-skies
3
- Version: 1.22.28
3
+ Version: 1.22.29
4
4
  Summary: A framework for building backends in the cloud
5
5
  License: MIT
6
6
  Author: Conor Mancone
@@ -53,7 +53,7 @@ clearskies/backends/cursor_backend.py,sha256=VntlPS6z6bnZOC3XRJ-WFf5gK3pFUhH_qJp
53
53
  clearskies/backends/example_backend.py,sha256=jVpv0LZpNUEJGko0XqioLkHmZHbCW6M4YyNvzKlZcDw,1413
54
54
  clearskies/backends/file_backend.py,sha256=tByQdOX1pf6r9-6vRDqOnQ8teRYo0bEWk589qrg598w,1752
55
55
  clearskies/backends/json_backend.py,sha256=uDBqkekQadBm0BMoCVuzSPRB-5SjMTCDSAbuIqqwkF8,180
56
- clearskies/backends/memory_backend.py,sha256=6Ts_NtP9S_QisvpNcQKO0CUqhCRAuL3d5LZYPvSgXW4,20837
56
+ clearskies/backends/memory_backend.py,sha256=ACmnFhUO3sWJvELvhCEsBcqo2jWh8A-7iugYtjwTP9k,21338
57
57
  clearskies/backends/restful_api_advanced_search_backend.py,sha256=kBHO7wO_b24pkDXGWbGe0-5efQkkXjP6NQ3EaHC9V-k,3716
58
58
  clearskies/backends/secrets_backend.py,sha256=4lzrgdL_O_pgCT5HknV2gotFgp9GzjQ5_2n0-4H4kvs,2204
59
59
  clearskies/binding_config.py,sha256=bF8LBNEgJacwKCqToAtDqN9hv5omzU7zt_4qB9KPtE0,457
@@ -148,7 +148,7 @@ clearskies/handlers/exceptions/not_found.py,sha256=xThOXiMfyYBaI2bhfOhpVoZ_vdw1h
148
148
  clearskies/handlers/get.py,sha256=x9SogDd2ZvIYwv2UkNa_FUmmKMNd9XPadkbnBKbyTGo,6892
149
149
  clearskies/handlers/health_check.py,sha256=m6H3psUql-I7hZao3fsxjrZnCjFJZ1ROTF-41g8Syww,2078
150
150
  clearskies/handlers/input_processing.py,sha256=edtG6NQJZCte0Nq-j7SUMzp6vxgIIbLxeUGscWOALAs,3814
151
- clearskies/handlers/list.py,sha256=RdhvcVA4ZgkdmOHl6iGBC-2jPhjYay0_kFHttmVoq9Q,25466
151
+ clearskies/handlers/list.py,sha256=ojnDsOkMk8MBs6zaOPg73sVniv_3jiYNm5_OKJxuUi8,25516
152
152
  clearskies/handlers/mygrations.py,sha256=4iKpJKooqgNtAURwMl_FgsXUt8OYOaG_TY1OV1llQxY,2759
153
153
  clearskies/handlers/request_method_routing.py,sha256=DgPEz3tgbaUkXHsOriPbIctfSf4Gm4NxfRdVulH91Kg,1636
154
154
  clearskies/handlers/restful_api.py,sha256=1rJ2REX1sTAdbqaRuCclP375agrho4zNNQx6hXGa4nQ,9258
@@ -208,7 +208,7 @@ clearskies/tests/simple_api/models/__init__.py,sha256=nUA0W6fgXw_Bxa9CudkaDkC80t
208
208
  clearskies/tests/simple_api/models/status.py,sha256=PEhPbaQh5qdUNHp8O0gz91LOLENAEBtqSaHxUPXchaM,699
209
209
  clearskies/tests/simple_api/models/user.py,sha256=5_P4Tp1tTdX7PkMJ__epPM5MA7JAeVYGas69vcWloLc,819
210
210
  clearskies/tests/simple_api/users_api.py,sha256=KYXCgEofDxHeRdQK67txN5oYUPvxxmB8JTku7L-apk4,2344
211
- clear_skies-1.22.28.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
212
- clear_skies-1.22.28.dist-info/METADATA,sha256=z3lGADFmnzYwfyGTon4L0AGl_wvmFQWAfPqy6fdGEYQ,1842
213
- clear_skies-1.22.28.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
214
- clear_skies-1.22.28.dist-info/RECORD,,
211
+ clear_skies-1.22.29.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
212
+ clear_skies-1.22.29.dist-info/METADATA,sha256=WQ_iGdlvNrhtS-ZnF8BgXO3BIYccsx8hmCWQkDubNc8,1842
213
+ clear_skies-1.22.29.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
214
+ clear_skies-1.22.29.dist-info/RECORD,,
@@ -41,6 +41,22 @@ def _sort(row_a, row_b, sorts):
41
41
  return reverse * (1 if value_a > value_b else -1)
42
42
  return 0
43
43
 
44
+ def like_check(column, values, null):
45
+ def matches(row):
46
+ value = row.get(column)
47
+ search = values[0].lower()
48
+ if not value or isinstance(value, Null):
49
+ return bool(search)
50
+
51
+ value = value.lower()
52
+ if search[0] == "%" and search[-1] == "%":
53
+ return search.strip('%') in value
54
+ if search[0] == "%":
55
+ return value[0:len(search)] == search.lstrip('%')
56
+ if search[-1] == "%":
57
+ return value[-1*len(search):] == search.rstrip('%')
58
+ return value == search
59
+ return matches
44
60
 
45
61
  class MemoryTable:
46
62
  _table_name = None
@@ -69,7 +85,7 @@ class MemoryTable:
69
85
  "is null": lambda column, values, null: lambda row: (column not in row or row[column] is None),
70
86
  "is not": lambda column, values, null: lambda row: row.get(column, null) != values[0],
71
87
  "is": lambda column, values, null: lambda row: row.get(column, null) == str(values[0]),
72
- "like": lambda column, values, null: lambda row: row.get(column, null) == str(values[0]),
88
+ "like": like_check,
73
89
  "in": lambda column, values, null: lambda row: row.get(column, null) in values,
74
90
  }
75
91
 
@@ -72,7 +72,7 @@ class List(Base):
72
72
  [models, limit] = self.configure_models_from_request_data(
73
73
  models, request_data, query_parameters, pagination_data
74
74
  )
75
- if not models.query_sorts:
75
+ if not models.query_sorts and self.configuration("default_sort_column"):
76
76
  models = models.sort_by(
77
77
  self.configuration("default_sort_column"),
78
78
  self.configuration("default_sort_direction"),
@@ -232,8 +232,8 @@ class List(Base):
232
232
  if type(self) != List:
233
233
  self._check_columns_in_configuration(configuration, "searchable_columns")
234
234
 
235
- if "default_sort_column" not in configuration:
236
- raise ValueError(f"{error_prefix} missing required configuration 'default_sort_column'")
235
+ # if "default_sort_column" not in configuration:
236
+ # raise ValueError(f"{error_prefix} missing required configuration 'default_sort_column'")
237
237
 
238
238
  # sortable_columns, wheres, and joins should all be iterables
239
239
  for config_name, contents in {