Projet

Général

Profil

0003-visualization-add-warehouse-slug-support-38596.patch

Valentin Deniaud, 14 janvier 2020 16:24

Télécharger (3,08 ko)

Voir les différences:

Subject: [PATCH 3/4] visualization: add warehouse slug support (#38596)

 bijoe/schemas.py                      | 4 +++-
 bijoe/visualization/utils.py          | 5 ++++-
 tests/fixtures/schema1/01_schema.json | 1 +
 tests/test_views.py                   | 3 ++-
 4 files changed, 10 insertions(+), 3 deletions(-)
bijoe/schemas.py
395 395

  
396 396

  
397 397
class Warehouse(Base):
398
    __slots__ = ['name', 'label', 'pg_dsn', 'search_path', 'cubes', 'path']
398
    __slots__ = ['name', 'slug', 'label', 'pg_dsn', 'search_path', 'cubes', 'path']
399 399
    __types__ = {
400 400
        'name': str,
401
        'slug': str,
401 402
        'label': unicode,
402 403
        'pg_dsn': str,
403 404
        'search_path': [str],
......
406 407
    }
407 408

  
408 409
    path = None
410
    slug = None
409 411

  
410 412
    def check(self):
411 413
        names = collections.Counter(cube.name for cube in self.cubes)
bijoe/visualization/utils.py
80 80
        if not warehouses:
81 81
            warehouses = get_warehouses()
82 82
        for warehouse in warehouses:
83
            if d['warehouse'] == warehouse.name:
83
            if warehouse.slug and 'warehouse_slug' in d:
84
                if d['warehouse_slug'] == warehouse.slug:
85
                    break
86
            elif d['warehouse'] == warehouse.name:  # legacy
84 87
                break
85 88
        else:
86 89
            raise Http404('warehouse %s not found' % d['warehouse'])
tests/fixtures/schema1/01_schema.json
241 241
    ],
242 242
    "label": "test schema1",
243 243
    "name": "schema1",
244
    "slug": "schema1_slug",
244 245
    "pg_dsn": "fixme",
245 246
    "search_path": [
246 247
        "schema1"
tests/test_views.py
40 40
    Visualization(name='test', parameters={'warehouse': 'schema1', 'cube': 'test'}).save()
41 41
    Visualization(name='test', parameters={'warehouse': 'schema1', 'cube': 'test'}).save()
42 42
    Visualization(name='test', parameters={'warehouse': 'schema1', 'cube': 'test'}).save()
43
    Visualization(name='test', parameters={'warehouse_slug': 'schema1_slug', 'cube': 'test'}).save()
43 44
    login(app, admin)
44 45
    resp = app.get(reverse('visualizations-json'))
45
    assert set([x['slug'] for x in resp.json]) == set(['test', 'test-2', 'test-3'])
46
    assert set([x['slug'] for x in resp.json]) == set(['test', 'test-2', 'test-3', 'test-4'])
46 47

  
47 48

  
48 49
def test_visualization_json_api(schema1, app, admin):
49
-