
Property changes on: django/contrib/localflavor/sk
___________________________________________________________________
Name: svn:ignore
   + *.pyc


Index: django/contrib/localflavor/sk/__init__.py
===================================================================
Index: django/contrib/localflavor/sk/sk_regions.py
===================================================================
--- django/contrib/localflavor/sk/sk_regions.py	(revision 0)
+++ django/contrib/localflavor/sk/sk_regions.py	(revision 0)
@@ -0,0 +1,16 @@
+"""
+Slovak regions according to http://sk.wikipedia.org/wiki/Administrat%C3%ADvne_%C4%8Dlenenie_Slovenska
+"""
+
+from django.utils.translation import gettext_lazy as _
+
+REGION_CHOICES = (
+    ('BB', _('Banska Bystrica region')),
+    ('BA', _('Bratislava region')),
+    ('KE', _('Kosice region')),
+    ('NR', _('Nitra region')),
+    ('PO', _('Presov region')),
+    ('TN', _('Trencin region')),
+    ('TT', _('Trnava region')),
+    ('ZA', _('Zilina region')),
+)
\ No newline at end of file
Index: django/contrib/localflavor/sk/sk_districts.py
===================================================================
--- django/contrib/localflavor/sk/sk_districts.py	(revision 0)
+++ django/contrib/localflavor/sk/sk_districts.py	(revision 0)
@@ -0,0 +1,87 @@
+"""
+Slovak districts according to http://sk.wikipedia.org/wiki/Administrat%C3%ADvne_%C4%8Dlenenie_Slovenska
+"""
+
+from django.utils.translation import gettext_lazy as _
+
+DISTRICT_CHOICES = (
+    ('BB', _('Banska Bystrica')), 
+    ('BS', _('Banska Stiavnica')), 
+    ('BJ', _('Bardejov')), 
+    ('BN', _('Banovce nad Bebravou')), 
+    ('BR', _('Brezno')), 
+    ('BA1', _('Bratislava I')), 
+    ('BA2', _('Bratislava II')), 
+    ('BA3', _('Bratislava III')), 
+    ('BA4', _('Bratislava IV')), 
+    ('BA5', _('Bratislava V')), 
+    ('BY', _('Bytca')), 
+    ('CA', _('Cadca')), 
+    ('DT', _('Detva')), 
+    ('DK', _('Dolny Kubin')), 
+    ('DS', _('Dunajska Streda')), 
+    ('GA', _('Galanta')), 
+    ('GL', _('Gelnica')), 
+    ('HC', _('Hlohovec')), 
+    ('HE', _('Humenne')), 
+    ('IL', _('Ilava')), 
+    ('KK', _('Kezmarok')), 
+    ('KN', _('Komarno')), 
+    ('KE1', _('Kosice I')), 
+    ('KE2', _('Kosice II')), 
+    ('KE3', _('Kosice III')), 
+    ('KE4', _('Kosice IV')), 
+    ('KEO', _('Kosice - okolie')), 
+    ('KA', _('Krupina')), 
+    ('KM', _('Kysucke Nove Mesto')), 
+    ('LV', _('Levice')), 
+    ('LE', _('Levoca')), 
+    ('LM', _('Liptovsky Mikulas')), 
+    ('LC', _('Lucenec')), 
+    ('MA', _('Malacky')), 
+    ('MT', _('Martin')), 
+    ('ML', _('Medzilaborce')), 
+    ('MI', _('Michalovce')), 
+    ('MY', _('Myjava')), 
+    ('NO', _('Namestovo')), 
+    ('NR', _('Nitra')), 
+    ('NM', _('Nove Mesto nad Vahom')), 
+    ('NZ', _('Nove Zamky')), 
+    ('PE', _('Partizanske')), 
+    ('PK', _('Pezinok')), 
+    ('PN', _('Piestany')), 
+    ('PT', _('Poltar')), 
+    ('PP', _('Poprad')), 
+    ('PB', _('Povazska Bystrica')), 
+    ('PO', _('Presov')), 
+    ('PD', _('Prievidza')), 
+    ('PU', _('Puchov')), 
+    ('RA', _('Revuca')), 
+    ('RS', _('Rimavska Sobota')), 
+    ('RV', _('Roznava')), 
+    ('RK', _('Ruzomberok')), 
+    ('SB', _('Sabinov')), 
+    ('SC', _('Senec')), 
+    ('SE', _('Senica')), 
+    ('SI', _('Skalica')), 
+    ('SV', _('Snina')), 
+    ('SO', _('Sobrance')), 
+    ('SN', _('Spisska Nova Ves')), 
+    ('SL', _('Stara Lubovna')), 
+    ('SP', _('Stropkov')), 
+    ('SK', _('Svidnik')), 
+    ('SA', _('Sala')), 
+    ('TO', _('Topolcany')), 
+    ('TV', _('Trebisov')), 
+    ('TN', _('Trencin')), 
+    ('TT', _('Trnava')), 
+    ('TR', _('Turcianske Teplice')), 
+    ('TS', _('Tvrdosin')), 
+    ('VK', _('Velky Krtis')), 
+    ('VT', _('Vranov nad Toplou')), 
+    ('ZM', _('Zlate Moravce')), 
+    ('ZV', _('Zvolen')), 
+    ('ZC', _('Zarnovica')), 
+    ('ZH', _('Ziar nad Hronom')),
+    ('ZA', _('Zilina')),
+)
Index: django/contrib/localflavor/sk/forms.py
===================================================================
--- django/contrib/localflavor/sk/forms.py	(revision 0)
+++ django/contrib/localflavor/sk/forms.py	(revision 0)
@@ -0,0 +1,41 @@
+"""
+Slovak-specific form helpers
+"""
+
+from django.newforms.fields import Select, RegexField
+from django.utils.translation import gettext
+
+class SKRegionSelect(Select):
+    """
+    A select widget widget with list of Slovak regions as choices.
+    """
+    def __init__(self, attrs=None):
+        from sk_regions import REGION_CHOICES
+        super(SKRegionSelect, self).__init__(attrs, choices=REGION_CHOICES)
+        
+class SKDistrictSelect(Select):
+    """
+    A select widget with list of Slovak districts as choices.
+    """
+    def __init__(self, attrs=None):
+        from sk_districts import DISTRICT_CHOICES
+        super(SKDistrictSelect, self).__init__(attrs, choices=DISTRICT_CHOICES)
+        
+class SKPostalCodeField(RegexField):
+    """
+    A form field that validates its input as Slovak postal code.
+    Valid form is XXXXX or XXX XX, where X represents integer.
+    """
+    def __init__(self, *args, **kwargs):
+        super(SKPostalCodeField, self).__init__(r'^\d{5}$|^\d{3} \d{2}$',
+            max_length=None, min_length=None,
+            error_message=gettext(u'Enter a postal code in the format XXXXX or XXX XX.'),
+            *args, **kwargs)
+
+    def clean(self, value):
+        """
+        Validates the input and returns a string that contains only numbers.
+        Returns an empty string for empty values.
+        """
+        v = super(SKPostalCodeField, self).clean(value)
+        return v.replace(' ', '')
\ No newline at end of file
Index: tests/regressiontests/forms/localflavor.py
===================================================================
--- tests/regressiontests/forms/localflavor.py	(revision 4926)
+++ tests/regressiontests/forms/localflavor.py	(working copy)
@@ -882,4 +882,36 @@
 Traceback (most recent call last):
 ...
 ValidationError: [u'Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X format']
+
+
+# SKPostalCodeField #########################################################
+
+>>> from django.contrib.localflavor.sk.forms import SKPostalCodeField
+>>> f = SKPostalCodeField()
+>>> f.clean('84545x')
+Traceback (most recent call last):
+...
+ValidationError: [u'Enter a postal code in the format XXXXX or XXX XX.']
+>>> f.clean('91909')
+u'91909'
+>>> f.clean('917 01')
+u'91701'
+
+# SKRegionSelect ############################################################
+
+>>> from django.contrib.localflavor.sk.forms import SKRegionSelect
+>>> w = SKRegionSelect()
+>>> w.render('regions', 'TT')
+u'<select name="regions">\n<option value="BB">Banska Bystrica region</option>\n<option value="BA">Bratislava region</option>\n<option value="KE">Kosice region</option>\n<option value="NR">Nitra region</option>\n<option value="PO">Presov region</option>\n<option value="TN">Trencin region</option>\n<option value="TT" selected="selected">Trnava region</option>\n<option value="ZA">Zilina region</option>\n</select>'
+
+# SKDistrictSelect ##########################################################
+
+>>> from django.contrib.localflavor.sk.forms import SKDistrictSelect
+>>> w = SKDistrictSelect()
+>>> w.render('Districts', 'RK')
+u'<select name="Districts">\n<option value="BB">Banska Bystrica</option>\n<option value="BS">Banska Stiavnica</option>\n<option value="BJ">Bardejov</option>\n<option value="BN">Banovce nad Bebravou</option>\n<option value="BR">Brezno</option>\n<option value="BA1">Bratislava I</option>\n<option value="BA2">Bratislava II</option>\n<option value="BA3">Bratislava III</option>\n<option value="BA4">Bratislava IV</option>\n<option value="BA5">Bratislava V</option>\n<option value="BY">Bytca</option>\n<option value="CA">Cadca</option>\n<option value="DT">Detva</option>\n<option value="DK">Dolny Kubin</option>\n<option value="DS">Dunajska Streda</option>\n<option value="GA">Galanta</option>\n<option value="GL">Gelnica</option>\n<option value="HC">Hlohovec</option>\n<option value="HE">Humenne</option>\n<option value="IL">Ilava</option>\n<option value="KK">Kezmarok</option>\n<option value="KN">Komarno</option>\n<option value="KE1">Kosice I</option>\n<option value="KE2">Kosice II</option>\n<option value="KE3">Kosice III</option>\n<option value="KE4">Kosice IV</option>\n<option value="KEO">Kosice - okolie</option>\n<option value="KA">Krupina</option>\n<option value="KM">Kysucke Nove Mesto</option>\n<option value="LV">Levice</option>\n<option value="LE">Levoca</option>\n<option value="LM">Liptovsky Mikulas</option>\n<option value="LC">Lucenec</option>\n<option value="MA">Malacky</option>\n<option value="MT">Martin</option>\n<option value="ML">Medzilaborce</option>\n<option value="MI">Michalovce</option>\n<option value="MY">Myjava</option>\n<option value="NO">Namestovo</option>\n<option value="NR">Nitra</option>\n<option value="NM">Nove Mesto nad Vahom</option>\n<option value="NZ">Nove Zamky</option>\n<option value="PE">Partizanske</option>\n<option value="PK">Pezinok</option>\n<option value="PN">Piestany</option>\n<option value="PT">Poltar</option>\n<option value="PP">Poprad</option>\n<option value="PB">Povazska Bystrica</option>\n<option value="PO">Presov</option>\n<option value="PD">Prievidza</option>\n<option value="PU">Puchov</option>\n<option value="RA">Revuca</option>\n<option value="RS">Rimavska Sobota</option>\n<option value="RV">Roznava</option>\n<option value="RK" selected="selected">Ruzomberok</option>\n<option value="SB">Sabinov</option>\n<option value="SC">Senec</option>\n<option value="SE">Senica</option>\n<option value="SI">Skalica</option>\n<option value="SV">Snina</option>\n<option value="SO">Sobrance</option>\n<option value="SN">Spisska Nova Ves</option>\n<option value="SL">Stara Lubovna</option>\n<option value="SP">Stropkov</option>\n<option value="SK">Svidnik</option>\n<option value="SA">Sala</option>\n<option value="TO">Topolcany</option>\n<option value="TV">Trebisov</option>\n<option value="TN">Trencin</option>\n<option value="TT">Trnava</option>\n<option value="TR">Turcianske Teplice</option>\n<option value="TS">Tvrdosin</option>\n<option value="VK">Velky Krtis</option>\n<option value="VT">Vranov nad Toplou</option>\n<option value="ZM">Zlate Moravce</option>\n<option value="ZV">Zvolen</option>\n<option value="ZC">Zarnovica</option>\n<option value="ZH">Ziar nad Hronom</option>\n<option value="ZA">Zilina</option>\n</select>'
+
 """
+
+
+
