-
Notifications
You must be signed in to change notification settings - Fork 3
Description
Group
- Tipo: Refatoração/Nova implementação.
- Depende da issue: Package e File #81.
- Status: Totalmente
- Branch: no final, deverá ser feito um merge para a branch
version-2.
Checklist:
- Implementar feature;
- Adicionar testes;
- Atualizar docstring;
- Atualizar documentação.
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())