def _organisation_indicators_complete_split(organisation, aggregation_type=2): results = _organisation_indicators(organisation, aggregation_type) commitment_data = dqindicators.indicators_subset(app.config["INDICATOR_GROUP"], u"commitment") commitment_results = dict(map(lambda x: (x.id, {'indicator': x.as_dict() }), commitment_data)) publication_organisation = lambda kv: (kv[1]["indicator"]["indicator_category_name"]=="organisation") publication_activity = lambda kv: (kv[1]["indicator"]["indicator_category_name"]=="activity") publication_organisation_results = dict(filter(publication_organisation, results.iteritems())) publication_activity_results = dict(filter(publication_activity, results.iteritems())) return { "publication_activity": publication_activity_results, "publication_organisation": publication_organisation_results, "commitment": commitment_results}
def _organisation_indicators_split(organisation, aggregation_type=2): results = _organisation_indicators(organisation, aggregation_type) commitment_data = dqindicators.indicators_subset("pwyf2013", "commitment") commitment = dict(map(lambda x: (x.id, {'indicator': x }), commitment_data)) if not results: indicators = dqindicators.indicators("pwyf2013") indicators_restructured = dict(map(lambda x: (x.id, {'indicator': x }), indicators)) return {"zero": indicators_restructured, "non_zero": {}, "commitment": commitment} zero = lambda kv: not kv[1]["results_pct"] non_zero = lambda kv: kv[1]["results_pct"] zero_results = dict(filter(zero, results.iteritems())) non_zero_results = dict(filter(non_zero, results.iteritems())) return { "zero": zero_results, "non_zero": non_zero_results, "commitment": commitment}
def _organisation_indicators_split(organisation, aggregation_type=2): results = _organisation_indicators(organisation, aggregation_type) commitment_data = dqindicators.indicators_subset( app.config["INDICATOR_GROUP"], u"commitment") commitment = dict(map(lambda x: (x.id, {'indicator': x.as_dict() }), commitment_data)) if not results: indicators = dqindicators.indicators(app.config["INDICATOR_GROUP"]) indicators_restructured = dict(map(lambda x: (x.id, {'indicator': {'name': x.name } }), indicators)) return {"zero": indicators_restructured, "non_zero": {}, "commitment": commitment} zero = lambda kv: not kv[1]["results_pct"] non_zero = lambda kv: kv[1]["results_pct"] zero_results = dict(filter(zero, results.iteritems())) non_zero_results = dict(filter(non_zero, results.iteritems())) return { "zero": zero_results, "non_zero": non_zero_results, "commitment": commitment}
def _organisation_indicators(organisation, aggregation_type=2): s = summary.PublisherIndicatorsSummaryCreator(organisation, aggregation_type) data = s.summary.summary() ## FIXME # Sorry, this is really crude inforesults = _organisation_indicators_inforesults(organisation) data.update([ info_result_tuple(ir) for ir in inforesults ]) # make sure indicators are complete indicators = dqindicators.indicators_subset(app.config["INDICATOR_GROUP"], u"publication") for indc in indicators: if indc.id in data: continue data[indc.id] = { 'results_num': 0, 'results_pct': 0, 'indicator': { 'description': indc.description, 'name': indc.name, 'id': indc.id, 'indicatorgroup_id': indc.indicatorgroup_id, 'indicator_type': indc.indicator_type, 'indicator_category_name': indc.indicator_category_name, 'indicator_subcategory_name': indc.indicator_subcategory_name, 'indicator_category_name_text': indc.indicator_category_name_text, 'indicator_subcategory_name_text': indc.indicator_subcategory_name_text, 'longdescription': indc.longdescription, 'indicator_noformat': indc.indicator_noformat, 'indicator_ordinal': indc.indicator_ordinal, 'indicator_order': indc.indicator_order, 'indicator_weight': indc.indicator_weight }, 'tests': {} } return data
def _organisation_indicators(organisation, aggregation_type=2): aggregate_results = db.session.query(Indicator, Test, AggregateResult.results_data, AggregateResult.results_num, AggregateResult.result_hierarchy, AggregateResult.package_id, func.max(AggregateResult.runtime_id) ).filter(Organisation.organisation_code==organisation.organisation_code ).filter(AggregateResult.aggregateresulttype_id == aggregation_type ).filter(AggregateResult.organisation_id == organisation.id ).group_by(AggregateResult.result_hierarchy, Test, AggregateResult.package_id, Indicator, AggregateResult.results_data, AggregateResult.results_num, AggregateResult.package_id ).join(IndicatorTest ).join(Test ).join(AggregateResult ).join(Package ).join(OrganisationPackage ).join(Organisation ).order_by(Indicator.indicator_type, Indicator.indicator_category_name, Indicator.indicator_subcategory_name ).all() pconditions = OrganisationCondition.query.filter_by(organisation_id=organisation.id ).all() data = summary.agr_results(aggregate_results, conditions=pconditions, mode="publisher_indicators") # Sorry, this is really crude inforesults = _organisation_indicators_inforesults(organisation) for inforesult in inforesults: try: data[inforesult.Indicator.id] except KeyError: data[inforesult.Indicator.id]={} data[inforesult.Indicator.id]={ 'results_num': 1, 'results_pct': inforesult.result_data, 'indicator': { 'description': inforesult.Indicator.description, 'name': inforesult.Indicator.name, 'id': inforesult.Indicator.id, 'indicatorgroup_id': inforesult.Indicator.indicatorgroup_id, 'indicator_type': inforesult.Indicator.indicator_type, 'indicator_category_name': inforesult.Indicator.indicator_category_name, 'indicator_subcategory_name': inforesult.Indicator.indicator_subcategory_name, 'longdescription': inforesult.Indicator.longdescription, 'indicator_noformat': inforesult.Indicator.indicator_noformat, 'indicator_ordinal': inforesult.Indicator.indicator_ordinal }, 'tests': {} } # make sure indicators are complete indicators = dqindicators.indicators_subset("pwyf2013", "publication") for indicator in indicators: if indicator.id not in data: data[indicator.id] = { 'results_num': 0, 'results_pct': 0, 'indicator': { 'description': indicator.description, 'name': indicator.name, 'id': indicator.id, 'indicatorgroup_id': indicator.indicatorgroup_id, 'indicator_type': indicator.indicator_type, 'indicator_category_name': indicator.indicator_category_name, 'indicator_subcategory_name': indicator.indicator_subcategory_name, 'longdescription': indicator.longdescription, 'indicator_noformat': indicator.indicator_noformat, 'indicator_ordinal': indicator.indicator_ordinal }, 'tests': {} } return data
def _organisation_indicators(organisation, aggregation_type=2): aggregate_results = db.session.query(Indicator.id, Test.id, AggregateResult.results_data, AggregateResult.results_num, AggregateResult.result_hierarchy, AggregateResult.package_id, func.max(AggregateResult.runtime_id) ).filter(Organisation.organisation_code==organisation.organisation_code ).filter(AggregateResult.aggregateresulttype_id == aggregation_type ).filter(AggregateResult.organisation_id == organisation.id ).group_by(AggregateResult.result_hierarchy, Test.id, AggregateResult.package_id, Indicator.id, AggregateResult.results_data, AggregateResult.results_num, AggregateResult.package_id ).join(IndicatorTest ).join(Test ).join(AggregateResult ).join(Package ).join(OrganisationPackage ).join(Organisation ).order_by(Indicator.indicator_type, Indicator.indicator_category_name, Indicator.indicator_subcategory_name ).all() pconditions = OrganisationCondition.query.filter_by( organisation_id=organisation.id ).all() s = summary.PublisherIndicatorsSummary(aggregate_results, conditions=pconditions) data = s.summary() # Sorry, this is really crude inforesults = _organisation_indicators_inforesults(organisation) data.update([ info_result_tuple(ir) for ir in inforesults ]) # make sure indicators are complete indicators = dqindicators.indicators_subset(app.config["INDICATOR_GROUP"], u"publication") for indc in indicators: if indc.id in data: continue data[indc.id] = { 'results_num': 0, 'results_pct': 0, 'indicator': { 'description': indc.description, 'name': indc.name, 'id': indc.id, 'indicatorgroup_id': indc.indicatorgroup_id, 'indicator_type': indc.indicator_type, 'indicator_category_name': indc.indicator_category_name, 'indicator_subcategory_name': indc.indicator_subcategory_name, 'longdescription': indc.longdescription, 'indicator_noformat': indc.indicator_noformat, 'indicator_ordinal': indc.indicator_ordinal, 'indicator_order': indc.indicator_order, 'indicator_weight': indc.indicator_weight }, 'tests': {} } return data