Beispiel #1
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
Beispiel #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
    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))
    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))
Beispiel #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))
Beispiel #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}')
Beispiel #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))