Closed Andrelamor closed 1 year ago
@Andrelamor a parte que faz a criação/atualização do datastore é a mesma, veja:
A maneira que proponho de resolvermos o problema é verificar se o recurso tem o datastore ativo e caso positivo deletamos. Desta maneira um novo sempre será criado com a nova estrutura ficando algo parecido com:
dataset_fields = {}
resource_show = ckan_instance.call_action('resource_show', { "id" : resource_id })
resource_id = { "resource_id" : resource_id }
dataset_fields.update(resource_id)
force = { "force" : "True" }
dataset_fields.update(force)
if resource_show['datastore_active']:
ckan_instance.call_action('datastore_delete', dataset_fields)
Os testes que fiz utilizando o datapackage letters (bem simples) funcionou para adição, exclusão e inclusão de campos.
Honestamente não sei prever se, para além do teste (de sucesso) relatado acima, teremos implicações maiores, mas acho que vale publicar uma versão 0.0.22
do dpckan para utilizar nos datasets-templates já migrados para o novo repositório.
@Andrelamor para testar, como explicado neste stackoverflow, podemos rodar pip install git+ssh://git@github.com/transparencia-mg/dpckan.git@improve-datastore-update
rodar o comando acima
(venv)
Andre@DESKTOP-R63LP8N MINGW64 ~/Documents/teletrabalho/dados-mg/datastore (main)
$ pip install git+ssh://git@github.com/transparencia-mg/dpckan.git@improve-datastore-update
Collecting git+ssh://****@github.com/transparencia-mg/dpckan.git@improve-datastore-update
Cloning ssh://****@github.com/transparencia-mg/dpckan.git (to revision improve-datastore-update)
<...>
Using legacy 'setup.py install' for dpckan, since package 'wheel' is not installed.
Installing collected packages: dpckan
Running setup.py install for dpckan ... done
Successfully installed dpckan-0.1.22
WARNING: You are using pip version 21.1.1; however, version 23.2.1 is available.
You should consider upgrading via the 'c:\users\andre\documents\teletrabalho\dados-mg\datastore\ve
nv\scripts\python.exe -m pip install --upgrade pip' command.
(venv)
Andre@DESKTOP-R63LP8N MINGW64 ~/Documents/teletrabalho/dados-mg/datastore (main)
$ pip list
Package Version
------------------------- ---------
asttokens 2.2.1
attrs 23.1.0
backcall 0.2.0
cached-property 1.5.2
certifi 2023.7.22
chardet 5.2.0
charset-normalizer 3.2.0
ckanapi 4.0
click 8.0.1
colorama 0.4.6
cssselect 1.2.0
decorator 5.1.1
deepmerge 1.1.0
docopt 0.6.2
docstring-parser 0.15
dpckan 0.1.22
@gabrielbdornas por que aparece o mesmo erro de conversão de csv de antes (new columns) com o template atualizado?
(venv)
Andre@DESKTOP-R63LP8N MINGW64 ~/Documents/teletrabalho/dados-mg/datastore (main)
$ task csv
Traceback (most recent call last):
File "C:\Users\Andre\Documents\teletrabalho\dados-mg\datastore\scripts\convert_csv.py", line 47,
in <module>
convert_csv()
File "C:\Users\Andre\Documents\teletrabalho\dados-mg\datastore\scripts\convert_csv.py", line 22,
in convert_csv
for column in new_columns:
UnboundLocalError: local variable 'new_columns' referenced before assignment
@gabrielbdornas por que aparece o mesmo erro de conversão de csv de antes (new columns) com o template atualizado?
@Andrelamor, estou achando que isso é um problema de versão do Python. Qual a versão você está utilizando?
3.9.5
@Andrelamor, vou fazer a publicação da nova versão e fechar esse issue.
novo script de conversão para csv do new-dataset-template muda para lower-case, mas já haviam recursos publicados com label (name) das colunas em maiúsculo, então o datastore não aceita o upload do ckan com labels minúsculos: