quillsql 2.2.1__py3-none-any.whl → 2.2.3__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.
quillsql/core.py CHANGED
@@ -113,8 +113,9 @@ class Quill:
113
113
  **metadata,
114
114
  "tenants": tenants,
115
115
  "flags": flags,
116
- "adminEnabled": admin_enabled,
117
116
  }
117
+ if admin_enabled is not None:
118
+ pivot_payload["adminEnabled"] = admin_enabled
118
119
  if filters is not None:
119
120
  pivot_payload["sdkFilters"] = [
120
121
  convert_custom_filter(f) for f in filters
@@ -212,17 +213,16 @@ class Quill:
212
213
  tenants[0] != SINGLE_TENANT
213
214
  ):
214
215
 
215
- response = self.post_quill(
216
- 'tenant-mapped-flags',
217
- {
218
- 'reportId': metadata.get('reportId') or metadata.get('dashboardItemId'),
219
- 'clientId': metadata.get('clientId'),
220
- 'dashboardName': metadata.get('name'),
221
- 'tenants': tenants,
222
- 'flags': flags,
223
- 'adminEnabled': admin_enabled,
224
- },
225
- )
216
+ tenant_flags_payload = {
217
+ 'reportId': metadata.get('reportId') or metadata.get('dashboardItemId'),
218
+ 'clientId': metadata.get('clientId'),
219
+ 'dashboardName': metadata.get('name'),
220
+ 'tenants': tenants,
221
+ 'flags': flags,
222
+ }
223
+ if admin_enabled is not None:
224
+ tenant_flags_payload['adminEnabled'] = admin_enabled
225
+ response = self.post_quill('tenant-mapped-flags', tenant_flags_payload)
226
226
 
227
227
  if response.get('error'):
228
228
  return {
@@ -236,16 +236,22 @@ class Quill:
236
236
  self.target_connection.database_type,
237
237
  )
238
238
 
239
- tenant_flags = [
240
- {
241
- 'tenantField': tenant_field,
242
- 'flags': list(set(row['quill_flag'] for row in query_result['rows']))
239
+ tenant_flags = []
240
+ query_order = response.get('metadata', {}).get('queryOrder') or []
241
+ query_results = (flag_query_results or {}).get('queryResults') or []
242
+ for tenant_field, query_result in zip(query_order, query_results):
243
+ rows = []
244
+ if isinstance(query_result, dict):
245
+ rows = query_result.get('rows') or []
246
+ flags = {
247
+ row.get('quill_flag')
248
+ for row in rows
249
+ if isinstance(row, dict) and row.get('quill_flag') is not None
243
250
  }
244
- for tenant_field, query_result in zip(
245
- response['metadata']['queryOrder'],
246
- flag_query_results['queryResults']
247
- )
248
- ]
251
+ tenant_flags.append({
252
+ 'tenantField': tenant_field,
253
+ 'flags': list(flags),
254
+ })
249
255
  elif tenants[0] == SINGLE_TENANT and flags:
250
256
  if flags and isinstance(flags[0], dict):
251
257
  tenant_flags = [{'tenantField': SINGLE_TENANT, 'flags': flags}]
@@ -277,14 +283,15 @@ class Quill:
277
283
  and metadata.get("runQueryConfig").get("getColumns")
278
284
  else None
279
285
  )
280
- payload = {
286
+ payload: dict = {
281
287
  **metadata,
282
288
  "tenants": tenants,
283
289
  "flags": tenant_flags,
284
290
  "viewQuery": view_query,
285
291
  "preQueryResultsColumns": pre_query_columns,
286
- "adminEnabled": admin_enabled,
287
292
  }
293
+ if admin_enabled is not None:
294
+ payload["adminEnabled"] = admin_enabled
288
295
  if filters is not None:
289
296
  payload["sdkFilters"] = [convert_custom_filter(f) for f in filters]
290
297
  quill_results = self.post_quill(metadata.get("task"), payload)
@@ -329,17 +336,18 @@ class Quill:
329
336
  normalized_results.get("queryResults") or []
330
337
  )
331
338
 
332
- if (
333
- normalized_results.get("mapped_array")
334
- and metadata.get("runQueryConfig", {}).get("arrayToMap")
335
- ):
336
- array_to_map = metadata["runQueryConfig"]["arrayToMap"]
337
- for array, index in zip(
338
- normalized_results["mapped_array"],
339
- range(len(normalized_results["mapped_array"])),
340
- ):
341
- responseMetadata[array_to_map["arrayName"]][index][array_to_map["field"]] = array
342
- del normalized_results["mapped_array"]
339
+ run_query_config = responseMetadata.get("runQueryConfig") or {}
340
+ array_to_map = run_query_config.get("arrayToMap")
341
+ if normalized_results.get("mapped_array") and array_to_map:
342
+ target_collection = responseMetadata.get(array_to_map.get("arrayName"))
343
+ if isinstance(target_collection, list):
344
+ for index, mapped_rows in enumerate(normalized_results["mapped_array"]):
345
+ if index >= len(target_collection):
346
+ continue
347
+ target_entry = target_collection[index]
348
+ if isinstance(target_entry, dict):
349
+ target_entry[array_to_map.get("field")] = mapped_rows
350
+ normalized_results.pop("mapped_array", None)
343
351
 
344
352
  query_results_list = normalized_results.get("queryResults") or []
345
353
  if len(query_results_list) == 1:
@@ -354,15 +362,14 @@ class Quill:
354
362
 
355
363
  except Exception as err:
356
364
  if task == "update-view":
357
- self.post_quill(
358
- "set-broken-view",
359
- {
360
- "table": metadata.get("name"),
361
- "clientId": metadata.get("clientId"),
362
- "error": str(err),
363
- "adminEnabled": admin_enabled,
364
- },
365
- )
365
+ broken_view_payload = {
366
+ "table": metadata.get("name"),
367
+ "clientId": metadata.get("clientId"),
368
+ "error": str(err),
369
+ }
370
+ if admin_enabled is not None:
371
+ broken_view_payload["adminEnabled"] = admin_enabled
372
+ self.post_quill("set-broken-view", broken_view_payload)
366
373
  return {
367
374
  "error": str(err).splitlines()[0],
368
375
  "status": "error",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: quillsql
3
- Version: 2.2.1
3
+ Version: 2.2.3
4
4
  Summary: Quill SDK for Python.
5
5
  Home-page: https://github.com/quill-sql/quill-python
6
6
  Author: Quill
@@ -1,5 +1,5 @@
1
1
  quillsql/__init__.py,sha256=FiuoxaNZveKXOPB0hkpfGNlpZKmSn3pRwcqm9HKYbCQ,180
2
- quillsql/core.py,sha256=cWWu_ME3kapzv1fBhoJLmkA7QIlbVCAOMHyce_VE3BU,22464
2
+ quillsql/core.py,sha256=gUyM_To8Gdw30KFLqFLnvXykxCFoC7NE-A61cToEdXQ,23285
3
3
  quillsql/error.py,sha256=n9VKHw4FAgg7ZEAz2YQ8L_8FdRG_1shwGngf2iWhUSM,175
4
4
  quillsql/assets/__init__.py,sha256=oXQ2ZS5XDXkXTYjADxNfGt55cIn_rqfgWL2EDqjTyoI,45
5
5
  quillsql/assets/pgtypes.py,sha256=-B_2wUaoAsdX7_HnJhUlx4ptZQ6x-cXwuST9ACgGFdE,33820
@@ -14,7 +14,7 @@ quillsql/utils/pivot_template.py,sha256=NzHO7Ux8GVAKY-DUtsOmE7TUls2q6FJG2kgJxVWq
14
14
  quillsql/utils/run_query_processes.py,sha256=FRmNvjTDLUBr7MqDKQmivdC0anwybMXUyzQbKnaZx70,698
15
15
  quillsql/utils/schema_conversion.py,sha256=TFfMibN9nOsxNRhHw5YIFl3jGTvipG81bxX4LFDulUY,314
16
16
  quillsql/utils/tenants.py,sha256=ZD2FuKz0gjBVSsThHDv1P8PU6EL8E009NWihE5hAH-Q,2022
17
- quillsql-2.2.1.dist-info/METADATA,sha256=AImLKL4nUys0Yz6i_12iPMHLxi4q5KHnxZJWRoIyw7U,1786
18
- quillsql-2.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
19
- quillsql-2.2.1.dist-info/top_level.txt,sha256=eU2vHnVqwpYQJ3ADl1Q-DIBzbYejZRUhcMdN_4zMCz8,9
20
- quillsql-2.2.1.dist-info/RECORD,,
17
+ quillsql-2.2.3.dist-info/METADATA,sha256=m_GfCogVSbSTxw0MGKq-scyOyeipyRbcoU40BHE0yq4,1786
18
+ quillsql-2.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
19
+ quillsql-2.2.3.dist-info/top_level.txt,sha256=eU2vHnVqwpYQJ3ADl1Q-DIBzbYejZRUhcMdN_4zMCz8,9
20
+ quillsql-2.2.3.dist-info/RECORD,,