Skip to content

Commit de90d15

Browse files
author
labkey-ians
committed
Spec Support Python 3
in-progress changes to merge
1 parent 10b6fb1 commit de90d15

File tree

1 file changed

+51
-10
lines changed

1 file changed

+51
-10
lines changed

labkey/query.py

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,18 @@
4545
############################################################################
4646
"""
4747
from __future__ import unicode_literals
48-
import json
48+
from enum import Enum
4949

5050
from requests.exceptions import SSLError
5151
from labkey.utils import build_url, handle_response
5252

53-
_query_headers = {
54-
'Content-Type': 'application/json'
55-
}
53+
54+
class Pagination(Enum):
55+
paginated = 0
56+
selected = 1
57+
unselected = 2
58+
all = 3
59+
none = 4
5660

5761

5862
def delete_rows(schema_name, query_name, rows, server_context, container_path=None):
@@ -107,15 +111,29 @@ def insert_rows(schema_name, query_name, rows, server_context, container_path=No
107111

108112

109113
# TODO: Support all the properties
110-
def select_rows(schema_name, query_name, server_context, view_name=None,
111-
filter_array=None, container_path=None, columns=None, max_rows=None, sort=None,
112-
offset=None, container_filter=None):
114+
def select_rows(schema_name, query_name, server_context,
115+
view_name=None,
116+
filter_array=None,
117+
container_path=None,
118+
columns=None,
119+
max_rows=None,
120+
sort=None,
121+
offset=None,
122+
container_filter=None,
123+
parameters=None,
124+
show_rows=None,
125+
include_total_count=None,
126+
include_details_column=None,
127+
include_update_column=None,
128+
# selection_key=None,
129+
timeout=None,
130+
required_version=None
131+
):
113132
# TODO: Support data_region_name
114133
url = build_url('query', 'getQuery.api', server_context, container_path=container_path)
115-
116134
payload = {
117135
'schemaName': schema_name,
118-
'query.queryName': query_name
136+
'query.queryName': query_name,
119137
}
120138

121139
# TODO: Roll these checks up
@@ -142,6 +160,27 @@ def select_rows(schema_name, query_name, server_context, view_name=None,
142160
if container_filter is not None:
143161
payload['query.containerFilter'] = container_filter
144162

163+
if parameters is not None:
164+
payload['query.parameters'] = parameters
165+
166+
if show_rows is not None:
167+
payload['query.showRows'] = show_rows
168+
169+
if include_total_count is not None:
170+
payload['query.includeTotalCount'] = include_total_count
171+
172+
if include_details_column is not None:
173+
payload['query.includeDetailsColumn'] = include_details_column
174+
175+
if include_update_column is not None:
176+
payload['query.includeUpdateColumn'] = include_update_column
177+
178+
if timeout is not None:
179+
payload['query.timeout'] = timeout
180+
181+
if required_version is not None:
182+
payload['query.requiredVersion'] = required_version
183+
145184
select_rows_response = _make_request(server_context, url, payload)
146185
return select_rows_response
147186

@@ -162,7 +201,9 @@ def update_rows(schema_name, query_name, rows, server_context, container_path=No
162201
def _make_request(server_context, url, payload):
163202
try:
164203
session = server_context['session']
165-
raw_response = session.post(url, headers=_query_headers, data=json.dumps(payload))
204+
raw_response = session.post(url, data=payload)
166205
return handle_response(raw_response)
167206
except SSLError as e:
168207
raise Exception('Failed to match server SSL configuration. Ensure the server_context is configured correctly.')
208+
209+

0 commit comments

Comments
 (0)