parameters: (self, obj, fixit=0)
return_statement: return error_list
docstring: Implement here the consistency checker
docstring_summary: Implement here the consistency checker
docstring_tokens: Implement here the consistency checker
function: def _checkConsistency(self, obj, fixit=0):
      """Implement here the consistency checker
      """
      error_list = []
      portal = obj.getPortalObject()
  
      error = lambda msg, **kw: error_list.append(
        self._generateError(obj, self._getMessage(msg), mapping=kw))
  
      getCategoryValue = portal.portal_categories.getCategoryValue
      display = lambda *args, **kw: \
        getCategoryValue(*args, **kw).getCompactLogicalPath()
  
      top = lambda relative_url: relative_url.split('/', 1)[0]
  
      quantity_map = {}
      metric_type_set = set()
  
      for measure in obj.getMeasureList():
        metric_type = measure.getMetricType()
        if metric_type:
          quantity = top(metric_type)
          default_or_generic = quantity_map.setdefault(quantity, [0, 0])
          if measure.getDefaultMetricType():
            default_or_generic[0] += 1
          if quantity == metric_type:
            default_or_generic[1] += 1
  
          if not measure.getConvertedQuantityUnit():
            error('message_measure_no_quantity_unit',
                  metric_type=display(metric_type, 'metric_type'))
          elif not measure.asCatalogRowList():
            error('message_measure_no_quantity',
                  metric_type=display(metric_type, 'metric_type'))
          if metric_type in metric_type_set:
            error('message_duplicate_metric_type',
                  metric_type=display(metric_type, 'metric_type'))
          else:
            metric_type_set.add(metric_type)
        #else:
        # pass # we don't care about undefined measures
  
      for i, quantity_unit in enumerate(obj.getQuantityUnitList()):
        quantity = top(quantity_unit)
        default, generic = quantity_map.get(quantity, (0, 0))
        if (default or generic) > 1:
          error('message_duplicate_default_measure',
                quantity_unit=display(quantity_unit, 'quantity_unit'))
        elif not (default or generic):
          if i:
            pass # tolerate quantity units without any measure associated to them
          else: # management unit: check we can create an implicit measure
            if getCategoryValue(quantity, 'metric_type') is None:
              error('message_missing_metric_type', metric_type=quantity)
  
      return error_list
function_tokens: def _checkConsistency ( self , obj , fixit = 0 ) : error_list = [ ] portal = obj . getPortalObject ( ) error = lambda msg , * * kw : error_list . append ( self . _generateError ( obj , self . _getMessage ( msg ) , mapping = kw ) ) getCategoryValue = portal . portal_categories . getCategoryValue display = lambda * args , * * kw : getCategoryValue ( * args , * * kw ) . getCompactLogicalPath ( ) top = lambda relative_url : relative_url . split ( '/' , 1 ) [ 0 ] quantity_map = { } metric_type_set = set ( ) for measure in obj . getMeasureList ( ) : metric_type = measure . getMetricType ( ) if metric_type : quantity = top ( metric_type ) default_or_generic = quantity_map . setdefault ( quantity , [ 0 , 0 ] ) if measure . getDefaultMetricType ( ) : default_or_generic [ 0 ] += 1 if quantity == metric_type : default_or_generic [ 1 ] += 1 if not measure . getConvertedQuantityUnit ( ) : error ( 'message_measure_no_quantity_unit' , metric_type = display ( metric_type , 'metric_type' ) ) elif not measure . asCatalogRowList ( ) : error ( 'message_measure_no_quantity' , metric_type = display ( metric_type , 'metric_type' ) ) if metric_type in metric_type_set : error ( 'message_duplicate_metric_type' , metric_type = display ( metric_type , 'metric_type' ) ) else : metric_type_set . add ( metric_type ) #else: # pass # we don't care about undefined measures for i , quantity_unit in enumerate ( obj . getQuantityUnitList ( ) ) : quantity = top ( quantity_unit ) default , generic = quantity_map . get ( quantity , ( 0 , 0 ) ) if ( default or generic ) > 1 : error ( 'message_duplicate_default_measure' , quantity_unit = display ( quantity_unit , 'quantity_unit' ) ) elif not ( default or generic ) : if i : pass # tolerate quantity units without any measure associated to them else : # management unit: check we can create an implicit measure if getCategoryValue ( quantity , 'metric_type' ) is None : error ( 'message_missing_metric_type' , metric_type = quantity ) return error_list