def setFilename(self, value, key=None):
        # Sets the filename of a field.
        if key is None:
            field = self.getPrimaryField()
        else:
            field = self.getField(key) or getattr(self, key, None)

        if field and IFileField.providedBy(field):
            field.setFilename(self, value)
Exemple #2
0
    def setFilename(self, value, key=None):
        # Sets the filename of a field.
        if key is None:
            field = self.getPrimaryField()
        else:
            field = self.getField(key) or getattr(self, key, None)

        if field and IFileField.providedBy(field):
            field.setFilename(self, value)
    def setContentType(self, value, key=None):
        """Sets the content type of a field.
        """
        if key is None:
            field = self.getPrimaryField()
        else:
            field = self.getField(key) or getattr(self, key, None)

        if field and IFileField.providedBy(field):
            field.setContentType(self, value)
Exemple #4
0
    def setContentType(self, value, key=None):
        """Sets the content type of a field.
        """
        if key is None:
            field = self.getPrimaryField()
        else:
            field = self.getField(key) or getattr(self, key, None)

        if field and IFileField.providedBy(field):
            field.setContentType(self, value)
Exemple #5
0
    def setFilename(self, value, key=None):
        """Sets the filename of a field.
        """
        if key is None:
            field = self.getPrimaryField()
        else:
            field = self.getField(key) or getattr(self, key, None)

        if field and IFileField.isImplementedBy(field):
            field.setFilename(self, value)
Exemple #6
0
 def __call__(self, recursive=True):
     # look for a content with name file field into content
     field = self.context.getPrimaryField()
     for field in [self.context.getPrimaryField()] \
             + self.context.Schema().values():
         if IBlobField.providedBy(field) or IFileField.providedBy(field):
             return self.context.getField('file').get(self.context)
         #@TODO: should work with a basic IFileField
     else:
         return None
 def isBinary(self, key):
     # Return wether a field contains binary data.
     field = self.getField(key)
     if IFileField.providedBy(field):
         value = field.getBaseUnit(self)
         return value.isBinary()
     mimetype = self.getContentType(key)
     if mimetype and shasattr(mimetype, 'binary'):
         return mimetype.binary
     elif mimetype and mimetype.find('text') >= 0:
         return 0
     return 1
Exemple #8
0
 def isBinary(self, key):
     # Return wether a field contains binary data.
     field = self.getField(key)
     if IFileField.providedBy(field):
         value = field.getBaseUnit(self)
         return value.isBinary()
     mimetype = self.getContentType(key)
     if mimetype and shasattr(mimetype, 'binary'):
         return mimetype.binary
     elif mimetype and mimetype.find('text') >= 0:
         return 0
     return 1
    def _migrateGetValue(self, name, new_schema=None):
        """Try to get a value from an object using a variety of methods."""
        schema = self.Schema()
        # Migrate pre-AT 1.3 schemas.
        schema = fixSchema(schema)
        # First see if the new field name is managed by the current schema
        field = schema.get(getattr(new_schema.get(name,None),'old_field_name',name), None)
        if field:
            # At very first try to use the BaseUnit itself
            try:
                if IFileField.providedBy(field):
                    return field.getBaseUnit(self)
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

            # First try the edit accessor
            try:
                editAccessor = field.getEditAccessor(self)
                if editAccessor:
                    return editAccessor()
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

            # No luck -- now try the accessor
            try:
                accessor = field.getAccessor(self)
                if accessor:
                    return accessor()
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass
            # No luck use standard method to get the value
            return field.get(self)

            # Still no luck -- try to get the value directly
            # this part should be remove because for some fields this will fail
            # if you get the value directly for example for FixPointField
            # stored value is (0,0) but the input value is a string.
            # at this time FixPointField fails if he got a tuple as input value
            # Because of this line value = value.replace(',','.')
            try:
                return self[field.getName()]
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

        # Nope -- see if the new accessor method is present
        # in the current object.
        if new_schema:
            new_field = new_schema.get(name)
            # Try the new edit accessor
            try:
                editAccessor = new_field.getEditAccessor(self)
                if editAccessor:
                    return editAccessor()
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

            # Nope -- now try the accessor
            try:
                accessor = new_field.getAccessor(self)
                if accessor:
                    return accessor()
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

            # Still no luck -- try to get the value directly using the new name
            try:
                return self[new_field.getName()]
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

        # Nope -- now see if the current object has an attribute
        # with the same name
        # as the new field
        if shasattr(self, name):
            return getattr(self, name)

        raise ValueError, 'name = %s' % (name)
Exemple #10
0
    def _migrateGetValue(self, name, new_schema=None):
        """Try to get a value from an object using a variety of methods."""
        schema = self.Schema()
        # Migrate pre-AT 1.3 schemas.
        schema = fixSchema(schema)
        # First see if the new field name is managed by the current schema
        field = schema.get(getattr(new_schema.get(
            name, None), 'old_field_name', name), None)
        if field:
            # At very first try to use the BaseUnit itself
            try:
                if IFileField.providedBy(field):
                    return field.getBaseUnit(self)
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

            # First try the edit accessor
            try:
                editAccessor = field.getEditAccessor(self)
                if editAccessor:
                    return editAccessor()
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

            # No luck -- now try the accessor
            try:
                accessor = field.getAccessor(self)
                if accessor:
                    return accessor()
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass
            # No luck use standard method to get the value
            return field.get(self)

            # Still no luck -- try to get the value directly
            # this part should be remove because for some fields this will fail
            # if you get the value directly for example for FixPointField
            # stored value is (0,0) but the input value is a string.
            # at this time FixPointField fails if he got a tuple as input value
            # Because of this line value = value.replace(',','.')
            try:
                return self[field.getName()]
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

        # Nope -- see if the new accessor method is present
        # in the current object.
        if new_schema:
            new_field = new_schema.get(name)
            # Try the new edit accessor
            try:
                editAccessor = new_field.getEditAccessor(self)
                if editAccessor:
                    return editAccessor()
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

            # Nope -- now try the accessor
            try:
                accessor = new_field.getAccessor(self)
                if accessor:
                    return accessor()
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

            # Still no luck -- try to get the value directly using the new name
            try:
                return self[new_field.getName()]
            except (ConflictError, KeyboardInterrupt):
                raise
            except:
                pass

        # Nope -- now see if the current object has an attribute
        # with the same name
        # as the new field
        if shasattr(self, name):
            return getattr(self, name)

        raise ValueError, 'name = %s' % (name)