Example #1
0
 def build_categorias(self, categorias, options):
     ''' Constrói a parte dos atributos selecionados na query '''
     if not QueryBuilder.check_params(options, ['categorias']):
         raise ValueError('Invalid Categories - required')
     categorias = QueryBuilder.transform_categorias(categorias)
     prepended_aggr = QueryBuilder.prepend_aggregations(options.get('agregacao'))
     str_calcs = ''
     if QueryBuilder.check_params(options, ['calcs']):
         calcs_options = options.copy()
         calcs_options['categorias'] = categorias
         str_calcs += self.build_std_calcs(calcs_options)
     if QueryBuilder.check_params(options, ['agregacao', 'valor']):
         tmp_cats = self.combine_val_aggr(options.get('valor'), options.get('agregacao'))
         if not isinstance(tmp_cats, list):
             categorias += tmp_cats.split(", ")
         else:
             categorias += tmp_cats
     elif (not QueryBuilder.check_params(options, ['agregacao']) and
           QueryBuilder.check_params(options, ['valor'])):
         categorias += options['valor']
     elif (QueryBuilder.check_params(options, ['agregacao']) and
           not QueryBuilder.check_params(options, ['valor'])):
         categorias += self.build_generic_agr_array(options['agregacao'])
     if (QueryBuilder.validate_field_array(categorias) and
             QueryBuilder.validate_field_array(prepended_aggr)):
         if 'calcs' not in options or options['calcs'] is None or str_calcs == '':
             return ' '.join(prepended_aggr) + ' ' + ', '.join(categorias)
         return ' '.join(prepended_aggr) + ' ' + ', '.join(categorias) + ', ' + str_calcs
     raise ValueError('Invalid attributes')
Example #2
0
 def test_validate_semi_transform(self):
     ''' Verifica construção de categorias com transformação em parte '''
     categorias = ['vl_indicador-valor', 'cd_ibge']
     expected = ['vl_indicador AS valor', 'cd_ibge']
     transformed = QueryBuilder.transform_categorias(categorias)
     self.assertEqual(transformed, expected)