odufrn / odufrn-downloader

Pacote para baixar os dados do portal de dados abertos da UFRN
https://odufrn.github.io/odufrn-downloader/
MIT License
32 stars 4 forks source link

Group #82

Open alvarofpp opened 5 years ago

alvarofpp commented 5 years ago

Group

Checklist:

Para entender melhor

Da mesma forma que Package esta para File, Group esta Package, ou seja, será uma classe que conterá vários Package. Será uma classe que terá uma lista de Package, podendo realizar manipulações neles e, consequentemente, nos seus arquivos.

Observação: vale ressaltar que o Group atualmente serve para representar as chamadas e operações envolvendo grupos no CKAN da UFRN. A intenção dessa remodelagem é que o Group passe a representar um grupo de pacotes que existe, não mais genérico que isso.

Dados de Group

Usando a requisição http://dados.ufrn.br/api/rest/group/despesas-e-orcamento como exemplo, acho interessante a classe conter os seguintes dados:

Dado Exemplo de valor
display_name "Despesas e Orçamentos"
title "Despesas e Orçamentos"
name "despesas-e-orcamento"
package_count 23
packages Array com os pacotes, no caso serão o nome dos 23 pacotes do grupo
created "2016-09-06T17:54:50.039574"

Pensei no atributo description, porém normalmente vem vazio. O mesmo vale para o atributo extras.

Boa parte dos campos seriam para permitir q o programador conheça melhor o grupo, sendo que tem atributos "redundantes" que valeriam o debate para decidirmos se iremos colocar ou não, como: display_name e title.

Métodos de Group

É interessante implementar métodos como os descritos em Package, sendo que aplicado a sua própria lista. Dessa forma, métodos como filter() devem servir para aplicar aos pacotes no geral, como a possibilidade de aplicar aos seus respectivos arquivos.

Exemplo de métodos

Exemplo de dois métodos possíveis para filter():

# Group de pacotes
group
# Aplicando filtro nos pacotes do grupo
group_discentes = group.filter(lambda package: "discente" in package.name)
# Aplicando filtro nos arquivos dos pacotes do grupo
group_not_dictionary= group.filter_files(lambda file: not file.is_dictionary())
itepifanio commented 5 years ago

display_name "Despesas e Orçamentos" title "Despesas e Orçamentos"

Acho que só o title pode ser exibido, talvez mudar o name por resource que é o que a gente utiliza para passar para download. Outra, na próxima versão nós iremos utilizar as coisas como dataframe, então essa parte do filter() deve ser implementada como group_discentes = group[group.name == "discente"] também.