From a3f89e3790583d2c366ecddb861bc499810bb059 Mon Sep 17 00:00:00 2001 From: Binh Nguyen Date: Sat, 5 Nov 2011 14:11:37 -0500 Subject: [PATCH] fixed a couple field types being wrong, improved validation, auto-truncate over-length fields --- pyaccuwage/fields.py | 8 ++++---- pyaccuwage/record.py | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pyaccuwage/fields.py b/pyaccuwage/fields.py index 57ec547..5b79e91 100644 --- a/pyaccuwage/fields.py +++ b/pyaccuwage/fields.py @@ -61,7 +61,7 @@ class TextField(Field): value = self.value or "" if self.uppercase: value = value.upper() - return value.ljust(self.max_length).encode('ascii') + return value.ljust(self.max_length).encode('ascii')[:self.max_length] class StateField(TextField): @@ -74,7 +74,7 @@ class StateField(TextField): if value.strip() and self.use_numeric: return str(enums.state_postal_numeric[value.upper()]).zfill(self.max_length) else: - return value.ljust(self.max_length).encode('ascii') + return value.ljust(self.max_length).encode('ascii')[:self.max_length] def validate(self): super(StateField, self).validate() @@ -105,7 +105,7 @@ class NumericField(TextField): def get_data(self): value = self.value or "" - return str(value).zfill(self.max_length) + return str(value).zfill(self.max_length)[:self.max_length] def parse(self, s): self.value = int(s) @@ -153,7 +153,7 @@ class MoneyField(Field): raise ValidationError("value is too long", field=self) def get_data(self): - return str(int((self.value or 0)*100)).encode('ascii').zfill(self.max_length) + return str(int((self.value or 0)*100)).encode('ascii').zfill(self.max_length)[:self.max_length] def parse(self, s): self.value = decimal.Decimal(s) * decimal.Decimal('0.01') diff --git a/pyaccuwage/record.py b/pyaccuwage/record.py index 6f05d86..8952f81 100644 --- a/pyaccuwage/record.py +++ b/pyaccuwage/record.py @@ -83,7 +83,7 @@ class EmployerRecord(model.Model): required = True tax_year = NumericField(max_length=4) - agent_indicator = NumericField(max_length=1, required=False) + agent_indicator = TextField(max_length=1, required=False) employer_ein = TextField(max_length=9) agent_for_ein = TextField(max_length=9, required=False) terminating_business_indicator = BooleanField() @@ -276,7 +276,7 @@ class TotalRecord(model.Model): record_identifier = 'RT' required = True - number_of_rw_records = MoneyField(max_length=7) + number_of_rw_records = NumericField(max_length=7) wages_tips = MoneyField(max_length=15) federal_income_tax_withheld = MoneyField(max_length=15) social_security_wages = MoneyField(max_length=15)