(self, obj, fixit=0)
return error_list
Implement here the consistency checker
Implement here the consistency checker
Implement here the consistency checker
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
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