Beispiel #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')
Beispiel #2
0
 def test_prepend_aggregations_void(self):
     ''' Retorna lista vazia quando recebe agregação vazia '''
     aggrs = []
     result = QueryBuilder.prepend_aggregations(aggrs)
     self.assertEqual(result, [])
Beispiel #3
0
 def test_prepend_aggregations_empty(self):
     ''' Retorna lista vazia, pois não tem agregação genérica '''
     aggrs = ['SUM', 'MAX']
     result = QueryBuilder.prepend_aggregations(aggrs)
     self.assertEqual(result, [])
Beispiel #4
0
 def test_prepend_aggregations_valid(self):
     ''' Retorna distinct, dentre outras agregações enviadas '''
     aggrs = ['SUM', 'DISTINCT', 'MAX']
     result = QueryBuilder.prepend_aggregations(aggrs)
     self.assertEqual(result, ['DISTINCT'])
Beispiel #5
0
 def test_prepend_aggregations_none(self):
     '''Retorna lista vazia quando recebe agregações nulas '''
     aggrs = None
     result = QueryBuilder.prepend_aggregations(aggrs)
     self.assertEqual(result, [])