Example #1
0
class Endesa(Parser):

    pattern = '(SEVILLANA|FECSA|ERZ|UNELCO|GESA).INF.SEG0[1-5].(zip|ZIP)$'
    encoding = "iso-8859-15"
    delimiter = ';'

    def __init__(self, strict=False):
        self.adapter = EndesaSipsAdapter(strict=strict)
        self.schema = EndesaSipsSchema(strict=strict)
        self.fields_ps = []
        self.headers_ps = []
        for f in sorted(self.schema.fields,
                key=lambda f: self.schema.fields[f].metadata['position']):
            field = self.schema.fields[f]
            self.fields_ps.append((f, field.metadata))
            self.headers_ps.append(f)

        self.fields = self.fields_ps

    def parse_line(self, line):
        slinia = tuple(unicode(line.decode(self.encoding)).split(self.delimiter))
        slinia = map(lambda s: s.strip(), slinia)
        parsed = {'ps': {}, 'measures': {}, 'orig': line}
        data = build_dict(self.headers_ps, slinia)
        result, errors = self.adapter.load(data)
        if errors:
            logger.error(errors)
        parsed['ps'] = result
        return parsed, errors
Example #2
0
    def __init__(self, strict=False):
        self.adapter = EndesaSipsAdapter(strict=strict)
        self.schema = EndesaSipsSchema(strict=strict)
        self.fields_ps = []
        self.headers_ps = []
        for f in sorted(self.schema.fields,
                key=lambda f: self.schema.fields[f].metadata['position']):
            field = self.schema.fields[f]
            self.fields_ps.append((f, field.metadata))
            self.headers_ps.append(f)

        self.fields = self.fields_ps