doc.py 1.68 KB
from ISO8583.ISO8583 import ISO8583


class BaseISO8583(ISO8583):
    def __init__(self, from_iso=None, debug=False):
        ISO8583.__init__(self, debug=debug)
        self.from_iso = from_iso
        bits = self.get_bit_definition()
        for bit in bits:
            short_name, long_name, type_, size, valueType = bits[bit]
            self.redefineBit(
                bit, short_name, long_name, type_, size, valueType)

    def redefineBit(self, bit, short_name, long_name, type_, size, valueType):
        if type_ in ('LL', 'LLL'):
            LenForm = 'A'  # ASCII
        else:
            LenForm = '-'
        format_ = 'A'  # ASCII
        ISO8583.redefineBit(
                self, bit, short_name, long_name, type_, LenForm, size,
                valueType, format_)

    def getRawIso(self):
        raw = ISO8583.getRawIso(self)
        if isinstance(raw, bytes):
            raw = raw.decode('utf-8')
        return raw.upper()

    def setIsoContent(self, raw):
        ISO8583.setIsoContent(self, raw.encode('utf-8'))

    def get_bit_definition(self):
        return {}

    def get_value(self, bit):
        return self.getBit(bit)

    def get_values(self):
        r = {}
        for item in self.getBitsAndValues():
            bit = int(item['bit'])
            r[bit] = self.getBit(bit)
        return r

    def copy(self, bits=[], from_iso=None):
        if not from_iso:
            from_iso = self.from_iso
        values = from_iso.get_values()
        for bit in values:
            if bits and bit not in bits:  # Hanya bit tertentu ?
                continue
            value = values[bit]
            self.setBit(bit, value)