Exemple #1
0
    def save(self):
        """save doc..."""
        if self.removeIfSavedEmpty and not self.rows:
            self.remove()
            return

        index = 0
        names = self.fieldNames
        if self.autoIndexFieldName:
            names.insert(0, self.autoIndexFieldName)

        fieldNames = []
        for name in names:
            if StringUtils.isTextType(name):
                name = name.encode('latin-1')
            fieldNames.append(name)

        try:
            if sys.version < '3':
                args = dict(mode='w')
            else:
                args = dict(mode='w', encoding='utf-8')
            with open(self.path, **args) as f:
                writer = csv.DictWriter(f, fieldnames=names, dialect=csv.excel)
                writer.writeheader()
                for row in self.rows:
                    result = dict()

                    if self.autoIndexFieldName:
                        index += 1
                        result[self.autoIndexFieldName] = index

                    for key, name in self._fields.items():
                        value = row.get(key, '')
                        if StringUtils.isBinaryType(value):
                            value = StringUtils.toText(value)
                        result[name] = value
                    writer.writerow(result)
            return True
        except Exception as err:
            raise
            return False
Exemple #2
0
    def save(self):
        """save doc..."""
        if self.removeIfSavedEmpty and not self.rows:
            self.remove()
            return

        index = 0
        names = self.fieldNames
        if self.autoIndexFieldName:
            names.insert(0, self.autoIndexFieldName)

        fieldNames = []
        for name in names:
            if StringUtils.isTextType(name):
                name = name.encode('latin-1')
            fieldNames.append(name)

        try:
            if sys.version < '3':
                args = dict(mode='w')
            else:
                args = dict(mode='w', encoding='utf-8')
            with open(self.path, **args) as f:
                writer = csv.DictWriter(f, fieldnames=names, dialect=csv.excel)
                writer.writeheader()
                for row in self.rows:
                    result = dict()

                    if self.autoIndexFieldName:
                        index += 1
                        result[self.autoIndexFieldName] = index

                    for key, name in self._fields.items():
                        value = row.get(key, '')
                        if StringUtils.isBinaryType(value):
                            value = StringUtils.toText(value)
                        result[name] = value
                    writer.writerow(result)
            return True
        except Exception as err:
            raise
            return False
Exemple #3
0
    def _generateHeaders(cls,
                         keyName,
                         expires=None,
                         eTag=None,
                         maxAge=-1,
                         gzipped=False):
        """Doc..."""
        headers = dict()

        if expires:
            if StringUtils.isStringType(expires):
                headers['Expires'] = StringUtils.toBytes(expires)
            elif StringUtils.isBinaryType(expires):
                headers['Expires'] = expires
            else:
                headers['Expires'] = StringUtils.toBytes(
                    TimeUtils.dateTimeToWebTimestamp(expires))
        elif eTag:
            headers['ETag'] = StringUtils.toBytes(eTag)

        if maxAge > -1:
            headers['Cache-Control'] = StringUtils.toBytes(
                'max-age=%s; public' % maxAge)

        if keyName.endswith('.jpg'):
            contentType = MIME_TYPES.JPEG_IMAGE
        elif keyName.endswith('.png'):
            contentType = MIME_TYPES.PNG_IMAGE
        elif keyName.endswith('.gif'):
            contentType = MIME_TYPES.GIF_IMAGE
        else:
            contentType = FileUtils.getMimeType(keyName)
        if StringUtils.begins(contentType, ('text/', 'application/')):
            contentType = '%s; charset=UTF-8' % contentType
        headers['Content-Type'] = contentType

        if gzipped:
            headers['Content-Encoding'] = 'gzip'

        return headers
Exemple #4
0
    def _generateHeaders(
            cls, keyName, expires =None, eTag =None, maxAge =-1, gzipped =False
    ):
        """Doc..."""
        headers = dict()

        if expires:
            if StringUtils.isStringType(expires):
                headers['Expires'] = StringUtils.toBytes(expires)
            elif StringUtils.isBinaryType(expires):
                headers['Expires'] = expires
            else:
                headers['Expires'] = StringUtils.toBytes(
                    TimeUtils.dateTimeToWebTimestamp(expires))
        elif eTag:
            headers['ETag'] = StringUtils.toBytes(eTag)

        if maxAge > -1:
            headers['Cache-Control'] = StringUtils.toBytes(
                'max-age=%s; public' % maxAge)

        if keyName.endswith('.jpg'):
            contentType = MIME_TYPES.JPEG_IMAGE
        elif keyName.endswith('.png'):
            contentType = MIME_TYPES.PNG_IMAGE
        elif keyName.endswith('.gif'):
            contentType = MIME_TYPES.GIF_IMAGE
        else:
            contentType = FileUtils.getMimeType(keyName)
        if StringUtils.begins(contentType, ('text/', 'application/')):
            contentType = '%s; charset=UTF-8' % contentType
        headers['Content-Type'] = contentType

        if gzipped:
            headers['Content-Encoding'] = 'gzip'

        return headers