コード例 #1
0
ファイル: renderers.py プロジェクト: polojacky/ehfpi
 def flatten_data(self, data):
     """
     Convert the given data collection to a list of dictionaries that are
     each exactly one level deep. The key for each value in the dictionaries
     designates the name of the column that the value will fall into.
     """
     flat_data = OrderedRows(data.header if hasattr(data, 'header') else None)
     for item in data:
         flat_item = self.flatten_item(item)
         flat_data.append(flat_item)
     return flat_data
コード例 #2
0
 def flatten_data(self, data):
     """
     Convert the given data collection to a list of dictionaries that are
     each exactly one level deep. The key for each value in the dictionaries
     designates the name of the column that the value will fall into.
     """
     flat_data = OrderedRows(
         data.header if hasattr(data, 'header') else None)
     for item in data:
         flat_item = self.flatten_item(item)
         flat_data.append(flat_item)
     return flat_data
コード例 #3
0
    def parse(self, stream, media_type=None, parser_context=None):
        parser_context = parser_context or {}
        delimiter = parser_context.get('delimiter', ',')

        try:
            rows = csv.reader(stream, delimiter=delimiter)
            data = OrderedRows(rows.next())
            for row in rows:
                row_data = dict(zip(data.header, row))
                data.append(row_data)
            return data
        except Exception, exc:
            raise ParseError('CSV parse error - %s' % unicode(exc))
コード例 #4
0
    def parse(self, stream, media_type=None, parser_context=None):
        parser_context = parser_context or {}
        delimiter = parser_context.get('delimiter', ',')

        try:
            encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET)
            rows = unicode_csv_reader(universal_newlines(stream), delimiter=delimiter, charset=encoding)
            data = OrderedRows(next(rows))
            for row in rows:
                row_data = dict(zip(data.header, row))
                data.append(row_data)
            return data
        except Exception as exc:
            raise ParseError('CSV parse error - %s' % str(exc))
コード例 #5
0
    def parse(self, stream, media_type=None, parser_context=None):
        parser_context = parser_context or {}
        delimiter = parser_context.get('delimiter', ',')

        try:
            encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET)
            rows = unicode_csv_reader(universal_newlines(stream), delimiter=delimiter, charset=encoding)
            data = OrderedRows(next(rows))
            for row in rows:
                row_data = dict(zip(data.header, row))
                data.append(row_data)
            return data
        except Exception as exc:
            raise ParseError('CSV parse error - %s' % str(exc))
コード例 #6
0
    def parse(self, stream):
        """
        Парсит, построчно валидирует, отлавливает исключения и ререйзит.

        args: файл.CSV
        return: set(имена клиентво), set(имена камней), list(dict(словари с данными по сделкам))
        """
        delimiter = ','
        encoding = settings.DEFAULT_CHARSET

        try:
            strdata = stream.read()
            binary = universal_newlines(strdata)
            rows = unicode_csv_reader(binary,
                                      delimiter=delimiter,
                                      charset=encoding)
            data = OrderedRows(next(rows))
            if data.header != [
                    'customer', 'item', 'total', 'quantity', 'date'
            ]:
                raise ParseError('Некорректные заголовки файла')

            deals = []
            customers = set()
            gems = set()
            for index, row in enumerate(rows):
                customer_name, gem_name, deal = self.validate(row, index + 2)
                deals.append(deal)
                customers.add(customer_name)
                gems.add(gem_name)

            return customers, gems, deals

        except Exception as exc:
            raise ParseError(f'Ошибка валидации CSV - {exc}')
コード例 #7
0
    def parse(self, stream, media_type=None, parser_context=None):
        parser_context = parser_context or {}
        delimiter = parser_context.get('delimiter', ',')
        encoding = parser_context.get('encoding', settings.DEFAULT_CHARSET)

        try:
            strdata = stream.read()
            binary = universal_newlines(strdata)
            rows = unicode_csv_reader(binary,
                                      delimiter=delimiter,
                                      charset=encoding)
            self.header = OrderedRows(next(rows)).header
            data = []
            for row in rows:
                row_data = self.parse_row(row)
                data.append(row_data)
            return data
        except Exception as exc:
            raise ParseError('CSV parse error - %s' % str(exc))