Skip to content

Commit

Permalink
Agrego cálculo de porcentaje de uso de campos a nivel global a los in…
Browse files Browse the repository at this point in the history
…dicadores de red de nodos
  • Loading branch information
Lucas Lavandeira committed May 9, 2017
1 parent 0c08972 commit 3b17e95
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 5 deletions.
21 changes: 17 additions & 4 deletions pydatajson/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -769,6 +769,7 @@ def generate_catalogs_indicators(self, catalogs, central_catalog=None):
network_indicators = {} # Para la red global
indicators_list = []

fields = {}
for catalog in catalogs:
# Obtengo summary para los indicadores del estado de los metadatos
summary = self.generate_datasets_summary(catalog)
Expand Down Expand Up @@ -803,11 +804,15 @@ def generate_catalogs_indicators(self, catalogs, central_catalog=None):

# Agrego porcentaje de campos recomendados/optativos usados
fields_count = self._count_required_and_optional_fields(catalog)
total_rec = fields_count['total_recomendado']
total_opt = fields_count['total_optativo']

recomendados_pct = float(fields_count['recomendado']) / total_rec
optativos_pct = float(fields_count['optativo']) / total_opt
# Sumo a la cuenta total de campos usados/totales
fields = helpers.add_dicts(fields_count, fields)

recomendados_pct = float(fields_count['recomendado']) / \
fields_count['total_recomendado']
optativos_pct = float(fields_count['optativo']) / \
fields_count['total_optativo']

result.update({
'campos_recomendados_pct': round(recomendados_pct, 2),
'campos_optativos_pct': round(optativos_pct, 2)
Expand All @@ -828,11 +833,19 @@ def generate_catalogs_indicators(self, catalogs, central_catalog=None):

network_indicators.update(indicators_total)
# Los porcentuales no se pueden sumar, tienen que ser recalculados

total_pct = float(network_indicators['datasets_meta_ok_cant']) / \
(network_indicators['datasets_meta_ok_cant'] +
network_indicators['datasets_meta_error_cant']) * 100
network_indicators['datasets_meta_ok_pct'] = round(total_pct, 2)

rec_pct = float(fields['recomendado']) / fields['total_recomendado']
opt_pct = float(fields['optativo']) / fields['total_optativo']

network_indicators.update({
'campos_recomendados_pct': round(rec_pct, 2),
'campos_optativos_pct': round(opt_pct, 2)
})
network_indicators['catalogos_cant'] = len(catalogs)
return indicators_list, network_indicators

Expand Down
9 changes: 8 additions & 1 deletion tests/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -901,7 +901,14 @@ def test_network_indicators(self):
'distribuciones_cant': 7,
'datasets_meta_ok_cant': 3,
'datasets_meta_error_cant': 1,
'datasets_meta_ok_pct': 100 * float(3) / 4
'datasets_meta_ok_pct': 100 * float(3) / 4,
'distribuciones_formatos_cant': {
'CSV': 2,
'XLSX': 1,
'PDF': 1
},
'campos_optativos_pct': 0.22,
'campos_recomendados_pct': 0.55
}

for k,v in expected.items():
Expand Down

0 comments on commit 3b17e95

Please sign in to comment.