Projet

Général

Profil

0001-visualization-share-warehouses-between-visualization.patch

Valentin Deniaud, 25 novembre 2019 14:31

Télécharger (3,72 ko)

Voir les différences:

Subject: [PATCH] visualization: share warehouses between visualizations
 (#37913)

 bijoe/views.py                |  2 +-
 bijoe/visualization/models.py | 18 +++++++++++++++++-
 bijoe/visualization/utils.py  | 10 ++++++----
 bijoe/visualization/views.py  |  3 +++
 4 files changed, 27 insertions(+), 6 deletions(-)
bijoe/views.py
59 59

  
60 60
    def get_context_data(self, **kwargs):
61 61
        ctx = super(HomepageView, self).get_context_data(**kwargs)
62
        ctx['visualizations'] = Visualization.objects.all()
62
        ctx['visualizations'] = Visualization.all_visualizations()
63 63
        ctx['warehouses'] = sorted((Engine(w) for w in get_warehouses()),
64 64
                                   key=lambda w: w.label)
65 65
        return ctx
bijoe/visualization/models.py
23 23
from django.utils.translation import ugettext_lazy as _
24 24
from jsonfield import JSONField
25 25

  
26
from bijoe.utils import get_warehouses
27

  
26 28
from .utils import Visualization as VisuUtils
27 29

  
28 30

  
......
69 71
    @property
70 72
    def exists(self):
71 73
        try:
72
            VisuUtils.get_cube(self.parameters)
74
            VisuUtils.get_cube(self.parameters, self.warehouses)
73 75
            return True
74 76
        except Http404:
75 77
            return False
78

  
79
    @property
80
    def warehouses(self):
81
        if not hasattr(self, '_warehouses'):
82
            self._warehouses = get_warehouses()
83
        return self._warehouses
84

  
85
    @classmethod
86
    def all_visualizations(cls):
87
        visualizations = cls.objects.all()
88
        warehouses = get_warehouses()
89
        for visu in visualizations:
90
            visu._warehouses = warehouses
91
        return visualizations
bijoe/visualization/utils.py
75 75
                             filters=copy.deepcopy(self.filters), loop=self.loop)
76 76

  
77 77
    @staticmethod
78
    def get_cube(d):
79
        for warehouse in get_warehouses():
78
    def get_cube(d, warehouses=None):
79
        if not warehouses:
80
            warehouses = get_warehouses()
81
        for warehouse in warehouses:
80 82
            if d['warehouse'] == warehouse.name:
81 83
                break
82 84
        else:
......
88 90
            raise Http404('cube %s not found' % d['cube'])
89 91

  
90 92
    @classmethod
91
    def from_json(cls, d):
92
        cube = cls.get_cube(d)
93
    def from_json(cls, d, warehouses=None):
94
        cube = cls.get_cube(d, warehouses)
93 95
        representation = d['representation']
94 96
        measure = cube.measures[d['measure']]
95 97
        drilldown_x = cube.dimensions[d['drilldown_x']] if 'drilldown_x' in d else None
bijoe/visualization/views.py
187 187
    model = models.Visualization
188 188
    context_object_name = 'visualizations'
189 189

  
190
    def get_queryset(self):
191
        return Visualization.all_visualizations()
192

  
190 193

  
191 194
class RenameVisualization(views.AuthorizationMixin, UpdateView):
192 195
    model = models.Visualization
193
-