summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2007-04-08 13:22:48 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2007-04-08 13:22:48 +0000
commit8fafee4de034cd00ac4dc62848708ded44aa830b (patch)
tree7a7a0206a5492d2bc741cf1fbd491708f74949ba /django
parent1245b5c01ed4e9716ceda1e14e1167a70093a3b5 (diff)
Fixed #3876 -- Added Australian local flavour. Thanks, Matthew Flanagan.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4955 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/contrib/localflavor/au/__init__.py0
-rw-r--r--django/contrib/localflavor/au/au_states.py17
-rw-r--r--django/contrib/localflavor/au/forms.py43
3 files changed, 60 insertions, 0 deletions
diff --git a/django/contrib/localflavor/au/__init__.py b/django/contrib/localflavor/au/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/django/contrib/localflavor/au/__init__.py
diff --git a/django/contrib/localflavor/au/au_states.py b/django/contrib/localflavor/au/au_states.py
new file mode 100644
index 0000000000..578d61bb01
--- /dev/null
+++ b/django/contrib/localflavor/au/au_states.py
@@ -0,0 +1,17 @@
+"""
+An alphabetical list of states for use as `choices` in a formfield.
+
+This exists in this standalone file so that it's only imported into memory
+when explicitly needed.
+"""
+
+STATE_CHOICES = (
+ ('ACT', 'Australian Capital Territory'),
+ ('NSW', 'New South Wales'),
+ ('NT', 'Northern Territory'),
+ ('QLD', 'Queensland'),
+ ('SA', 'South Australia'),
+ ('TAS', 'Tasmania'),
+ ('VIC', 'Victoria'),
+ ('WA', 'Western Australia'),
+)
diff --git a/django/contrib/localflavor/au/forms.py b/django/contrib/localflavor/au/forms.py
new file mode 100644
index 0000000000..b81a903d13
--- /dev/null
+++ b/django/contrib/localflavor/au/forms.py
@@ -0,0 +1,43 @@
+"""
+Australian-specific Form helpers
+"""
+
+from django.newforms import ValidationError
+from django.newforms.fields import Field, RegexField, Select, EMPTY_VALUES
+from django.newforms.util import smart_unicode
+from django.utils.translation import gettext
+import re
+
+PHONE_DIGITS_RE = re.compile(r'^(\d{10})$')
+
+class AUPostCodeField(RegexField):
+ """Australian post code field."""
+ def __init__(self, *args, **kwargs):
+ super(AUPostCodeField, self).__init__(r'^\d{4}$',
+ max_length=None, min_length=None,
+ error_message=gettext(u'Enter a 4 digit post code.'),
+ *args, **kwargs)
+
+class AUPhoneNumberField(Field):
+ """Australian phone number field."""
+ def clean(self, value):
+ """Validate a phone number. Strips parentheses, whitespace and
+ hyphens.
+ """
+ super(AUPhoneNumberField, self).clean(value)
+ if value in EMPTY_VALUES:
+ return u''
+ value = re.sub('(\(|\)|\s+|-)', '', smart_unicode(value))
+ phone_match = PHONE_DIGITS_RE.search(value)
+ if phone_match:
+ return u'%s' % phone_match.group(1)
+ raise ValidationError(u'Phone numbers must contain 10 digits.')
+
+class AUStateSelect(Select):
+ """
+ A Select widget that uses a list of Australian states/territories as its
+ choices.
+ """
+ def __init__(self, attrs=None):
+ from au_states import STATE_CHOICES # relative import
+ super(AUStateSelect, self).__init__(attrs, choices=STATE_CHOICES)