def test_checkName(self):
     namechooser = INameChooser(self.activities)
     normalizer = getUtility(IURLNormalizer)
     obj = createContent(
         'upfront.assessmentitem.content.assessmentitem')
     test_name = normalizer.normalize('Q001')
     self.assertEqual(namechooser.checkName(test_name, obj), True)
     obj = createContentInContainer(self.activities,
         'upfront.assessmentitem.content.assessmentitem')
     self.assertEqual(namechooser.checkName(test_name, obj), False)
def addContentToContainer(container, object, checkConstraints=True):
    """Copy of plone.dexterity.util.addContentToContainer.
    Modified to check the existing Id on the object before paving over it.
    """
    if not hasattr(aq_base(object), 'portal_type'):
        raise ValueError('object must have its portal_type set')

    container = aq_inner(container)
    if checkConstraints:
        container_fti = container.getTypeInfo()

        fti = getUtility(IDexterityFTI, name=object.portal_type)
        if not fti.isConstructionAllowed(container):
            raise Unauthorized('Cannot create {0}'.format(object.portal_type))

        if container_fti is not None and \
                not container_fti.allowType(object.portal_type):
            raise ValueError('Disallowed subobject type: {0}'.format(
                object.portal_type))

    chooser = INameChooser(container)
    if hasattr(object, 'id') and chooser.checkName(object.id, object):
        name = object.id
    else:
        name = INameChooser(container).chooseName(None, object)
        object.id = name

    newName = container._setObject(name, object)
    return container._getOb(newName)
Exemple #3
0
def addContentToContainer(container, object, checkConstraints=True):
    """Copy of plone.dexterity.util.addContentToContainer.
    Modified to check the existing Id on the object before paving over it.
    """
    if not hasattr(aq_base(object), "portal_type"):
        raise ValueError("object must have its portal_type set")

    container = aq_inner(container)
    if checkConstraints:
        container_fti = container.getTypeInfo()

        fti = getUtility(IDexterityFTI, name=object.portal_type)
        if not fti.isConstructionAllowed(container):
            raise Unauthorized("Cannot create %s" % object.portal_type)

        if container_fti is not None and \
                not container_fti.allowType(object.portal_type):
            raise ValueError(
                "Disallowed subobject type: %s" % object.portal_type
            )

    chooser = INameChooser(container)
    if hasattr(object, 'id') and chooser.checkName(object.id, object):
        name = object.id
    else:
        name = INameChooser(container).chooseName(None, object)
        object.id = name

    newName = container._setObject(name, object)
    return container._getOb(newName)
Exemple #4
0
    def validateActionFields(self, cat_name, data, allow_dup=False):
        """Check action fields on validity"""
        errors = {}

        if allow_dup:
            # create dummy category to avoid id
            # duplication during action update
            category = ActionCategory(cat_name)
        else:
            # get or create (if necessary) actions category
            category = self.getOrCreateCategory(cat_name)

        # validate action id
        chooser = INameChooser(category)
        try:
            chooser.checkName(data['id'], self.context)
        except Exception, e:
            errors['id'] = self._formatError(e, **{'id': data['id']})
    def validateActionFields(self, cat_name, data, allow_dup=False):
        """Check action fields on validity"""
        errors = {}

        if allow_dup:
            # create dummy category to avoid id
            # duplication during action update
            category = ActionCategory(cat_name)
        else:
            # get or create (if necessary) actions category
            category = self.getOrCreateCategory(cat_name)

        # validate action id
        chooser = INameChooser(category)
        try:
            chooser.checkName(data['id'], self.context)
        except Exception, e:
            errors['id'] = self._formatError(e, **{'id': data['id']})
Exemple #6
0
    def add_site_record(self, site_record):
        orig_name = site_record.id
        chooser = INameChooser(self)
        try:
            chooser.checkName(orig_name, site_record)
        except KeyError:
            # the name already exists, no problem, we're just going to 
            # increment it anyway
            pass
        except (TypeError, ValueError):
            msg = "%s is not useable as a name for a site record" % orig_name
            raise ValueError(msg)

        name = chooser.chooseName(orig_name, site_record)
        checkObject(self, name, site_record)
        site_record.id = name
        self[name] = site_record
        return name
Exemple #7
0
    def normalize(self, item, max_length, parent_path):
        title = item['effective_title']

        if not isinstance(title, unicode):
            title = title.decode('utf-8')

        # Use URLNormalizer to get locale-dependent transcriptions,
        # and IDNormalizer to get lowercased, ID-safe values.
        normalized_id = self.normalizer.normalize(title, max_length=max_length)
        normalized_id = self.id_normalizer.normalize(
            normalized_id, max_length=max_length)

        # Avoid id conflicts
        parent = traverse(self.context, parent_path)
        chooser = INameChooser(parent)
        if not chooser.checkName(title.encode('utf-8'), parent):
            # namechooser expect the object itself as second paremter, but it's
            # only used for getting the request, therefore we use the parent.
            normalized_id = INameChooser(parent).chooseName(
                normalized_id, parent)

        return normalized_id