From 961aedc0ae743253d0eca171aae21ac16bee47c5 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Sat, 1 Feb 2014 15:10:40 -0600 Subject: [PATCH] Added very important data cleaning added TextField now cleans CR and LF from data, this is very important for not breaking everything and leaving me completely confused. Thank you, Lauren! --- pyaccuwage/fields.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/pyaccuwage/fields.py b/pyaccuwage/fields.py index 4ec42f1..6f8ffec 100644 --- a/pyaccuwage/fields.py +++ b/pyaccuwage/fields.py @@ -126,6 +126,19 @@ class TextField(Field): value = value.upper() return value.ljust(self.max_length).encode('ascii')[:self.max_length] + def __setvalue(self, value): + # NO NEWLINES + try: + value = value.replace('\n', '').replace('\r', '') + except AttributeError, e: + pass + self._value = value + + def __getvalue(self): + return self._value + + value = property(__getvalue, __setvalue) + class StateField(TextField): def __init__(self, name=None, required=True, use_numeric=False, max_length=2): @@ -193,6 +206,24 @@ class BlankField(TextField): def parse(self, s): pass +class CRLFField(TextField): + def __init__(self, name=None, required=False): + super(TextField, self).__init__(name=name, max_length=2, required=required, uppercase=False) + + def __setvalue(self, value): + self._value = value + + def __getvalue(self): + return self._value + + value = property(__getvalue, __setvalue) + + def get_data(self): + return '\r\n' + + def parse(self, s): + self.value = s + class BooleanField(Field): def __init__(self, name=None, required=True, value=None): super(BooleanField, self).__init__(name=name, required=required, max_length=1)