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
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 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()}
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() }
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
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))
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