Projet

Général

Profil

0001-utils-get-tenant-from-import-rather-than-request-274.patch

Valentin Deniaud, 21 novembre 2019 11:58

Télécharger (5,67 ko)

Voir les différences:

Subject: [PATCH 1/4] utils: get tenant from import rather than request
 (#27412)

 bijoe/utils.py               |  7 ++++---
 bijoe/views.py               |  2 +-
 bijoe/visualization/utils.py |  4 ++--
 bijoe/visualization/views.py | 13 ++++++-------
 4 files changed, 13 insertions(+), 13 deletions(-)
bijoe/utils.py
19 19
import json
20 20

  
21 21
from django.conf import settings
22
from django.db import connection
22 23
from django.utils.translation import ugettext as _
23 24

  
24 25
from .schemas import Warehouse
25 26

  
26 27

  
27
def get_warehouses(request=None):
28
def get_warehouses():
28 29
    warehouses = []
29 30
    for pattern in settings.BIJOE_SCHEMAS:
30 31
        for path in glob.glob(pattern):
31 32
            warehouses.append(Warehouse.from_json(json.load(open(path))))
32
    if hasattr(request, 'tenant'):
33
        pattern = os.path.join(request.tenant.get_directory(), 'schemas', '*.model')
33
    if hasattr(connection, 'tenant'):
34
        pattern = os.path.join(connection.tenant.get_directory(), 'schemas', '*.model')
34 35
        for path in glob.glob(pattern):
35 36
            warehouses.append(Warehouse.from_json(json.load(open(path))))
36 37
    return warehouses
bijoe/views.py
59 59
    def get_context_data(self, **kwargs):
60 60
        ctx = super(HomepageView, self).get_context_data(**kwargs)
61 61
        ctx['visualizations'] = Visualization.objects.all()
62
        ctx['warehouses'] = sorted((Engine(w) for w in get_warehouses(self.request)),
62
        ctx['warehouses'] = sorted((Engine(w) for w in get_warehouses()),
63 63
                                   key=lambda w: w.label)
64 64
        return ctx
65 65

  
bijoe/visualization/utils.py
75 75
                             filters=copy.deepcopy(self.filters), loop=self.loop)
76 76

  
77 77
    @classmethod
78
    def from_json(cls, d, request=None):
79
        for warehouse in get_warehouses(request=request):
78
    def from_json(cls, d):
79
        for warehouse in get_warehouses():
80 80
            if d['warehouse'] == warehouse.name:
81 81
                break
82 82
        else:
bijoe/visualization/views.py
46 46
    def get_context_data(self, **kwargs):
47 47
        ctx = super(WarehouseView, self).get_context_data(**kwargs)
48 48
        try:
49
            warehouse = [warehouse for warehouse in get_warehouses(self.request)
49
            warehouse = [warehouse for warehouse in get_warehouses()
50 50
                         if warehouse.name == self.kwargs['warehouse']][0]
51 51
        except IndexError:
52 52
            raise Http404
......
72 72

  
73 73
    def dispatch(self, request, *args, **kwargs):
74 74
        try:
75
            self.warehouse = Engine([warehouse for warehouse in get_warehouses(self.request)
75
            self.warehouse = Engine([warehouse for warehouse in get_warehouses()
76 76
                                     if warehouse.name == self.kwargs['warehouse']][0])
77 77
        except IndexError:
78 78
            raise Http404
......
123 123
    def get_object(self):
124 124
        named_visualization = super(VisualizationView, self).get_object()
125 125
        if not hasattr(self, 'visualization'):
126
            self.visualization = Visualization.from_json(named_visualization.parameters,
127
                                                         request=self.request)
126
            self.visualization = Visualization.from_json(named_visualization.parameters)
128 127
        self.cube = self.visualization.cube
129 128
        self.warehouse = self.cube.engine
130 129
        return named_visualization
......
235 234

  
236 235
    def get(self, request, *args, **kwargs):
237 236
        instance = self.get_object()
238
        visualization = Visualization.from_json(instance.parameters, request=request)
237
        visualization = Visualization.from_json(instance.parameters)
239 238
        response = HttpResponse(content_type='application/vnd.oasis.opendocument.spreadsheet')
240 239
        response['Content-Disposition'] = 'attachment; filename=%s.ods' % slugify(instance.name)
241 240
        workbook = visualization.ods()
......
249 248

  
250 249
    def get(self, request, pk, format=None):
251 250
        instance = self.get_object()
252
        visualization = Visualization.from_json(instance.parameters, request=request)
251
        visualization = Visualization.from_json(instance.parameters)
253 252
        visualization.measure = visualization.cube.measures['geolocation']
254 253
        drilldown = visualization.drilldown
255 254
        geojson = []
......
282 281

  
283 282
        instance = self.get_object()
284 283
        loop = []
285
        all_visualizations = Visualization.from_json(instance.parameters, request=request)
284
        all_visualizations = Visualization.from_json(instance.parameters)
286 285
        for visualization in all_visualizations:
287 286
            drilldowns = visualization.drilldown
288 287
            if len(drilldowns) == 2:
289
-