Code

Ticket #8664: 8664-2.diff

File 8664-2.diff, 5.9 KB (added by mattmcc, 6 years ago)

Add db_type method, backends.*.creation references, fix test error

Line 
1Index: django/db/models/fields/__init__.py
2===================================================================
3--- django/db/models/fields/__init__.py (revision 8777)
4+++ django/db/models/fields/__init__.py (working copy)
5@@ -731,16 +731,6 @@
6         defaults.update(kwargs)
7         return super(NullBooleanField, self).formfield(**defaults)
8 
9-class PhoneNumberField(Field):
10-    def get_internal_type(self):
11-        return "PhoneNumberField"
12-
13-    def formfield(self, **kwargs):
14-        from django.contrib.localflavor.us.forms import USPhoneNumberField
15-        defaults = {'form_class': USPhoneNumberField}
16-        defaults.update(kwargs)
17-        return super(PhoneNumberField, self).formfield(**defaults)
18-
19 class PositiveIntegerField(IntegerField):
20     def get_internal_type(self):
21         return "PositiveIntegerField"
22Index: django/db/backends/postgresql/creation.py
23===================================================================
24--- django/db/backends/postgresql/creation.py   (revision 8777)
25+++ django/db/backends/postgresql/creation.py   (working copy)
26@@ -21,7 +21,6 @@
27         'IPAddressField':    'inet',
28         'NullBooleanField':  'boolean',
29         'OneToOneField':     'integer',
30-        'PhoneNumberField':  'varchar(20)',
31         'PositiveIntegerField': 'integer CHECK ("%(column)s" >= 0)',
32         'PositiveSmallIntegerField': 'smallint CHECK ("%(column)s" >= 0)',
33         'SlugField':         'varchar(%(max_length)s)',
34Index: django/db/backends/sqlite3/creation.py
35===================================================================
36--- django/db/backends/sqlite3/creation.py      (revision 8777)
37+++ django/db/backends/sqlite3/creation.py      (working copy)
38@@ -22,7 +22,6 @@
39         'IPAddressField':               'char(15)',
40         'NullBooleanField':             'bool',
41         'OneToOneField':                'integer',
42-        'PhoneNumberField':             'varchar(20)',
43         'PositiveIntegerField':         'integer unsigned',
44         'PositiveSmallIntegerField':    'smallint unsigned',
45         'SlugField':                    'varchar(%(max_length)s)',
46Index: django/db/backends/mysql/creation.py
47===================================================================
48--- django/db/backends/mysql/creation.py        (revision 8777)
49+++ django/db/backends/mysql/creation.py        (working copy)
50@@ -21,7 +21,6 @@
51         'IPAddressField':    'char(15)',
52         'NullBooleanField':  'bool',
53         'OneToOneField':     'integer',
54-        'PhoneNumberField':  'varchar(20)',
55         'PositiveIntegerField': 'integer UNSIGNED',
56         'PositiveSmallIntegerField': 'smallint UNSIGNED',
57         'SlugField':         'varchar(%(max_length)s)',
58Index: django/db/backends/oracle/creation.py
59===================================================================
60--- django/db/backends/oracle/creation.py       (revision 8777)
61+++ django/db/backends/oracle/creation.py       (working copy)
62@@ -30,7 +30,6 @@
63         'IPAddressField':               'VARCHAR2(15)',
64         'NullBooleanField':             'NUMBER(1) CHECK ((%(qn_column)s IN (0,1)) OR (%(qn_column)s IS NULL))',
65         'OneToOneField':                'NUMBER(11)',
66-        'PhoneNumberField':             'VARCHAR2(20)',
67         'PositiveIntegerField':         'NUMBER(11) CHECK (%(qn_column)s >= 0)',
68         'PositiveSmallIntegerField':    'NUMBER(11) CHECK (%(qn_column)s >= 0)',
69         'SlugField':                    'NVARCHAR2(50)',
70Index: django/contrib/localflavor/us/models.py
71===================================================================
72--- django/contrib/localflavor/us/models.py     (revision 0)
73+++ django/contrib/localflavor/us/models.py     (revision 0)
74@@ -0,0 +1,18 @@
75+from django.db.models.fields import Field
76+
77+class PhoneNumberField(Field):
78+    def db_type(self):
79+        from django.conf import settings
80+        if settings.DATABASE_ENGINE == 'oracle':
81+            return 'VARCHAR2(20)'
82+        else:
83+            return 'varchar(20)'
84+
85+    def get_internal_type(self):
86+        return "PhoneNumberField"
87+
88+    def formfield(self, **kwargs):
89+        from django.contrib.localflavor.us.forms import USPhoneNumberField
90+        defaults = {'form_class': USPhoneNumberField}
91+        defaults.update(kwargs)
92+        return super(PhoneNumberField, self).formfield(**defaults)
93Index: tests/modeltests/model_forms/models.py
94===================================================================
95--- tests/modeltests/model_forms/models.py      (revision 8777)
96+++ tests/modeltests/model_forms/models.py      (working copy)
97@@ -82,8 +82,9 @@
98     def __unicode__(self):
99         return "%s is %s" % (self.writer, self.age)
100 
101+from django.contrib.localflavor.us.models import PhoneNumberField
102 class PhoneNumber(models.Model):
103-    phone = models.PhoneNumberField()
104+    phone = PhoneNumberField()
105     description = models.CharField(max_length=20)
106 
107     def __unicode__(self):
108Index: tests/regressiontests/serializers_regress/models.py
109===================================================================
110--- tests/regressiontests/serializers_regress/models.py (revision 8777)
111+++ tests/regressiontests/serializers_regress/models.py (working copy)
112@@ -8,6 +8,7 @@
113 from django.db import models
114 from django.contrib.contenttypes import generic
115 from django.contrib.contenttypes.models import ContentType
116+from django.contrib.localflavor.us.models import PhoneNumberField
117 
118 # The following classes are for testing basic data
119 # marshalling, including NULL values.
120@@ -52,7 +53,7 @@
121     data = models.NullBooleanField(null=True)
122 
123 class PhoneData(models.Model):
124-    data = models.PhoneNumberField(null=True)
125+    data = PhoneNumberField(null=True)
126 
127 class PositiveIntegerData(models.Model):
128     data = models.PositiveIntegerField(null=True)
129@@ -188,7 +189,7 @@
130 #     data = models.NullBooleanField(primary_key=True)
131 
132 class PhonePKData(models.Model):
133-    data = models.PhoneNumberField(primary_key=True)
134+    data = PhoneNumberField(primary_key=True)
135 
136 class PositiveIntegerPKData(models.Model):
137     data = models.PositiveIntegerField(primary_key=True)