Project

General

Profile

Bug #38947

dataviz: KeyError sur self.cached_json['data-url']

Added by Thomas Noël 7 days ago. Updated 6 days ago.

Status:
Solution déployée
Priority:
Normal
Target version:
-
Start date:
14 Jan 2020
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

Description

A priori ça serait parce que la page est un import (pas de save() explicite sur les cellules, et donc cached_json est vide) :

Internal Server Error: /api/dataviz/graph/49/

KeyError at /api/dataviz/graph/49/
'data-url'

Request Method: GET
Request URL: https://agents.xxxx/api/dataviz/graph/49/?width=300&height=150

Traceback:

File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _legacy_get_response
  249.             response = self._get_response(request)

File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/lib/python3/dist-packages/combo/apps/dataviz/views.py" in dataviz_graph
  40.                 height=int(request.GET.get('height', 0)) or int(cell.height)

File "/usr/lib/python3/dist-packages/combo/apps/dataviz/models.py" in get_chart
  178.                 self.cached_json['data-url'],

Exception Type: KeyError at /api/dataviz/graph/49/
Exception Value: 'data-url'

0001-dataviz-display-warning-message-when-dataviz-has-no-.patch View (2.44 KB) Frédéric Péters, 14 Jan 2020 01:56 PM

0001-dataviz-display-warning-message-when-dataviz-has-no-.patch View (3.33 KB) Frédéric Péters, 14 Jan 2020 02:46 PM

Associated revisions

Revision 866615b2 (diff)
Added by Frédéric Péters 6 days ago

dataviz: display warning message when dataviz has no cached json (#38947)

History

#1 Updated by Thomas Noël 7 days ago

Alors ça ne serait pas que le save() n'est pas fait, mais qu'il n'y a pas de visu dispo dans l'environnement d'import :

    def save(self, *args, **kwargs):
        if self.data_reference:
            site_key, visualization_slug = self.data_reference.split(':')
            site_dict = settings.KNOWN_SERVICES['bijoe'][site_key]
            response_json = requests.get('/visualization/json/',
                    remote_service=site_dict, without_user=True,
                    headers={'accept': 'application/json'}).json()
            if isinstance(response_json, dict):
                # forward compatibility with possible API change
                response_json = response_json.get('data')
            for visualization in response_json:
                slug = visualization.get('slug')
                if slug == visualization_slug:                <-- lors d'un import, ça peut ne jamais se présenter, slug différents
                    self.cached_json = visualization
        return super(ChartNgCell, self).save(*args, **kwargs)

#2 Updated by Frédéric Péters 7 days ago

                if slug == visualization_slug:                <-- lors d'un import, ça peut ne jamais se présenter, slug différents

C'est référence au bug de bijoe qui fait qu'on ne peut pas transférer d'environnement ? C'est en cours de résolution il me semble, slugs stables, imports/exports.

Ou c'est autre chose ?

#3 Updated by Frédéric Péters 7 days ago

Ça n'enlève pas la nécessité de pouvoir ne pas planter, et qu'à terme la cellule se trouve listée dans l'écran de #38009.

#4 Updated by Frédéric Péters 7 days ago

  • Assignee set to Frédéric Péters

#5 Updated by Valentin Deniaud 7 days ago

Frédéric Péters a écrit :

C'est référence au bug de bijoe qui fait qu'on ne peut pas transférer d'environnement ? C'est en cours de résolution il me semble, slugs stables, imports/exports.

Le slug qui est envoyé ici vient du travail que tu as déjà fait dans #30855, je doute que ce bug soit corrigé par le ticket sur l'import export (#38596).

#6 Updated by Frédéric Péters 7 days ago

#7 Updated by Thomas Noël 7 days ago

Je pense qu'il faut aussi jouer le « if not cell.cached_json » dans combo/apps/dataviz/templates/combo/chartngcell_form.html (backoffice), non ?

#8 Updated by Frédéric Péters 7 days ago

Ça n'amène pas d'erreur visible à l'utilisateur mais yep, ça fait un appel au rendu asynchrone qui va échouer et nous envoyer une trace. En plus de modifier le gabarit que tu pointes je modifier aussi la vue pour taper une 404 si jamais elle était quand même appelée.

#9 Updated by Thomas Noël 6 days ago

  • Status changed from Solution proposée to Solution validée

Frédéric Péters a écrit :

Ça n'amène pas d'erreur visible à l'utilisateur mais yep, ça fait un appel au rendu asynchrone qui va échouer et nous envoyer une trace. En plus de modifier le gabarit que tu pointes je modifier aussi la vue pour taper une 404 si jamais elle était quand même appelée.

Sans doute as-tu oublié le git add sur chartngcell_form.html ?

Pour faire mon tatasse, éventuellement, compléter un peu la 404, genre Http404('misconfigured cell')... Ou pas (ça arrivera tellement jamais si chartngcell_form.html est patché pour ne pas l'appeller)

#10 Updated by Frédéric Péters 6 days ago

  • Status changed from Solution validée to Résolu (à déployer)

Sans doute as-tu oublié le git add sur chartngcell_form.html ?

Je l'ai pourtant en local dans le commit, j'ai sans doute juste uploadé un vieux patch.

Poussé avec message dans la 404,

commit 866615b2e094e7f5834e468c8d94b5fc1204e9c7
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Tue Jan 14 13:55:19 2020 +0100

    dataviz: display warning message when dataviz has no cached json (#38947)

#11 Updated by Frédéric Péters 6 days ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF