Skip to content

Group #82

@alvarofpp

Description

@alvarofpp

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())

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions