finish adapting visualization to new fields loop, drilldown_x and drilldown_y

This commit is contained in:
Benjamin Dauvergne 2017-02-28 14:08:00 +01:00
parent c1e52f05e1
commit 970dff985e
3 changed files with 46 additions and 5 deletions

View File

@ -0,0 +1,37 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
def rename_parameters(apps, schema_editor):
Visualization = apps.get_model('visualization', 'Visualization')
for v in Visualization.objects.all():
v.parameters['drilldown_y'] = (v.parameters.get('drilldown') or [None])[0]
v.parameters['measure'] = (v.parameters.get('measures') or [None])[0]
v.parameters.pop('drilldown', None)
v.parameters.pop('measures', None)
v.save()
def reverse_rename_parameters(apps, schema_editor):
Visualization = apps.get_model('visualization', 'Visualization')
for v in Visualization.objects.all():
drilldown_y = v.parameters.get('drilldown_y')
v.parameters['drilldown'] = [drilldown_y] if drilldown_y else []
measure = v.parameters.get('measure')
v.parameters['measures'] = [measure] if measure else []
v.parameters.pop('drilldown_y', None)
v.parameters.pop('measure', None)
v.save()
class Migration(migrations.Migration):
dependencies = [
('visualization', '0001_initial'),
]
operations = [
migrations.RunPython(rename_parameters, reverse_rename_parameters),
]

View File

@ -83,13 +83,15 @@ class Visualization(object):
except KeyError:
raise Http404('cube %s not found' % d['cube'])
representation = d['representation']
measures = [cube.measures[name] for name in d['measures']]
drilldown = [cube.dimensions[name] for name in d.get('drilldown', [])]
measure = cube.measures[d['measure']]
drilldown_x = cube.dimensions[d['drilldown_x']] if 'drilldown_x' in d else None
drilldown_y = cube.dimensions[d['drilldown_y']] if 'drilldown_y' in d else None
filters = d.get('filters', {})
loop = d.get('loop')
if loop:
loop = cube.dimensions[loop]
return cls(cube, representation, measures, drilldown=drilldown, filters=filters, loop=loop)
return cls(cube, representation, measure, drilldown_x=drilldown_x, drilldown_y=drilldown_y,
filters=filters, loop=loop)
@classmethod
def from_form(cls, cube, form):

View File

@ -149,8 +149,10 @@ class VisualizationView(views.AuthorizationMixin, ODSMixin, CubeDisplayMixin,
ctx = super(VisualizationView, self).get_context_data(**kwargs)
initial = {
'representation': self.visualization.representation,
'measures': [m.name for m in self.visualization.measures],
'drilldown': [d.name for d in self.visualization.drilldown],
'measure': self.visualization.measure.name,
'loop': self.visualization.loop and self.visualization.loop.name,
'drilldown_x': self.visualization.drilldown_x and self.visualization.drilldown_x.name,
'drilldown_y': self.visualization.drilldown_y and self.visualization.drilldown_y.name,
}
for key, value in self.visualization.filters.iteritems() or []:
if isinstance(value, list):