basedosdados / website

🖥 Website oficial da BD
http://basedosdados.org
24 stars 7 forks source link

Endpoint `bd_bdm_dataset_show` retorna erro caso `dataset` exista mas não tenha tabelas #176

Open vmussa opened 2 years ago

vmussa commented 2 years ago

Descrição

Quando crio um dataset no CKAN através do cliente basedosdados, o endpoint package_show consegue identificá-lo, mas o bd_bdm_dataset_show retorna um erro genérico:

{
    "help": "http://localhost/api/3/action/help_show?name=bd_bdm_dataset_show",
    "error": {
        "__type": "Internal Server Error",
        "message": "Internal Server Error"
    },
    "success": false
}

Mensagens de logs expostas no terminal do webserver:

solr          | 2021-11-20 20:17:11.562 INFO  (qtp736709391-19) [   x:ckan] o.a.s.c.S.Request [ckan]  webapp=/solr path=/select params={q=*:*&facet.limit=50&df=text&fl=id+validated_data_dict&fq=%2Bcapacity:public+res_extras_dataset_id:(testeeeeeeeee)&fq=%2Bsite_id:"default"&fq=%2Bstate:active&fq=%2Bpermission_labels:("public")&sort=score+desc,+metadata_modified+desc&facet.mincount=1&rows=1001&facet=true&wt=json} hits=0 status=0 QTime=0
ckan          | 2021-11-20 20:17:11,564 ERROR [ckan.views.api] local variable 'found_package' referenced before assignment
ckan          | Traceback (most recent call last):
ckan          |   File "/venv/lib/python3.9/site-packages/ckan/config/middleware/../../views/api.py", line 291, in action
ckan          |     result = function(context, request_data)
ckan          |              │        │        └ {'dataset_id': 'testeeeeeeeee'}
ckan          |              │        └ {'model': <module 'ckan.model' from '/venv/lib/python3.9/site-packages/ckan/model/__init__.py'>, 'session': <sqlalchemy.orm.scop...
ckan          |              └ <function get_action.<locals>.make_wrapped.<locals>.wrapped at 0x7f54967491f0>
ckan          |   File "/venv/lib/python3.9/site-packages/ckan/logic/__init__.py", line 477, in wrapped
ckan          |     result = _action(context, data_dict, **kw)
ckan          |              │       │        │            └ {}
ckan          |              │       │        └ {'dataset_id': 'testeeeeeeeee'}
ckan          |              │       └ {'model': <module 'ckan.model' from '/venv/lib/python3.9/site-packages/ckan/model/__init__.py'>, 'session': <sqlalchemy.orm.scop...
ckan          |              └ <function bd_bdm_dataset_show at 0x7f5496cf2670>
ckan          |   File "/app/ckanext-basedosdados/ckanext/basedosdados/actions/get.py", line 144, in bd_bdm_dataset_show
ckan          |     if found_package:
ckan          | UnboundLocalError: local variable 'found_package' referenced before assignment
ckan          | 
ckan          | 2021-11-20 20:17:11,565 INFO  [ckan.config.middleware.flask_app]  /api/3/action/bd_bdm_dataset_show render time 0.008 seconds

Comportamento esperado

bd_bdm_dataset_show deveria retornar uma mensagem de sucesso, mesmo que o dataset seja um package vazio sem nenhuma tabela, assim como o package_show.

Versão do website

branch develop commit 89b60535b6e9099c30c1d746b3f9fd848a41b35d

d116626 commented 2 years ago

Isso não vai rolar pq o bd_bdm_dataset_show precisa do dataset_id que fica dentro do resources (tabelas)

fernandascovino commented 2 years ago

@d116626 isso resolve com o pydantic?