예제 #1
0
 def getArray(self, default=None):
     """
 Get numpy view of Parent Data Array according to index.
 """
     getindex = GetIndex("getindex")
     index = evaluateExpressionFromString(
         createExpressionContext(None, portal=getindex),
         "python: portal[%s]" % self.getIndexExpression())
     zbigarray = self.getParentValue().getArray()
     try:
         array_view = zbigarray[index]
     except TypeError:
         array = zbigarray[:]
         new_dtype = np.dtype(
             {name: array.dtype.fields[name]
              for name in index})
         array_view = np.ndarray(array.shape, new_dtype, array, 0,
                                 array.strides)
     name_list = self.getNameList()
     dtype_expression = self.getDtypeExpression()
     if dtype_expression is not None or name_list:
         if dtype_expression is None:
             dtype = np.dtype(array_view.dtype)
         else:
             dtype = evaluateExpressionFromString(
                 createExpressionContext(None, portal=getindex),
                 dtype_expression)
         dtype.names = name_list
         return array_view.view(dtype=dtype)
     return array_view
예제 #2
0
    def asDict(self, expression_context=None):
        property_dict = super(AcquiredProperty,
                              self).asDict(expression_context)

        acquisition_portal_type_value = evaluateExpressionFromString(
            expression_context, self.getAcquisitionPortalType())

        content_portal_type_value = evaluateExpressionFromString(
            expression_context, self.getContentPortalType())

        property_dict.update(
            acquisition_portal_type=acquisition_portal_type_value,
            content_portal_type=content_portal_type_value,
            acquisition_base_category=self.getAcquisitionBaseCategoryList(),
            acquisition_object_id=self.getAcquisitionObjectIdList(),
            acquisition_accessor_id=self.getAcquisitionAccessorId(),
            alt_accessor_id=self.getAltAccessorIdList(),
            acquisition_copy_value=self.getAcquisitionCopyValue(),
            acquisition_mask_value=self.getAcquisitionMaskValue(),
            content_acquired_property_id=self.getContentAcquiredPropertyIdList(
            ),
            content_translation_acquired_property_id=self.
            getContentTranslationAcquiredPropertyIdList())

        return property_dict
예제 #3
0
  def asDict(self, expression_context=None):
    """
    Convert the current property to a dict, which is then applied on
    the accessor holder.

    @param expression_context: Expression context for TALES Expression
    @type expression_context: Products.PageTemplates.Expressions.ZopeContext
    @return: The current property as a dict
    @rtype: dict
    """
    # If no expression context has been given, create one, meaningful
    # when being called from the browser for example
    if expression_context is None:
      expression_context = createExpressionContext(self.getPortalObject())

    property_default = evaluateExpressionFromString(expression_context,
                                                    self.getPropertyDefault())

    return {'reference': self.getReference(),
            'description': self.getDescription(),
            'elementary_type': self.getElementaryType(),
            'storage_id': self.getStorageId(),
            'multivalued': self.getMultivalued(),
            'property_default': property_default,
            'range': self.getRange(),
            'preference': self.getPreference(),
            'read_permission': self.getReadPermission(),
            'write_permission': self.getWritePermission(),
            'translatable': self.getTranslatable(),
            'translation_domain': self.getTranslationDomain()}
예제 #4
0
    def asDict(self, expression_context=None):
        """
    Convert the current property to a dict, which is then applied on
    the accessor holder.

    @param expression_context: Expression context for TALES Expression
    @type expression_context: Products.PageTemplates.Expressions.ZopeContext
    @return: The current property as a dict
    @rtype: dict
    """
        # If no expression context has been given, create one, meaningful
        # when being called from the browser for example
        if expression_context is None:
            expression_context = createExpressionContext(
                self.getPortalObject())

        property_default = evaluateExpressionFromString(
            expression_context, self.getPropertyDefault())

        return {
            'reference': self.getReference(),
            'description': self.getDescription(),
            'elementary_type': self.getElementaryType(),
            'storage_id': self.getStorageId(),
            'multivalued': self.getMultivalued(),
            'property_default': property_default,
            'range': self.getRange(),
            'preference': self.getPreference(),
            'read_permission': self.getReadPermission(),
            'write_permission': self.getWritePermission(),
            'translatable': self.getTranslatable(),
            'translation_domain': self.getTranslationDomain(),
            'select_variable': self.getSelectVariable()
        }
예제 #5
0
  def asDict(self, expression_context=None):
    property_dict = super(AcquiredProperty, self).asDict(expression_context)

    acquisition_portal_type_value = evaluateExpressionFromString(
      expression_context, self.getAcquisitionPortalType())

    content_portal_type_value = evaluateExpressionFromString(
      expression_context, self.getContentPortalType())

    property_dict.update(
      acquisition_portal_type=acquisition_portal_type_value,
      content_portal_type=content_portal_type_value,
      acquisition_base_category=self.getAcquisitionBaseCategoryList(),
      acquisition_object_id=self.getAcquisitionObjectIdList(),
      acquisition_accessor_id=self.getAcquisitionAccessorId(),
      alt_accessor_id=self.getAltAccessorIdList(),
      acquisition_copy_value=self.getAcquisitionCopyValue(),
      acquisition_mask_value=self.getAcquisitionMaskValue(),
      content_acquired_property_id=self.getContentAcquiredPropertyIdList(),
      content_translation_acquired_property_id=self.getContentTranslationAcquiredPropertyIdList())

    return property_dict
    def _checkConsistency(self, obj, fixit=0):
        """Check the object's consistency.
    """
        error_list = []

        base_category = self.getBaseCategory()
        workflow_variable = self.getWorkflowVariable()
        expression_context = createExpressionContext(obj)
        portal_type_list_expression = self.getMembershipPortalTypeList()
        workflow_state_list_expression = self.getWorkflowStateList()

        portal_type_list = evaluateExpressionFromString(
            expression_context, portal_type_list_expression)
        workflow_state_list = evaluateExpressionFromString(
            expression_context, workflow_state_list_expression)

        membership_list = self._getObjectCategoryMembershipList(
            obj, base_category, portal_type_list)

        for membership in membership_list:
            current_state = membership.getProperty(workflow_variable)
            if current_state not in workflow_state_list:
                mapping = dict(
                    workflow_variable=workflow_variable,
                    membership_url=membership.getRelativeUrl(),
                    membership_title=membership.getTitle(),
                    current_state=current_state,
                    workflow_state_list=str(workflow_state_list),
                )
                if getattr(membership, 'getReference', None) is not None:
                    mapping['membership_reference'] = membership.getReference()
                message_id = 'message_different_state'

                error_list.append(
                    self._generateError(obj,
                                        self._getMessage(message_id),
                                        mapping=mapping))

        return error_list
  def _checkConsistency(self, obj, fixit=0):
    """Check the object's consistency.
    """
    error_list = []

    base_category = self.getBaseCategory()
    workflow_variable = self.getWorkflowVariable()
    expression_context = createExpressionContext(obj)
    portal_type_list_expression = self.getMembershipPortalTypeList()
    workflow_state_list_expression = self.getWorkflowStateList()

    portal_type_list = evaluateExpressionFromString(expression_context,
                                                   portal_type_list_expression)
    workflow_state_list = evaluateExpressionFromString(expression_context,
                                                workflow_state_list_expression)

    membership_list = self._getObjectCategoryMembershipList(obj, base_category,
                                                            portal_type_list)

    for membership in membership_list:
      current_state = membership.getProperty(workflow_variable)
      if current_state not in workflow_state_list:
        mapping = dict(workflow_variable=workflow_variable,
                       membership_url=membership.getRelativeUrl(),
                       membership_title=membership.getTitle(),
                       current_state=current_state,
                       workflow_state_list=str(workflow_state_list),)
        if getattr(membership, 'getReference', None) is not None:
          mapping['membership_reference'] = membership.getReference()
        message_id = 'message_different_state'

        error_list.append(self._generateError(obj, self._getMessage(message_id),
                                              mapping=mapping)
                         )

    return error_list
 def getArray(self, default=None):
   """
   Get numpy view of Parent Data Array according to index.
   """
   getindex = GetIndex("getindex")
   expression_context = createExpressionContext(None, portal=getindex)
   index = evaluateExpressionFromString(
     expression_context,
     "python: portal[%s]" %self.getIndexExpression()
   )
   array_view = self.getParentValue().getArray()[index]
   dtype = self.getDtype()
   if dtype is not None:
     return array_view.view(dtype=dtype)
   else:
     return array_view
예제 #9
0
  def applyOnAccessorHolder(self, accessor_holder, expression_context, portal):
    category_id_list = evaluateExpressionFromString(expression_context,
                                                    self.getCategoryExpression())

    if not isinstance(category_id_list, (tuple, list)):
      category_id_list = [category_id_list]

    for category_id in category_id_list:
      try:
        self.applyDefinitionOnAccessorHolder(accessor_holder,
                                             category_id,
                                             portal)
      except ValueError, e:
        # If one of the category defined is invalid, don't give up as
        # the other ones may be fine
        LOG("ERP5Type.Core.DynamicCategoryProperty", INFO,
            "Invalid category: %s" % str(e))
예제 #10
0
    def applyOnAccessorHolder(self, accessor_holder, expression_context,
                              portal):
        category_id_list = evaluateExpressionFromString(
            expression_context, self.getCategoryExpression())

        if not isinstance(category_id_list, (tuple, list)):
            category_id_list = [category_id_list]

        for category_id in category_id_list:
            try:
                self.applyDefinitionOnAccessorHolder(accessor_holder,
                                                     category_id, portal)
            except ValueError as e:
                # If one of the category defined is invalid, don't give up as
                # the other ones may be fine
                LOG("ERP5Type.Core.DynamicCategoryProperty", INFO,
                    "Invalid category: %s" % str(e))
  def _checkConsistency(self, obj, fixit=0):
    """Check the object's consistency.
      We will make sure that each non None constraint_definition is 
      satisfied
    """
    error_list = PropertyExistenceConstraint._checkConsistency(
                                                   self, obj, fixit=fixit)
    blacklisted_list_expression = self.getBlacklistedList()
    expression_context = createExpressionContext(obj)
    blacklisted_list = evaluateExpressionFromString(expression_context,
                                                    blacklisted_list_expression)
    message_id = 'message_invalid_attribute_blacklisted'
    for property_id in self.getConstraintPropertyList():

      value = obj.getProperty(property_id)
      if value in blacklisted_list:
        mapping = dict(attribute_name=property_id)
        # Generate error
        error_list.append(self._generateError(obj, 
                                              self._getMessage(message_id),
                                              mapping=mapping)
                         )
    return error_list
  def _checkConsistency(self, obj, fixit=0):
    """Check the object's consistency.
      We will make sure that each non None constraint_definition is
      satisfied
    """
    error_list = PropertyExistenceConstraint._checkConsistency(
                                                   self, obj, fixit=fixit)
    blacklisted_list_expression = self.getBlacklistedList()
    expression_context = createExpressionContext(obj)
    blacklisted_list = evaluateExpressionFromString(expression_context,
                                                    blacklisted_list_expression)
    message_id = 'message_invalid_attribute_blacklisted'
    for property_id in self.getConstraintPropertyList():

      value = obj.getProperty(property_id)
      if value in blacklisted_list:
        mapping = dict(attribute_name=property_id)
        # Generate error
        error_list.append(self._generateError(obj,
                                              self._getMessage(message_id),
                                              mapping=mapping)
                         )
    return error_list