clear-skies 1.19.11__py3-none-any.whl → 1.19.12__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.
- {clear_skies-1.19.11.dist-info → clear_skies-1.19.12.dist-info}/METADATA +1 -1
- {clear_skies-1.19.11.dist-info → clear_skies-1.19.12.dist-info}/RECORD +7 -7
- clearskies/backends/cursor_backend.py +16 -6
- clearskies/column_types/audit.py +1 -1
- clearskies/handlers/list.py +7 -5
- {clear_skies-1.19.11.dist-info → clear_skies-1.19.12.dist-info}/LICENSE +0 -0
- {clear_skies-1.19.11.dist-info → clear_skies-1.19.12.dist-info}/WHEEL +0 -0
|
@@ -46,7 +46,7 @@ clearskies/autodoc/schema/string.py,sha256=oxZPCxYYhWnNHdbtwD3QuniStbj8XbBBpDTFX
|
|
|
46
46
|
clearskies/backends/__init__.py,sha256=3pvJw5dUnrqt7vyeBFjkHbycUEGkEpoYKxZoJwUVZO0,711
|
|
47
47
|
clearskies/backends/api_backend.py,sha256=vcGYub4G3jLLstTDkMMnZkID9JQz-qHmKNapgde4gSc,8875
|
|
48
48
|
clearskies/backends/backend.py,sha256=fkL-De0MUdzcS2JG_spSUQZIVL9oRFvaL6SP26JPpcI,7399
|
|
49
|
-
clearskies/backends/cursor_backend.py,sha256=
|
|
49
|
+
clearskies/backends/cursor_backend.py,sha256=owuP4S2dBkEUcPAF5PbZAZZuBXrCoioYtf9ede3Su5Y,11181
|
|
50
50
|
clearskies/backends/example_backend.py,sha256=jVpv0LZpNUEJGko0XqioLkHmZHbCW6M4YyNvzKlZcDw,1413
|
|
51
51
|
clearskies/backends/file_backend.py,sha256=tByQdOX1pf6r9-6vRDqOnQ8teRYo0bEWk589qrg598w,1752
|
|
52
52
|
clearskies/backends/json_backend.py,sha256=uDBqkekQadBm0BMoCVuzSPRB-5SjMTCDSAbuIqqwkF8,180
|
|
@@ -55,7 +55,7 @@ clearskies/backends/restful_api_advanced_search_backend.py,sha256=uiR4SEKhLNmczY
|
|
|
55
55
|
clearskies/backends/secrets_backend.py,sha256=4lzrgdL_O_pgCT5HknV2gotFgp9GzjQ5_2n0-4H4kvs,2204
|
|
56
56
|
clearskies/binding_config.py,sha256=bF8LBNEgJacwKCqToAtDqN9hv5omzU7zt_4qB9KPtE0,457
|
|
57
57
|
clearskies/column_types/__init__.py,sha256=QHEFFd3wRXvaOR7uZk-bpVLlLoTiN3D4S8sBU9rFwCE,4330
|
|
58
|
-
clearskies/column_types/audit.py,sha256=
|
|
58
|
+
clearskies/column_types/audit.py,sha256=ac9IpcwDRY2JMrfwyH4Zb8Oo9raLcGWqEq9vSAkBxIg,9076
|
|
59
59
|
clearskies/column_types/belongs_to.py,sha256=tH1tbTOfjifSNuVjO-KbMF7GiUIoLfcDItrrS3TGGM8,11044
|
|
60
60
|
clearskies/column_types/boolean.py,sha256=1yyM1CUfgD84pPE65c1OP1Qjf_J0Z45hjPrDR51AUkQ,1878
|
|
61
61
|
clearskies/column_types/category_tree.py,sha256=PgNmzZPyqYS5NADH_QTCxLvDXZFxzv5ESKTkvPrrLXo,9140
|
|
@@ -141,7 +141,7 @@ clearskies/handlers/exceptions/not_found.py,sha256=xThOXiMfyYBaI2bhfOhpVoZ_vdw1h
|
|
|
141
141
|
clearskies/handlers/get.py,sha256=x9SogDd2ZvIYwv2UkNa_FUmmKMNd9XPadkbnBKbyTGo,6892
|
|
142
142
|
clearskies/handlers/health_check.py,sha256=m6H3psUql-I7hZao3fsxjrZnCjFJZ1ROTF-41g8Syww,2078
|
|
143
143
|
clearskies/handlers/input_processing.py,sha256=edtG6NQJZCte0Nq-j7SUMzp6vxgIIbLxeUGscWOALAs,3814
|
|
144
|
-
clearskies/handlers/list.py,sha256=
|
|
144
|
+
clearskies/handlers/list.py,sha256=RdhvcVA4ZgkdmOHl6iGBC-2jPhjYay0_kFHttmVoq9Q,25466
|
|
145
145
|
clearskies/handlers/mygrations.py,sha256=4iKpJKooqgNtAURwMl_FgsXUt8OYOaG_TY1OV1llQxY,2759
|
|
146
146
|
clearskies/handlers/request_method_routing.py,sha256=DgPEz3tgbaUkXHsOriPbIctfSf4Gm4NxfRdVulH91Kg,1636
|
|
147
147
|
clearskies/handlers/restful_api.py,sha256=1rJ2REX1sTAdbqaRuCclP375agrho4zNNQx6hXGa4nQ,9258
|
|
@@ -199,7 +199,7 @@ clearskies/tests/simple_api/models/__init__.py,sha256=nUA0W6fgXw_Bxa9CudkaDkC80t
|
|
|
199
199
|
clearskies/tests/simple_api/models/status.py,sha256=PEhPbaQh5qdUNHp8O0gz91LOLENAEBtqSaHxUPXchaM,699
|
|
200
200
|
clearskies/tests/simple_api/models/user.py,sha256=5_P4Tp1tTdX7PkMJ__epPM5MA7JAeVYGas69vcWloLc,819
|
|
201
201
|
clearskies/tests/simple_api/users_api.py,sha256=KYXCgEofDxHeRdQK67txN5oYUPvxxmB8JTku7L-apk4,2344
|
|
202
|
-
clear_skies-1.19.
|
|
203
|
-
clear_skies-1.19.
|
|
204
|
-
clear_skies-1.19.
|
|
205
|
-
clear_skies-1.19.
|
|
202
|
+
clear_skies-1.19.12.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
|
|
203
|
+
clear_skies-1.19.12.dist-info/METADATA,sha256=E8zPgCzyP7hE3uR9vkWkREkvPRvHU-zAQ0StlsoXZvM,1367
|
|
204
|
+
clear_skies-1.19.12.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
|
205
|
+
clear_skies-1.19.12.dist-info/RECORD,,
|
|
@@ -138,6 +138,17 @@ class CursorBackend(Backend):
|
|
|
138
138
|
next_page_data["start"] = int(start) + int(limit)
|
|
139
139
|
return records
|
|
140
140
|
|
|
141
|
+
def group_by_clause(self, group_by):
|
|
142
|
+
if not group_by:
|
|
143
|
+
return ""
|
|
144
|
+
escape = self._column_escape_character()
|
|
145
|
+
if "." not in group_by:
|
|
146
|
+
return f" GROUP BY {escape}{group_by}{escape}"
|
|
147
|
+
parts = group_by.split(".", 1)
|
|
148
|
+
table = parts[0]
|
|
149
|
+
column = parts[1]
|
|
150
|
+
return f" GROUP BY {escape}{table}{escape}.{escape}{column}{escape}"
|
|
151
|
+
|
|
141
152
|
def as_sql(self, configuration):
|
|
142
153
|
escape = self._column_escape_character()
|
|
143
154
|
[wheres, parameters] = self._conditions_as_wheres_and_parameters(configuration["wheres"])
|
|
@@ -162,11 +173,7 @@ class CursorBackend(Backend):
|
|
|
162
173
|
order_by = " ORDER BY " + ", ".join(sort_parts)
|
|
163
174
|
else:
|
|
164
175
|
order_by = ""
|
|
165
|
-
group_by = (
|
|
166
|
-
f" GROUP BY {escape}" + configuration["group_by_column"] + escape
|
|
167
|
-
if configuration["group_by_column"]
|
|
168
|
-
else ""
|
|
169
|
-
)
|
|
176
|
+
group_by = self.group_by_clause(configuration["group_by_column"])
|
|
170
177
|
limit = ""
|
|
171
178
|
if configuration["limit"]:
|
|
172
179
|
start = 0
|
|
@@ -195,7 +202,10 @@ class CursorBackend(Backend):
|
|
|
195
202
|
if not configuration["group_by_column"]:
|
|
196
203
|
query = f"SELECT COUNT(*) AS count FROM {table_name}{joins}{wheres}"
|
|
197
204
|
else:
|
|
198
|
-
|
|
205
|
+
group_by = self.group_by_clause(configuration["group_by_column"])
|
|
206
|
+
query = (
|
|
207
|
+
f"SELECT COUNT(*) AS count FROM (SELECT 1 FROM {table_name}{joins}{wheres}{group_by}) AS count_inner"
|
|
208
|
+
)
|
|
199
209
|
return [query, parameters]
|
|
200
210
|
|
|
201
211
|
def _conditions_as_wheres_and_parameters(self, conditions):
|
clearskies/column_types/audit.py
CHANGED
clearskies/handlers/list.py
CHANGED
|
@@ -255,11 +255,13 @@ class List(Base):
|
|
|
255
255
|
|
|
256
256
|
# common checks for group_by and default_sort_column
|
|
257
257
|
for config_name in ["group_by", "default_sort_column"]:
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
258
|
+
value = configuration.get(config_name)
|
|
259
|
+
if not value:
|
|
260
|
+
continue
|
|
261
|
+
# we're being lazy for now and not checking complicated values
|
|
262
|
+
if "." in value:
|
|
263
|
+
continue
|
|
264
|
+
if value not in self._columns:
|
|
263
265
|
raise ValueError(
|
|
264
266
|
f"{error_prefix} '{config_name}' references column named {column_name} "
|
|
265
267
|
+ f"but this column does not exist for model '{model_class_name}'"
|
|
File without changes
|
|
File without changes
|