Skip to content

Commit

Permalink
Add form for Argentinian addresses
Browse files Browse the repository at this point in the history
  • Loading branch information
misaelnieto committed Nov 30, 2013
1 parent 9f31754 commit 612a6da
Show file tree
Hide file tree
Showing 6 changed files with 77 additions and 1 deletion.
Empty file added src/postal/forms/ar/__init__.py
Empty file.
17 changes: 17 additions & 0 deletions src/postal/forms/ar/forms.py
@@ -0,0 +1,17 @@
""" http://www.bitboost.com/ref/international-address-formats.html """
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.contrib.localflavor.ar.forms import ARProvinceSelect, ARPostalCodeField

from postal.forms import PostalAddressForm

class ARPostalAddressForm(PostalAddressForm):
line1 = forms.CharField(label=_(u"Street"), max_length=50)
line2 = forms.CharField(label=_(u"Number"), max_length=50)
city = forms.CharField(label=_(u"City"), max_length=50)
state = forms.CharField(label=_(u"Province"), widget=ARProvinceSelect)
code = ARPostalCodeField(label=_(u"Zip Code"))

def __init__(self, *args, **kwargs):
super(ARPostalAddressForm, self).__init__(*args, **kwargs)
self.fields['country'].initial = "AR"
2 changes: 2 additions & 0 deletions src/postal/library.py
@@ -1,6 +1,7 @@
from django import forms
from postal import settings as postal_settings
from postal.forms import PostalAddressForm
from postal.forms.ar.forms import ARPostalAddressForm
from postal.forms.co.forms import COPostalAddressForm
from postal.forms.cz.forms import CZPostalAddressForm
from postal.forms.de.forms import DEPostalAddressForm
Expand All @@ -24,6 +25,7 @@
"pl": PLPostalAddressForm,
"ru": RUPostalAddressForm,
"us": USPostalAddressForm,
"ar": ARPostalAddressForm,
}

def form_factory(country_code=None):
Expand Down
3 changes: 2 additions & 1 deletion src/postal/tests/__init__.py
@@ -1 +1,2 @@
from test_l10n import *
from test_l10n import *
from test_widgets import *
21 changes: 21 additions & 0 deletions src/postal/tests/test_l10n.py
Expand Up @@ -12,6 +12,27 @@ def test_environment(self):
"""Just make sure everything is set up correctly."""
self.assert_(True)

def test_get_ar_address(self):
"""
Tests that we get the correct widget for Argentina
"""
form_class = form_factory("ar")
self.assertNotEqual(form_class, None)

# only use required fields
test_data = {
'line1': 'Maipu',
'line2': '270',
'city': 'Ciudad de Buenos Aires',
'state': 'B',
'code': 'C1006ACT',
}
form = form_class(data=test_data)

self.assertEqual(form.fields['line1'].label.lower(), "street")
self.assertEqual(form.fields['line2'].label.lower(), "number")
self.assertEqual(form.fields['city'].label.lower(), "city")
self.assertEqual(form.fields['code'].label.lower(), "zip code")

def test_get_de_address(self):
"""
Expand Down
35 changes: 35 additions & 0 deletions src/postal/tests/test_widgets.py
@@ -0,0 +1,35 @@
from django.test import TestCase
from django.utils.translation import ugettext
from django import forms

from postal.library import form_factory
import postal.settings
import postal.forms


class PostalWidgetsTests(TestCase):
def test_environment(self):
"""Just make sure everything is set up correctly."""
self.assert_(True)

def test_ar_widgets(self):
"""
Tests that we get the correct widget for Argentina
"""
form_class = form_factory("ar")
self.assertNotEqual(form_class, None)

# only use required fields
test_data = {
'line1': 'Maipu',
'line2': '270',
'city': 'Ciudad de Buenos Aires',
'state': 'B',
'code': 'C1006ACT',
}
form = form_class(data=test_data)

from django.contrib.localflavor.ar.forms import ARProvinceSelect, ARPostalCodeField
self.assertIsInstance(form.fields['state'].widget, ARProvinceSelect)
self.assertIsInstance(form.fields['code'], ARPostalCodeField)
self.assertEqual(form.fields['country'].initial, 'AR')

0 comments on commit 612a6da

Please sign in to comment.