def test_default_expression_context(self): """ Test that the default expression context used to render TAL and TALES in the Analytics report is populated with the correct objects. """ analytics_tool = getToolByName(self.portal, 'portal_analytics', None) report = analytics_tool['site-visits-line'] context = self.portal request = self.portal.REQUEST renderer = getMultiAdapter((context, request, report), interface=IAnalyticsReportRenderer) expression = 'python:[context, request, today, date, timedelta, unique_list]' result = [ self.portal, self.portal.REQUEST, datetime.date.today(), getDate, getTimeDelta, unique_list, ] exp_context = renderer._getExpressionContext() evaluated_exp = evaluateTALES(expression, exp_context) self.assertEqual(evaluated_exp, result)
def test_default_expression_context(self): """ Test that the default expression context used to render TAL and TALES in the Analytics report is populated with the correct objects. """ analytics_tool = getToolByName(self.portal, 'portal_analytics', None) report = analytics_tool['site-visits-line'] context = self.portal request = self.portal.REQUEST renderer = getMultiAdapter( (context, request, report), interface=IAnalyticsReportRenderer ) expression = 'python:[context, request, today, date, timedelta, unique_list]' result = [ self.portal, self.portal.REQUEST, datetime.date.today(), getDate, getTimeDelta, unique_list, ] exp_context = renderer._getExpressionContext() evaluated_exp = evaluateTALES(expression, exp_context) self.assertEqual(evaluated_exp, result)
def _getVisualization(self): """ Returns an AnalyticsReportVisualization for this report. """ # Evaluate the visualization options. exp_context = self._getExpressionContext() options = evaluateTALES(dict([v.split(' ', 1) for v in self.report.viz_options]), exp_context) return AnalyticsReportVisualization(self.report, self.columns(), self.rows(), options)
def columns(self): """ Returns the evaluated table column headings. """ values_context = { 'dimension': self.dimension, 'metric': self.metric, 'possible_dates': self.possible_dates, } columns_context = self._getExpressionContext(values_context) return evaluateTALES(self.report.columns, columns_context)
def rows(self): """ Returns the evaluated table rows. """ values_vars = { 'dimension': self.dimension, 'metric': self.metric, 'possible_dates': self.possible_dates, } repeat_context = self._getExpressionContext(values_vars) repeat = evaluateTALES(self.report.row_repeat, repeat_context) rows = [] row_vars = values_vars.copy() row_vars.update({'columns': self.columns()}) for row in repeat: row_vars['row'] = row row_context = self._getExpressionContext(row_vars) rows.append(evaluateTALES(self.report.rows, row_context)) return rows
def query_criteria(self): """ Returns the evaluated query criteria. """ expressions = { 'dimensions': list(self.report.dimensions), 'metrics': list(self.report.metrics), 'filters': list(self.report.filters), 'sort': list(self.report.sort), 'start_date': str(self.report.start_date), 'end_date': str(self.report.end_date), 'max_results': str(self.report.max_results), } criteria = evaluateTALES(expressions, self._getExpressionContext()) criteria['ids'] = self.profile_ids() for plugin in self.plugins: plugin.processQueryCriteria(criteria) return criteria