from scorecard_processor.plugins.input.multi_choices import register, MultiChoiceField from decimal import Decimal class AidTypes(MultiChoiceField): name = "Aid types" def __init__(self, *args, **kwargs): super(AidTypes,self).__init__(*args, **kwargs) self.choices = ( ('financial',_('Financial support')), ('technical',_('Technical assistance (non-financial)')), ('lobbying',_('Lobbying/advocay - non-financial')), ('other',_('Other (please specify in Voluntary additional information)')) ) self.widget.choices = self.choices register.register('input','IHP field','aid_types', AidTypes) class RepresentedTypes(MultiChoiceField): name = "CSO Representation Types" def __init__(self, *args, **kwargs): super(RepresentedTypes,self).__init__(*args, **kwargs) self.choices = ( ("maternal",_("Maternal Health")), ("child",_("Child Health")), ("maleria",_("Malaria")), ("hiv",_("HIV/AIDS")), ("tb",_("TB")), ("systems",_("Health Systems Strengthening (Governance, Financing, HRH, Information Systems, Medicines, service delivery)")), ("nutrition",_("Nutrition")), ("international",_("International NGO")), ("national",_("National NGO")),
def process(self): values = self.get_arguments().items.get_values() output_values = [] for value in values: output_values.append(len(value.get_value()) >= self.get_config('threshold')) if len(values): output = (100 * Decimal(output_values.count(True)) / Decimal(len(output_values))).quantize(Decimal('1.0')) else: output = Decimal("0.0") return self.output_type(output) register.register('process','IHP field','list_perc', CountValues) class FourPointScale(ChoiceField): name = "Four point perfomance scale" def __init__(self, *args, **kwargs): super(FourPointScale,self).__init__(*args,**kwargs) self.choices = ( ('',''), ('a',_('A')), ('b',_('B')), ('c',_('C')), ('d',_('D')), ) register.register('input','IHP field','four_point', FourPointScale)