Skip to content

Commit 8bf047d

Browse files
Commit from GitHub Actions (auto-format)
1 parent 47fa970 commit 8bf047d

File tree

6 files changed

+105
-119
lines changed

6 files changed

+105
-119
lines changed

api/cueSearch/services/cardTemplate.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
logger = logging.getLogger(__name__)
1212

13+
1314
class CardTemplates:
1415
"""
1516
Service to create, read, update & delete operation on Search card template
@@ -136,13 +137,13 @@ def verifyCardTemplate(payload: dict):
136137
sampleParams = json.loads(json.dumps(SAMPLE_PARAMS))
137138
param = {
138139
**sampleParams,
139-
"templateTitle": payload['templateTitle'],
140-
"templateText": payload['templateText'],
141-
"templateSql": payload['templateSql'],
140+
"templateTitle": payload["templateTitle"],
141+
"templateText": payload["templateText"],
142+
"templateSql": payload["templateSql"],
142143
}
143144
response = SearchCardTemplateServices.renderTemplatesUnsafe(param)
144-
res.update(True,"Template rendered successfully")
145+
res.update(True, "Template rendered successfully")
145146
except Exception as ex:
146147
logger.error("Error in rendering templates: %s", str(ex))
147-
res.update(False,"Error occurred during rendering", str(ex))
148-
return res
148+
res.update(False, "Error occurred during rendering", str(ex))
149+
return res
Lines changed: 89 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,108 @@
1-
SAMPLE_PARAMS ={
2-
'dataset': 'Orders',
3-
'datasetId': 2,
4-
'datasetSql': "SELECT DATE_TRUNC('DAY', __time) as OrderDate,\n"'Brand, Color, State,\n''SUM("count") as Orders, ROUND(sum(OrderAmount),2) as ''OrderAmount, sum(OrderQuantity) as OrderQuantity\n''FROM FAKEORDERS\n'"WHERE __time >= CURRENT_TIMESTAMP - INTERVAL '13' MONTH \n"'GROUP BY 1, 2, 3, 4\n''ORDER BY 1',
5-
'dimensions': [
6-
'Brand',
7-
'Color',
8-
'State'
9-
],
10-
'filter': "( ( Brand = 'Adidas' OR Brand = 'Nike' ) ) AND ( State = 'MS' OR ""State = 'KS' )",
11-
'filterDimensions': [
12-
'Brand',
13-
'State'
14-
],
15-
'granularity': 'day',
16-
'groupedResultsForFilter': [
1+
SAMPLE_PARAMS = {
2+
"dataset": "Orders",
3+
"datasetId": 2,
4+
"datasetSql": "SELECT DATE_TRUNC('DAY', __time) as OrderDate,\n"
5+
"Brand, Color, State,\n"
6+
'SUM("count") as Orders, ROUND(sum(OrderAmount),2) as '
7+
"OrderAmount, sum(OrderQuantity) as OrderQuantity\n"
8+
"FROM FAKEORDERS\n"
9+
"WHERE __time >= CURRENT_TIMESTAMP - INTERVAL '13' MONTH \n"
10+
"GROUP BY 1, 2, 3, 4\n"
11+
"ORDER BY 1",
12+
"dimensions": ["Brand", "Color", "State"],
13+
"filter": "( ( Brand = 'Adidas' OR Brand = 'Nike' ) ) AND ( State = 'MS' OR "
14+
"State = 'KS' )",
15+
"filterDimensions": ["Brand", "State"],
16+
"granularity": "day",
17+
"groupedResultsForFilter": [
1718
[
1819
{
19-
'dataset': 'Orders',
20-
'datasetId': 2,
21-
'dimension': 'Brand',
22-
'globalDimensionName': 'Brand',
23-
'id': 2,
24-
'type': 'GLOBALDIMENSION',
25-
'user_entity_identifier': 'Brand',
26-
'value': 'Adidas'
20+
"dataset": "Orders",
21+
"datasetId": 2,
22+
"dimension": "Brand",
23+
"globalDimensionName": "Brand",
24+
"id": 2,
25+
"type": "GLOBALDIMENSION",
26+
"user_entity_identifier": "Brand",
27+
"value": "Adidas",
2728
},
2829
{
29-
'dataset': 'Orders',
30-
'datasetId': 2,
31-
'dimension': 'Brand',
32-
'globalDimensionName': 'Brand',
33-
'id': 2,
34-
'type': 'GLOBALDIMENSION',
35-
'user_entity_identifier': 'Brand',
36-
'value': 'Nike'
37-
}
30+
"dataset": "Orders",
31+
"datasetId": 2,
32+
"dimension": "Brand",
33+
"globalDimensionName": "Brand",
34+
"id": 2,
35+
"type": "GLOBALDIMENSION",
36+
"user_entity_identifier": "Brand",
37+
"value": "Nike",
38+
},
3839
],
3940
[
4041
{
41-
'dataset': 'Orders',
42-
'datasetId': 2,
43-
'dimension': 'State',
44-
'globalDimensionName': 'Region',
45-
'id': 1,
46-
'type': 'GLOBALDIMENSION',
47-
'user_entity_identifier': 'Region',
48-
'value': 'MS'
42+
"dataset": "Orders",
43+
"datasetId": 2,
44+
"dimension": "State",
45+
"globalDimensionName": "Region",
46+
"id": 1,
47+
"type": "GLOBALDIMENSION",
48+
"user_entity_identifier": "Region",
49+
"value": "MS",
4950
},
5051
{
51-
'dataset': 'Orders',
52-
'datasetId': 2,
53-
'dimension': 'State',
54-
'globalDimensionName': 'Region',
55-
'id': 1,
56-
'type': 'GLOBALDIMENSION',
57-
'user_entity_identifier': 'Region',
58-
'value': 'KS'
59-
}
60-
]
61-
],
62-
'metrics': [
63-
'Orders',
64-
'OrderAmount',
65-
'OrderQuantity'
52+
"dataset": "Orders",
53+
"datasetId": 2,
54+
"dimension": "State",
55+
"globalDimensionName": "Region",
56+
"id": 1,
57+
"type": "GLOBALDIMENSION",
58+
"user_entity_identifier": "Region",
59+
"value": "KS",
60+
},
61+
],
6662
],
67-
'renderType': 'line',
68-
'searchResults': [
63+
"metrics": ["Orders", "OrderAmount", "OrderQuantity"],
64+
"renderType": "line",
65+
"searchResults": [
6966
{
70-
'dataset': 'Orders',
71-
'datasetId': 2,
72-
'dimension': 'State',
73-
'globalDimensionName': 'Region',
74-
'id': 1,
75-
'type': 'GLOBALDIMENSION',
76-
'user_entity_identifier': 'Region',
77-
'value': 'MS'
67+
"dataset": "Orders",
68+
"datasetId": 2,
69+
"dimension": "State",
70+
"globalDimensionName": "Region",
71+
"id": 1,
72+
"type": "GLOBALDIMENSION",
73+
"user_entity_identifier": "Region",
74+
"value": "MS",
7875
},
7976
{
80-
'dataset': 'Orders',
81-
'datasetId': 2,
82-
'dimension': 'State',
83-
'globalDimensionName': 'Region',
84-
'id': 1,
85-
'type': 'GLOBALDIMENSION',
86-
'user_entity_identifier': 'Region',
87-
'value': 'KS'
77+
"dataset": "Orders",
78+
"datasetId": 2,
79+
"dimension": "State",
80+
"globalDimensionName": "Region",
81+
"id": 1,
82+
"type": "GLOBALDIMENSION",
83+
"user_entity_identifier": "Region",
84+
"value": "KS",
8885
},
8986
{
90-
'dataset': 'Orders',
91-
'datasetId': 2,
92-
'dimension': 'Brand',
93-
'globalDimensionName': 'Brand',
94-
'id': 2,
95-
'type': 'GLOBALDIMENSION',
96-
'user_entity_identifier': 'Brand',
97-
'value': 'Adidas'
87+
"dataset": "Orders",
88+
"datasetId": 2,
89+
"dimension": "Brand",
90+
"globalDimensionName": "Brand",
91+
"id": 2,
92+
"type": "GLOBALDIMENSION",
93+
"user_entity_identifier": "Brand",
94+
"value": "Adidas",
9895
},
9996
{
100-
'dataset': 'Orders',
101-
'datasetId': 2,
102-
'dimension': 'Brand',
103-
'globalDimensionName': 'Brand',
104-
'id': 2,
105-
'type': 'GLOBALDIMENSION',
106-
'user_entity_identifier': 'Brand',
107-
'value': 'Nike'
108-
}
97+
"dataset": "Orders",
98+
"datasetId": 2,
99+
"dimension": "Brand",
100+
"globalDimensionName": "Brand",
101+
"id": 2,
102+
"type": "GLOBALDIMENSION",
103+
"user_entity_identifier": "Brand",
104+
"value": "Nike",
105+
},
109106
],
110-
'timestampColumn': 'OrderDate'
107+
"timestampColumn": "OrderDate",
111108
}

api/cueSearch/services/searchCardTemplate.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -211,12 +211,8 @@ def renderTemplatesUnsafe(param: dict):
211211
titles = (
212212
Template(param["templateTitle"]).render(Context(param)).split(delimiter)
213213
)
214-
texts = (
215-
Template(param["templateText"]).render(Context(param)).split(delimiter)
216-
)
217-
sqls = (
218-
Template(param["templateSql"]).render(Context(param)).split(delimiter)
219-
)
214+
texts = Template(param["templateText"]).render(Context(param)).split(delimiter)
215+
sqls = Template(param["templateSql"]).render(Context(param)).split(delimiter)
220216
if len(titles) != len(texts) or len(titles) != len(sqls):
221217
raise ValueError(
222218
"Inconsistent use of delimiter (%s) in title, text, sql of template"
@@ -230,7 +226,6 @@ def renderTemplatesUnsafe(param: dict):
230226

231227
return response
232228

233-
234229
@staticmethod
235230
def getSearchSuggestions(query):
236231
"""Get searchsuggestion for search dropdown"""

api/cueSearch/tests/test_cardTemplate.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,14 @@ def testCardTemplates(client, mocker):
7171
assert response.status_code == 200
7272
assert response.data["success"]
7373

74-
75-
7674

7775
@pytest.mark.django_db(transaction=True)
7876
def testVerifyCardTemplates(client, mocker):
7977

80-
templateTitle = "{% load event_tags %} {% for filterDim in filterDimensions %} {% conditionalCount searchResults 'dimension' filterDim as dimCount %} {% if dimCount > 1 %} {% for metricName in metrics %} Comparison of <span style=\"background:#eee; padding: 0 4px; border-radius: 4px;\">{{metricName}}</span> among <span style=\"background:#eee; padding: 0 4px; border-radius: 4px;\">{{filterDim}}</span> values in <span style=\"background:#eee; padding: 0 4px; border-radius: 4px;\">{{dataset}}</span> +-; {% endfor %} {% endif %} {% endfor %}"
81-
templateText = "{% load event_tags %} {% for filterDim in filterDimensions %} {% conditionalCount searchResults 'dimension' filterDim as dimCount %} {% if dimCount > 1 %} {% for metricName in metrics %} This chart displays filtered values on dimension <span style=\"background:#eee; padding: 0 4px; border-radius: 4px;\">{{filterDim}}</span> along with other filters applied i.e. <span style=\"background:#eee; padding: 0 4px; border-radius: 4px;\">{{filter|safe}}</span> for metric <span style=\"background:#eee; padding: 0 4px; border-radius: 4px;\">{{metricName}}</span> on dataset <span style=\"background:#eee; padding: 0 4px; border-radius: 4px;\">{{dataset}}</span> +-; {% endfor %} {% endif %} {% endfor %}"
82-
templateSql = "{% load event_tags %} {% for filterDim in filterDimensions %} {% conditionalCount searchResults 'dimension' filterDim as dimCount %} {% if dimCount > 1 %} {% for metricName in metrics %} SELECT \"templatetable\".\"{{ timestampColumn }}\", \"templatetable\".\"{{ filterDim }}\", SUM(\"templatetable\".\"{{ metricName }}\") as {{metricName}} FROM ({{ datasetSql|safe }}) AS templatetable WHERE {% for orResults in groupedResultsForFilter %} {% for orResult in orResults %} \"templatetable\".\"{{ orResult.dimension }}\" = '{{ orResult.value }}' OR {% endfor %} True AND {% endfor %} True GROUP BY 1, 2 limit 500 +-; {% endfor %} {% endif %} {% endfor %}"
83-
noVariableTemplateSql = "{% load event_tags %} {% for filterDim in filterDimensionx %} {% conditionalCount searchResults 'dimension' filterDim as dimCount %} {% if dimCount > 1 %} {% for metricName in metrics %} SELECT \"templatetable\".\"{{ timestampColumn }}\", \"templatetable\".\"{{ filterDim }}\", SUM(\"templatetable\".\"{{ metricName }}\") as {{metricName}} FROM ({{ datasetSql|safe }}) AS templatetable WHERE {% for orResults in groupedResultsForFilter %} {% for orResult in orResults %} \"templatetable\".\"{{ orResult.dimension }}\" = '{{ orResult.value }}' OR {% endfor %} True AND {% endfor %} True GROUP BY 1, 2 limit 500 +-; {% endfor %} {% endif %} {% endfor %}"
78+
templateTitle = '{% load event_tags %} {% for filterDim in filterDimensions %} {% conditionalCount searchResults \'dimension\' filterDim as dimCount %} {% if dimCount > 1 %} {% for metricName in metrics %} Comparison of <span style="background:#eee; padding: 0 4px; border-radius: 4px;">{{metricName}}</span> among <span style="background:#eee; padding: 0 4px; border-radius: 4px;">{{filterDim}}</span> values in <span style="background:#eee; padding: 0 4px; border-radius: 4px;">{{dataset}}</span> +-; {% endfor %} {% endif %} {% endfor %}'
79+
templateText = '{% load event_tags %} {% for filterDim in filterDimensions %} {% conditionalCount searchResults \'dimension\' filterDim as dimCount %} {% if dimCount > 1 %} {% for metricName in metrics %} This chart displays filtered values on dimension <span style="background:#eee; padding: 0 4px; border-radius: 4px;">{{filterDim}}</span> along with other filters applied i.e. <span style="background:#eee; padding: 0 4px; border-radius: 4px;">{{filter|safe}}</span> for metric <span style="background:#eee; padding: 0 4px; border-radius: 4px;">{{metricName}}</span> on dataset <span style="background:#eee; padding: 0 4px; border-radius: 4px;">{{dataset}}</span> +-; {% endfor %} {% endif %} {% endfor %}'
80+
templateSql = '{% load event_tags %} {% for filterDim in filterDimensions %} {% conditionalCount searchResults \'dimension\' filterDim as dimCount %} {% if dimCount > 1 %} {% for metricName in metrics %} SELECT "templatetable"."{{ timestampColumn }}", "templatetable"."{{ filterDim }}", SUM("templatetable"."{{ metricName }}") as {{metricName}} FROM ({{ datasetSql|safe }}) AS templatetable WHERE {% for orResults in groupedResultsForFilter %} {% for orResult in orResults %} "templatetable"."{{ orResult.dimension }}" = \'{{ orResult.value }}\' OR {% endfor %} True AND {% endfor %} True GROUP BY 1, 2 limit 500 +-; {% endfor %} {% endif %} {% endfor %}'
81+
noVariableTemplateSql = '{% load event_tags %} {% for filterDim in filterDimensionx %} {% conditionalCount searchResults \'dimension\' filterDim as dimCount %} {% if dimCount > 1 %} {% for metricName in metrics %} SELECT "templatetable"."{{ timestampColumn }}", "templatetable"."{{ filterDim }}", SUM("templatetable"."{{ metricName }}") as {{metricName}} FROM ({{ datasetSql|safe }}) AS templatetable WHERE {% for orResults in groupedResultsForFilter %} {% for orResult in orResults %} "templatetable"."{{ orResult.dimension }}" = \'{{ orResult.value }}\' OR {% endfor %} True AND {% endfor %} True GROUP BY 1, 2 limit 500 +-; {% endfor %} {% endif %} {% endfor %}'
8482

8583
# Testing the card templete api
8684
path = reverse("verifyCardTemplates")
@@ -93,7 +91,6 @@ def testVerifyCardTemplates(client, mocker):
9391
assert response.status_code == 200
9492
assert response.data["success"] == True
9593

96-
9794
path = reverse("verifyCardTemplates")
9895
payload = {
9996
"templateTitle": templateTitle,
@@ -125,4 +122,3 @@ def testVerifyCardTemplates(client, mocker):
125122
response = client.post(path, payload, content_type="application/json")
126123
assert response.status_code == 200
127124
assert response.data["success"] == True
128-

api/cueSearch/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,10 @@ def pubCardTemplate(request: HttpRequest) -> Response:
158158
res = CardTemplates.publishedCardTemplate(payload)
159159
return Response(res.json())
160160

161-
@api_view(['POST'])
161+
162+
@api_view(["POST"])
162163
def verifyCardTemplate(request: HttpRequest) -> Response:
163164
"""Method to verify sql"""
164165
payload = request.data
165166
res = CardTemplates.verifyCardTemplate(payload)
166167
return Response(res.json())
167-

test.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
param = {
2-
"id":1,
3-
"color":"black"
4-
}
1+
param = {"id": 1, "color": "black"}

0 commit comments

Comments
 (0)