def available_params(self): """ Merge parameter values into a dictionary of available parameters :param param_values: A dictionary of Query param values. :return: A merged dictionary of parameter names and values. Values of non-existent parameters are removed. """ p = extract_params(self.sql) if self.params: shared_dict_update(p, self.params) return p
def get_context_data(self, **kwargs): context = super(ReportsDetailView, self).get_context_data(**kwargs) res = self.report.execute_query_only() context['query'] = { 'id': self.report.id, 'title': self.report.title, 'description': self.report.description, 'params': extract_params(self.report.sql), } context.update({ 'html_filename': self.get_filename(self.report.title) + datetime.datetime.now().strftime('%Y%m%d') + '.html', 'tasks_enabled': ENABLE_TASKS, 'shared': self.report.shared, 'form': None, 'message': None, 'error': None, 'rows': EXPLORER_DEFAULT_ROWS, 'data': res.data, 'headers': res.headers, 'total_rows': len(res.data), 'duration': res.duration, 'has_stats': len([h for h in res.headers if h.summary]), 'no_jquery': True, 'snapshots': self.report.snapshots, 'ql_id': None, 'unsafe_rendering': UNSAFE_RENDERING, }) return context
def get_context_data(self, **kwargs): context = super(ReportsDetailView, self).get_context_data(**kwargs) self.report.execute_query_only() context["query"] = { "id": self.report.id, "title": self.report.title, "description": self.report.description, "params": extract_params(self.report.sql), } filename = self.get_filename( self.report.title) + datetime.datetime.now().strftime("%Y%m%d") context.update({ "html_filename": filename + ".html", "pdf_filename": filename + ".pdf", "excel_filename": filename + ".xlsx", "no_jquery": True, "unsafe_rendering": UNSAFE_RENDERING, }) return context
def get_context_data(self, **kwargs): context = super(ReportsDetailView, self).get_context_data(**kwargs) res = self.report.execute_query_only() context['query'] = { 'id': self.report.id, 'title': self.report.title, 'description': self.report.description, 'params': extract_params(self.report.sql), } filename = (self.get_filename(self.report.title) + datetime.datetime.now().strftime('%Y%m%d')) context.update({ 'html_filename': filename + '.html', 'pdf_filename': filename + '.pdf', 'excel_filename': filename + '.xlsx', 'no_jquery': True, 'unsafe_rendering': UNSAFE_RENDERING, }) return context
def test_extracting_params(self): sql = 'please swap $$this$$' expected = {'this': ''} self.assertEqual(extract_params(sql), expected)
def _assertSwap(self, tuple): self.assertEqual(extract_params(tuple[0]), tuple[1])
def available_params(self): p = extract_params(self.sql) if self.params: shared_dict_update(p, self.params) return p
def available_params(self, param_values=None): p = extract_params(self.sql) if param_values: shared_dict_update(p, param_values) return p
def test_extracting_params(self): sql = "please swap $$this$$" expected = {"this": ""} self.assertEqual(extract_params(sql), expected)