1 | Index: django_src/django/core/formfields.py |
---|
2 | =================================================================== |
---|
3 | --- django_src/django/core/formfields.py (revision 569) |
---|
4 | +++ django_src/django/core/formfields.py (working copy) |
---|
5 | @@ -544,6 +544,15 @@ |
---|
6 | if not -32768 <= int(field_data) <= 32767: |
---|
7 | raise validators.CriticalValidationError, "Enter a whole number between -32,768 and 32,767." |
---|
8 | |
---|
9 | +class BigIntegerField(IntegerField): |
---|
10 | + def __init__(self, field_name, length=15, maxlength=20, is_required=False, validator_list=[]): |
---|
11 | + validator_list = [self.isBigInteger] + validator_list |
---|
12 | + IntegerField.__init__(self, field_name, length, maxlength, is_required, validator_list) |
---|
13 | + |
---|
14 | + def isBigInteger(self, field_data, all_data): |
---|
15 | + if not -9223372036854775808 <= int(field_data) <= 9223372036854775807: |
---|
16 | + raise validators.CriticalValidationError, "Enter a whole number between -9,223,372,036,854,775,808 and 9,223,372,036,854,775,807." |
---|
17 | + |
---|
18 | class PositiveIntegerField(IntegerField): |
---|
19 | def __init__(self, field_name, length=10, maxlength=None, is_required=False, validator_list=[]): |
---|
20 | validator_list = [self.isPositive] + validator_list |
---|
21 | @@ -562,6 +571,15 @@ |
---|
22 | if not 0 <= int(field_data) <= 32767: |
---|
23 | raise validators.CriticalValidationError, "Enter a whole number between 0 and 32,767." |
---|
24 | |
---|
25 | +class PositiveBigIntegerField(IntegerField): |
---|
26 | + def __init__(self, field_name, length=15, maxlength=20, is_required=False, validator_list=[]): |
---|
27 | + validator_list = [self.isPositiveBig] + validator_list |
---|
28 | + IntegerField.__init__(self, field_name, length, maxlength, is_required, validator_list) |
---|
29 | + |
---|
30 | + def isPositiveBig(self, field_data, all_data): |
---|
31 | + if not 0 <= int(field_data) <= 18446744073709551615: |
---|
32 | + raise validators.CriticalValidationError, "Enter a whole number between 0 and 18,446,744,073,709,551,615." |
---|
33 | + |
---|
34 | class FloatField(TextField): |
---|
35 | def __init__(self, field_name, max_digits, decimal_places, is_required=False, validator_list=[]): |
---|
36 | self.max_digits, self.decimal_places = max_digits, decimal_places |
---|
37 | Index: django_src/django/core/db/backends/postgresql.py |
---|
38 | =================================================================== |
---|
39 | --- django_src/django/core/db/backends/postgresql.py (revision 569) |
---|
40 | +++ django_src/django/core/db/backends/postgresql.py (working copy) |
---|
41 | @@ -142,6 +142,7 @@ |
---|
42 | # If a column type is set to None, it won't be included in the output. |
---|
43 | DATA_TYPES = { |
---|
44 | 'AutoField': 'serial', |
---|
45 | + 'BigIntegerField': 'bigint', |
---|
46 | 'BooleanField': 'boolean', |
---|
47 | 'CharField': 'varchar(%(maxlength)s)', |
---|
48 | 'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)', |
---|
49 | @@ -157,6 +158,7 @@ |
---|
50 | 'NullBooleanField': 'boolean', |
---|
51 | 'OneToOneField': 'integer', |
---|
52 | 'PhoneNumberField': 'varchar(20)', |
---|
53 | + 'PositiveBigIntegerField': 'bigint CHECK (%(name)s >= 0)', |
---|
54 | 'PositiveIntegerField': 'integer CHECK (%(name)s >= 0)', |
---|
55 | 'PositiveSmallIntegerField': 'smallint CHECK (%(name)s >= 0)', |
---|
56 | 'SlugField': 'varchar(50)', |
---|
57 | @@ -171,6 +173,7 @@ |
---|
58 | # Maps type codes to Django Field types. |
---|
59 | DATA_TYPES_REVERSE = { |
---|
60 | 16: 'BooleanField', |
---|
61 | + 20: 'BigIntegerField', |
---|
62 | 21: 'SmallIntegerField', |
---|
63 | 23: 'IntegerField', |
---|
64 | 25: 'TextField', |
---|
65 | Index: django_src/django/core/db/backends/sqlite3.py |
---|
66 | =================================================================== |
---|
67 | --- django_src/django/core/db/backends/sqlite3.py (revision 569) |
---|
68 | +++ django_src/django/core/db/backends/sqlite3.py (working copy) |
---|
69 | @@ -144,6 +144,7 @@ |
---|
70 | # schema inspection is more useful. |
---|
71 | DATA_TYPES = { |
---|
72 | 'AutoField': 'integer', |
---|
73 | + 'BigIntegerField': 'bigint', |
---|
74 | 'BooleanField': 'bool', |
---|
75 | 'CharField': 'varchar(%(maxlength)s)', |
---|
76 | 'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)', |
---|
77 | @@ -159,6 +160,7 @@ |
---|
78 | 'NullBooleanField': 'bool', |
---|
79 | 'OneToOneField': 'integer', |
---|
80 | 'PhoneNumberField': 'varchar(20)', |
---|
81 | + 'PositiveBigIntegerField': 'bigint unsigned', |
---|
82 | 'PositiveIntegerField': 'integer unsigned', |
---|
83 | 'PositiveSmallIntegerField': 'smallint unsigned', |
---|
84 | 'SlugField': 'varchar(50)', |
---|
85 | Index: django_src/django/core/db/backends/mysql.py |
---|
86 | =================================================================== |
---|
87 | --- django_src/django/core/db/backends/mysql.py (revision 569) |
---|
88 | +++ django_src/django/core/db/backends/mysql.py (working copy) |
---|
89 | @@ -107,6 +107,7 @@ |
---|
90 | # If a column type is set to None, it won't be included in the output. |
---|
91 | DATA_TYPES = { |
---|
92 | 'AutoField': 'mediumint(9) unsigned auto_increment', |
---|
93 | + 'BigIntegerField': 'bigint', |
---|
94 | 'BooleanField': 'bool', |
---|
95 | 'CharField': 'varchar(%(maxlength)s)', |
---|
96 | 'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)', |
---|
97 | @@ -122,6 +123,7 @@ |
---|
98 | 'NullBooleanField': 'bool', |
---|
99 | 'OneToOneField': 'integer', |
---|
100 | 'PhoneNumberField': 'varchar(20)', |
---|
101 | + 'PositiveBigIntegerField': 'bigint UNSIGNED', |
---|
102 | 'PositiveIntegerField': 'integer UNSIGNED', |
---|
103 | 'PositiveSmallIntegerField': 'smallint UNSIGNED', |
---|
104 | 'SlugField': 'varchar(50)', |
---|
105 | @@ -143,7 +145,7 @@ |
---|
106 | FIELD_TYPE.FLOAT: 'FloatField', |
---|
107 | FIELD_TYPE.INT24: 'IntegerField', |
---|
108 | FIELD_TYPE.LONG: 'IntegerField', |
---|
109 | - FIELD_TYPE.LONGLONG: 'IntegerField', |
---|
110 | + FIELD_TYPE.LONGLONG: 'BigIntegerField', |
---|
111 | FIELD_TYPE.SHORT: 'IntegerField', |
---|
112 | FIELD_TYPE.STRING: 'TextField', |
---|
113 | FIELD_TYPE.TIMESTAMP: 'DateTimeField', |
---|
114 | Index: django_src/django/core/meta/fields.py |
---|
115 | =================================================================== |
---|
116 | --- django_src/django/core/meta/fields.py (revision 569) |
---|
117 | +++ django_src/django/core/meta/fields.py (working copy) |
---|
118 | @@ -498,6 +498,14 @@ |
---|
119 | def get_manipulator_field_objs(self): |
---|
120 | return [formfields.SmallIntegerField] |
---|
121 | |
---|
122 | +class BigIntegerField(IntegerField): |
---|
123 | + def get_manipulator_field_objs(self): |
---|
124 | + return [formfields.BigIntegerField] |
---|
125 | + |
---|
126 | +class PositiveBigIntegerField(IntegerField): |
---|
127 | + def get_manipulator_field_objs(self): |
---|
128 | + return [formfields.PositiveBigIntegerField] |
---|
129 | + |
---|
130 | class TextField(Field): |
---|
131 | def get_manipulator_field_objs(self): |
---|
132 | return [formfields.LargeTextField] |
---|
133 | Index: django_src/django/views/admin/doc.py |
---|
134 | =================================================================== |
---|
135 | --- django_src/django/views/admin/doc.py (revision 569) |
---|
136 | +++ django_src/django/views/admin/doc.py (working copy) |
---|
137 | @@ -280,6 +280,7 @@ |
---|
138 | # If a column type is set to None, it won't be included in the output. |
---|
139 | DATA_TYPE_MAPPING = { |
---|
140 | 'AutoField' : 'Integer', |
---|
141 | + 'BigIntegerField' : 'Integer', |
---|
142 | 'BooleanField' : 'Boolean (Either True or False)', |
---|
143 | 'CharField' : 'String (up to %(maxlength)s)', |
---|
144 | 'CommaSeparatedIntegerField': 'Comma-separated integers', |
---|
145 | @@ -295,6 +296,7 @@ |
---|
146 | 'ManyToManyField' : '', |
---|
147 | 'NullBooleanField' : 'Boolean (Either True, False or None)', |
---|
148 | 'PhoneNumberField' : 'Phone number', |
---|
149 | + 'PositiveBigIntegerField' : 'Integer', |
---|
150 | 'PositiveIntegerField' : 'Integer', |
---|
151 | 'PositiveSmallIntegerField' : 'Integer', |
---|
152 | 'SlugField' : 'String (up to 50)', |
---|