dataviz: get request when possible on subfilters update (#65615)
This commit is contained in:
parent
eed78d8f6a
commit
d05406d9a0
|
@ -40,6 +40,7 @@ from requests.exceptions import RequestException
|
|||
|
||||
from combo.data.library import register_cell_class
|
||||
from combo.data.models import CellBase, django_template_validator
|
||||
from combo.middleware import get_request
|
||||
from combo.utils import get_templated_url, requests, spooler
|
||||
|
||||
|
||||
|
@ -457,10 +458,10 @@ class ChartNgCell(CellBase):
|
|||
|
||||
@cached_property
|
||||
def request_context(self):
|
||||
if not hasattr(self, '_request'):
|
||||
if not getattr(self, '_request', None):
|
||||
raise MissingRequest
|
||||
|
||||
ctx = RequestContext(self._request, self._request.extra_context)
|
||||
ctx = RequestContext(self._request, getattr(self._request, 'extra_context', {}))
|
||||
ctx['request'] = self._request
|
||||
return ctx
|
||||
|
||||
|
@ -715,6 +716,7 @@ class ChartNgCell(CellBase):
|
|||
return self.statistic.filters + self.subfilters
|
||||
|
||||
def update_subfilters(self):
|
||||
self._request = get_request()
|
||||
response = self.get_statistic_data()
|
||||
try:
|
||||
response.raise_for_status()
|
||||
|
|
|
@ -57,7 +57,6 @@ class DatavizGraphView(DetailView):
|
|||
if not form.is_valid():
|
||||
return self.error(_('Wrong parameters.'))
|
||||
|
||||
request.extra_context = {}
|
||||
if request.GET.get('ctx'):
|
||||
try:
|
||||
request.extra_context = signing.loads(request.GET['ctx'])
|
||||
|
|
|
@ -2573,3 +2573,24 @@ def test_spooler_refresh_statistics_data_bijoe(statistics):
|
|||
|
||||
refresh_statistics_data(cell.pk)
|
||||
assert len(bijoe_mock.call['requests']) == 1
|
||||
|
||||
|
||||
@with_httmock(new_api_mock)
|
||||
def test_chartng_cell_subfilter_page_variable(new_api_statistics, app, admin_user, nocache):
|
||||
page = Page.objects.create(title='One', slug='index', extra_variables={'foo': 'bar'})
|
||||
cell = ChartNgCell.objects.create(page=page, order=1, placeholder='content')
|
||||
cell.statistic = Statistic.objects.get(slug='with-subfilter')
|
||||
cell.save()
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/pages/%s/' % page.id)
|
||||
|
||||
# set filter value to page variable
|
||||
field_prefix = 'cdataviz_chartngcell-%s-' % cell.id
|
||||
resp.form[field_prefix + 'other'] = 'variable:foo'
|
||||
manager_submit_cell(resp.form)
|
||||
|
||||
# change choice with subfilters
|
||||
resp.form[field_prefix + 'form'] = 'food-request'
|
||||
manager_submit_cell(resp.form)
|
||||
assert field_prefix + 'menu' in resp.form.fields
|
||||
|
|
Loading…
Reference in New Issue