Author: jacob
Date: 2008-09-01 17:15:35 -0500 (Mon, 01 Sep 2008)
New Revision: 8819

Added:
   django/trunk/django/contrib/localflavor/us/models.py
Modified:
   django/trunk/django/contrib/gis/tests/relatedapp/models.py
   django/trunk/django/contrib/gis/utils/layermapping.py
   django/trunk/django/db/backends/mysql/creation.py
   django/trunk/django/db/backends/oracle/creation.py
   django/trunk/django/db/backends/postgresql/creation.py
   django/trunk/django/db/backends/sqlite3/creation.py
   django/trunk/django/db/models/fields/__init__.py
   django/trunk/docs/ref/contrib/localflavor.txt
   django/trunk/docs/ref/models/fields.txt
   django/trunk/docs/topics/db/models.txt
   django/trunk/docs/topics/forms/modelforms.txt
   django/trunk/tests/modeltests/model_forms/models.py
   django/trunk/tests/regressiontests/serializers_regress/models.py
Log:
Fixed #8210 and #8664: moved `USStateField` and `PhoneNumberField` to 
`django.contrib.localflavor.us`. This is a backwards-incompatible change, 
albeit a minor one; just add an aditional `import` and go on your way.

Modified: django/trunk/django/contrib/gis/tests/relatedapp/models.py
===================================================================
--- django/trunk/django/contrib/gis/tests/relatedapp/models.py  2008-09-01 
22:05:18 UTC (rev 8818)
+++ django/trunk/django/contrib/gis/tests/relatedapp/models.py  2008-09-01 
22:15:35 UTC (rev 8819)
@@ -1,4 +1,5 @@
 from django.contrib.gis.db import models
+from django.contrib.localflavor.us.models import USStateField
 
 class Location(models.Model):
     name = models.CharField(max_length=50)
@@ -7,6 +8,6 @@
 
 class City(models.Model):
     name = models.CharField(max_length=50)
-    state = models.USStateField()
+    state = USStateField()
     location = models.ForeignKey(Location)
     objects = models.GeoManager()

Modified: django/trunk/django/contrib/gis/utils/layermapping.py
===================================================================
--- django/trunk/django/contrib/gis/utils/layermapping.py       2008-09-01 
22:05:18 UTC (rev 8818)
+++ django/trunk/django/contrib/gis/utils/layermapping.py       2008-09-01 
22:15:35 UTC (rev 8819)
@@ -118,6 +118,7 @@
     OFTDate, OFTDateTime, OFTInteger, OFTReal, OFTString, OFTTime
 from django.contrib.gis.models import GeometryColumns, SpatialRefSys
 from django.db import models, transaction
+from django.contrib.localflavor.us.models import USStateField
 
 # LayerMapping exceptions.
 class LayerMapError(Exception): pass
@@ -150,7 +151,7 @@
         models.SlugField : OFTString,
         models.TextField : OFTString,
         models.URLField : OFTString,
-        models.USStateField : OFTString,
+        USStateField : OFTString,
         models.XMLField : OFTString,
         models.SmallIntegerField : (OFTInteger, OFTReal, OFTString),
         models.PositiveSmallIntegerField : (OFTInteger, OFTReal, OFTString),

Added: django/trunk/django/contrib/localflavor/us/models.py
===================================================================
--- django/trunk/django/contrib/localflavor/us/models.py                        
        (rev 0)
+++ django/trunk/django/contrib/localflavor/us/models.py        2008-09-01 
22:15:35 UTC (rev 8819)
@@ -0,0 +1,35 @@
+from django.conf import settings
+from django.db.models.fields import Field
+
+class USStateField(Field): 
+    def get_internal_type(self): 
+        return "USStateField" 
+        
+    def db_type(self):
+        if settings.DATABASE_ENGINE == 'oracle':
+            return 'CHAR(2)'
+        else:
+            return 'varchar(2)'
+    
+    def formfield(self, **kwargs): 
+        from django.contrib.localflavor.us.forms import USStateSelect 
+        defaults = {'widget': USStateSelect} 
+        defaults.update(kwargs) 
+        return super(USStateField, self).formfield(**defaults)
+
+class PhoneNumberField(Field):
+    def get_internal_type(self):
+        return "PhoneNumberField"
+
+    def db_type(self):
+        if settings.DATABASE_ENGINE == 'oracle':
+            return 'VARCHAR2(20)'
+        else:
+            return 'varchar(20)'
+
+    def formfield(self, **kwargs):
+        from django.contrib.localflavor.us.forms import USPhoneNumberField
+        defaults = {'form_class': USPhoneNumberField}
+        defaults.update(kwargs)
+        return super(PhoneNumberField, self).formfield(**defaults)
+

Modified: django/trunk/django/db/backends/mysql/creation.py
===================================================================
--- django/trunk/django/db/backends/mysql/creation.py   2008-09-01 22:05:18 UTC 
(rev 8818)
+++ django/trunk/django/db/backends/mysql/creation.py   2008-09-01 22:15:35 UTC 
(rev 8819)
@@ -21,14 +21,12 @@
         'IPAddressField':    'char(15)',
         'NullBooleanField':  'bool',
         'OneToOneField':     'integer',
-        'PhoneNumberField':  'varchar(20)',
         'PositiveIntegerField': 'integer UNSIGNED',
         'PositiveSmallIntegerField': 'smallint UNSIGNED',
         'SlugField':         'varchar(%(max_length)s)',
         'SmallIntegerField': 'smallint',
         'TextField':         'longtext',
         'TimeField':         'time',
-        'USStateField':      'varchar(2)',
     }
 
     def sql_table_creation_suffix(self):

Modified: django/trunk/django/db/backends/oracle/creation.py
===================================================================
--- django/trunk/django/db/backends/oracle/creation.py  2008-09-01 22:05:18 UTC 
(rev 8818)
+++ django/trunk/django/db/backends/oracle/creation.py  2008-09-01 22:15:35 UTC 
(rev 8819)
@@ -30,7 +30,6 @@
         'IPAddressField':               'VARCHAR2(15)',
         'NullBooleanField':             'NUMBER(1) CHECK ((%(qn_column)s IN 
(0,1)) OR (%(qn_column)s IS NULL))',
         'OneToOneField':                'NUMBER(11)',
-        'PhoneNumberField':             'VARCHAR2(20)',
         'PositiveIntegerField':         'NUMBER(11) CHECK (%(qn_column)s >= 
0)',
         'PositiveSmallIntegerField':    'NUMBER(11) CHECK (%(qn_column)s >= 
0)',
         'SlugField':                    'NVARCHAR2(50)',
@@ -38,7 +37,6 @@
         'TextField':                    'NCLOB',
         'TimeField':                    'TIMESTAMP',
         'URLField':                     'VARCHAR2(%(max_length)s)',
-        'USStateField':                 'CHAR(2)',
     }
 
     remember = {}

Modified: django/trunk/django/db/backends/postgresql/creation.py
===================================================================
--- django/trunk/django/db/backends/postgresql/creation.py      2008-09-01 
22:05:18 UTC (rev 8818)
+++ django/trunk/django/db/backends/postgresql/creation.py      2008-09-01 
22:15:35 UTC (rev 8819)
@@ -21,14 +21,12 @@
         'IPAddressField':    'inet',
         'NullBooleanField':  'boolean',
         'OneToOneField':     'integer',
-        'PhoneNumberField':  'varchar(20)',
         'PositiveIntegerField': 'integer CHECK ("%(column)s" >= 0)',
         'PositiveSmallIntegerField': 'smallint CHECK ("%(column)s" >= 0)',
         'SlugField':         'varchar(%(max_length)s)',
         'SmallIntegerField': 'smallint',
         'TextField':         'text',
         'TimeField':         'time',
-        'USStateField':      'varchar(2)',
     }
 
     def sql_table_creation_suffix(self):

Modified: django/trunk/django/db/backends/sqlite3/creation.py
===================================================================
--- django/trunk/django/db/backends/sqlite3/creation.py 2008-09-01 22:05:18 UTC 
(rev 8818)
+++ django/trunk/django/db/backends/sqlite3/creation.py 2008-09-01 22:15:35 UTC 
(rev 8819)
@@ -22,14 +22,12 @@
         'IPAddressField':               'char(15)',
         'NullBooleanField':             'bool',
         'OneToOneField':                'integer',
-        'PhoneNumberField':             'varchar(20)',
         'PositiveIntegerField':         'integer unsigned',
         'PositiveSmallIntegerField':    'smallint unsigned',
         'SlugField':                    'varchar(%(max_length)s)',
         'SmallIntegerField':            'smallint',
         'TextField':                    'text',
         'TimeField':                    'time',
-        'USStateField':                 'varchar(2)',
     }
     
     def sql_for_pending_references(self, model, style, pending_references):

Modified: django/trunk/django/db/models/fields/__init__.py
===================================================================
--- django/trunk/django/db/models/fields/__init__.py    2008-09-01 22:05:18 UTC 
(rev 8818)
+++ django/trunk/django/db/models/fields/__init__.py    2008-09-01 22:15:35 UTC 
(rev 8819)
@@ -741,16 +741,6 @@
         defaults.update(kwargs)
         return super(NullBooleanField, self).formfield(**defaults)
 
-class PhoneNumberField(Field):
-    def get_internal_type(self):
-        return "PhoneNumberField"
-
-    def formfield(self, **kwargs):
-        from django.contrib.localflavor.us.forms import USPhoneNumberField
-        defaults = {'form_class': USPhoneNumberField}
-        defaults.update(kwargs)
-        return super(PhoneNumberField, self).formfield(**defaults)
-
 class PositiveIntegerField(IntegerField):
     def get_internal_type(self):
         return "PositiveIntegerField"
@@ -876,16 +866,6 @@
         defaults.update(kwargs)
         return super(URLField, self).formfield(**defaults)
 
-class USStateField(Field):
-    def get_internal_type(self):
-        return "USStateField"
-
-    def formfield(self, **kwargs):
-        from django.contrib.localflavor.us.forms import USStateSelect
-        defaults = {'widget': USStateSelect}
-        defaults.update(kwargs)
-        return super(USStateField, self).formfield(**defaults)
-
 class XMLField(TextField):
     def __init__(self, verbose_name=None, name=None, schema_path=None, 
**kwargs):
         self.schema_path = schema_path

Modified: django/trunk/docs/ref/contrib/localflavor.txt
===================================================================
--- django/trunk/docs/ref/contrib/localflavor.txt       2008-09-01 22:05:18 UTC 
(rev 8818)
+++ django/trunk/docs/ref/contrib/localflavor.txt       2008-09-01 22:15:35 UTC 
(rev 8819)
@@ -649,3 +649,8 @@
 
     A form ``Select`` widget that uses a list of U.S. states/territories as its
     choices.
+
+.. class:: us.models.USStateField
+
+    A model field that forms represent as a ``forms.USStateField`` field and
+    stores the two-letter U.S. state abbreviation in the database.

Modified: django/trunk/docs/ref/models/fields.txt
===================================================================
--- django/trunk/docs/ref/models/fields.txt     2008-09-01 22:05:18 UTC (rev 
8818)
+++ django/trunk/docs/ref/models/fields.txt     2008-09-01 22:15:35 UTC (rev 
8819)
@@ -705,14 +705,6 @@
 :attr:`~CharField.max_length`argument. If you don't specify
 :attr:`~CharField.max_length`, a default of 200 is used.
 
-``USStateField``
-----------------
-
-.. class:: USStateField([**options])
-
-A two-letter U.S. state abbreviation. The admin represents this as an ``<input
-type="text">`` (a single-line input).
-
 ``XMLField``
 ------------
 

Modified: django/trunk/docs/topics/db/models.txt
===================================================================
--- django/trunk/docs/topics/db/models.txt      2008-09-01 22:05:18 UTC (rev 
8818)
+++ django/trunk/docs/topics/db/models.txt      2008-09-01 22:15:35 UTC (rev 
8819)
@@ -625,13 +625,14 @@
 
 For example, this model has a few custom methods::
 
+    from django.contrib.localflavor.us.models import USStateField
     class Person(models.Model):
         first_name = models.CharField(max_length=50)
         last_name = models.CharField(max_length=50)
         birth_date = models.DateField()
         address = models.CharField(max_length=100)
         city = models.CharField(max_length=50)
-        state = models.USStateField() # Yes, this is America-centric...
+        state = USStateField() # Yes, this is America-centric...
 
         def baby_boomer_status(self):
             "Returns the person's baby-boomer status."

Modified: django/trunk/docs/topics/forms/modelforms.txt
===================================================================
--- django/trunk/docs/topics/forms/modelforms.txt       2008-09-01 22:05:18 UTC 
(rev 8818)
+++ django/trunk/docs/topics/forms/modelforms.txt       2008-09-01 22:15:35 UTC 
(rev 8819)
@@ -73,10 +73,6 @@
     ``TimeField``                    ``TimeField``
     ``URLField``                     ``URLField`` with ``verify_exists`` set
                                      to the model field's ``verify_exists``
-    ``USStateField``                 ``CharField`` with
-                                     ``widget=USStateSelect``
-                                     (``USStateSelect`` is from
-                                     ``django.contrib.localflavor.us``)
     ``XMLField``                     ``CharField`` with ``widget=Textarea``
     ===============================  ========================================
 

Modified: django/trunk/tests/modeltests/model_forms/models.py
===================================================================
--- django/trunk/tests/modeltests/model_forms/models.py 2008-09-01 22:05:18 UTC 
(rev 8818)
+++ django/trunk/tests/modeltests/model_forms/models.py 2008-09-01 22:15:35 UTC 
(rev 8819)
@@ -82,8 +82,9 @@
     def __unicode__(self):
         return "%s is %s" % (self.writer, self.age)
 
+from django.contrib.localflavor.us.models import PhoneNumberField
 class PhoneNumber(models.Model):
-    phone = models.PhoneNumberField()
+    phone = PhoneNumberField()
     description = models.CharField(max_length=20)
 
     def __unicode__(self):

Modified: django/trunk/tests/regressiontests/serializers_regress/models.py
===================================================================
--- django/trunk/tests/regressiontests/serializers_regress/models.py    
2008-09-01 22:05:18 UTC (rev 8818)
+++ django/trunk/tests/regressiontests/serializers_regress/models.py    
2008-09-01 22:15:35 UTC (rev 8819)
@@ -8,6 +8,7 @@
 from django.db import models
 from django.contrib.contenttypes import generic
 from django.contrib.contenttypes.models import ContentType
+from django.contrib.localflavor.us.models import USStateField, PhoneNumberField
 
 # The following classes are for testing basic data
 # marshalling, including NULL values.
@@ -52,7 +53,7 @@
     data = models.NullBooleanField(null=True)
 
 class PhoneData(models.Model):
-    data = models.PhoneNumberField(null=True)
+    data = PhoneNumberField(null=True)
 
 class PositiveIntegerData(models.Model):
     data = models.PositiveIntegerField(null=True)
@@ -73,7 +74,7 @@
     data = models.TimeField(null=True)
 
 class USStateData(models.Model):
-    data = models.USStateField(null=True)
+    data = USStateField(null=True)
 
 class XMLData(models.Model):
     data = models.XMLField(null=True)
@@ -188,7 +189,7 @@
 #     data = models.NullBooleanField(primary_key=True)
 
 class PhonePKData(models.Model):
-    data = models.PhoneNumberField(primary_key=True)
+    data = PhoneNumberField(primary_key=True)
 
 class PositiveIntegerPKData(models.Model):
     data = models.PositiveIntegerField(primary_key=True)
@@ -209,7 +210,7 @@
 #    data = models.TimeField(primary_key=True)
 
 class USStatePKData(models.Model):
-    data = models.USStateField(primary_key=True)
+    data = USStateField(primary_key=True)
 
 # class XMLPKData(models.Model):
 #     data = models.XMLField(primary_key=True)


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to