Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

boulder-oracle-sprint: Merged to [5306]

  • Loading branch information...
commit 97ccb9304ef578057640645013f5fb7eeafa246f 1 parent e7cf3ed
Boulder Sprinters authored
Showing with 8,501 additions and 2,627 deletions.
  1. +3 −2 AUTHORS
  2. BIN  django/conf/locale/ca/LC_MESSAGES/django.mo
  3. +2,098 −1,483 django/conf/locale/ca/LC_MESSAGES/django.po
  4. BIN  django/conf/locale/ca/LC_MESSAGES/djangojs.mo
  5. +8 −9 django/conf/locale/ca/LC_MESSAGES/djangojs.po
  6. BIN  django/conf/locale/es_AR/LC_MESSAGES/django.mo
  7. +630 −122 django/conf/locale/es_AR/LC_MESSAGES/django.po
  8. BIN  django/conf/locale/ru/LC_MESSAGES/django.mo
  9. +2,005 −886 django/conf/locale/ru/LC_MESSAGES/django.po
  10. BIN  django/conf/locale/te/LC_MESSAGES/django.mo
  11. +27 −24 django/conf/locale/te/LC_MESSAGES/django.po
  12. +2 −2 django/contrib/admin/templatetags/admin_list.py
  13. +2 −1  django/contrib/admin/views/doc.py
  14. +1 −1  django/contrib/formtools/preview.py
  15. 0  {tests/regressiontests → django/contrib}/markup/models.py
  16. 0  {tests/regressiontests → django/contrib}/markup/tests.py
  17. +3 −0  django/contrib/sessions/middleware.py
  18. +19 −0 django/contrib/sessions/tests.py
  19. +2 −2 django/contrib/sitemaps/__init__.py
  20. 0  tests/regressiontests/markup/__init__.py → django/contrib/webdesign/models.py
  21. +17 −0 django/contrib/webdesign/tests.py
  22. +4 −4 django/core/management.py
  23. +38 −4 django/core/serializers/json.py
  24. +18 −10 django/core/validators.py
  25. +2 −1  django/db/backends/ado_mssql/creation.py
  26. +2 −0  django/db/backends/mysql/base.py
  27. +2 −1  django/db/backends/mysql/creation.py
  28. +1 −1  django/db/backends/mysql/introspection.py
  29. +2 −0  django/db/backends/mysql_old/base.py
  30. +2 −1  django/db/backends/mysql_old/creation.py
  31. +1 −1  django/db/backends/mysql_old/introspection.py
  32. +2 −1  django/db/backends/oracle/creation.py
  33. +1 −1  django/db/backends/oracle/introspection.py
  34. +1 −0  django/db/backends/postgresql/base.py
  35. +2 −1  django/db/backends/postgresql/creation.py
  36. +2 −1  django/db/backends/postgresql/introspection.py
  37. +2 −1  django/db/backends/postgresql_psycopg2/introspection.py
  38. +7 −0 django/db/backends/sqlite3/base.py
  39. +2 −1  django/db/backends/sqlite3/creation.py
  40. +15 −0 django/db/backends/util.py
  41. +69 −4 django/db/models/fields/__init__.py
  42. +2 −2 django/http/__init__.py
  43. +67 −1 django/newforms/fields.py
  44. +8 −3 django/newforms/util.py
  45. +25 −5 django/oldforms/__init__.py
  46. +3,079 −0 django/utils/_decimal.py
  47. +4 −3 docs/forms.txt
  48. +2 −2 docs/install.txt
  49. +30 −22 docs/model-api.txt
  50. +103 −1 docs/newforms.txt
  51. +1 −1  docs/settings.txt
  52. +1 −1  docs/tutorial02.txt
  53. +5 −5 tests/modeltests/invalid_models/models.py
  54. +140 −0 tests/regressiontests/forms/tests.py
  55. +3 −0  tests/regressiontests/httpwrappers/tests.py
  56. +11 −5 tests/regressiontests/serializers_regress/models.py
  57. +18 −7 tests/regressiontests/serializers_regress/tests.py
  58. +10 −4 tests/runtests.py
View
5 AUTHORS
@@ -41,7 +41,6 @@ And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS --
people who have submitted patches, reported bugs, added translations, helped
answer newbie questions, and generally made Django that much better:
- adurdin@gmail.com
alang@bright-green.com
Marty Alchin <gulopine@gamemusic.org>
Daniel Alves Barbosa de Oliveira Vaz <danielvaz@gmail.com>
@@ -90,6 +89,7 @@ answer newbie questions, and generally made Django that much better:
dne@mayonnaise.net
Maximillian Dornseif <md@hudora.de>
Jeremy Dunck <http://dunck.us/>
+ Andrew Durdin <adurdin@gmail.com>
Andy Dustman <farcepest@gmail.com>
Clint Ecker
enlight
@@ -190,7 +190,7 @@ answer newbie questions, and generally made Django that much better:
polpak@yahoo.com
J. Rademaker
Michael Radziej <mir@noris.de>
- ramiro
+ Ramiro Morales <rm0@gmx.net>
Massimiliano Ravelli <massimiliano.ravelli@gmail.com>
Brian Ray <http://brianray.chipy.org/>
remco@diji.biz
@@ -209,6 +209,7 @@ answer newbie questions, and generally made Django that much better:
sopel
Wiliam Alves de Souza <wiliamsouza83@gmail.com>
Georgi Stanojevski <glisha@gmail.com>
+ Vasiliy Stavenko <stavenko@gmail.com>
Thomas Steinacher <http://www.eggdrop.ch/>
nowell strite
Radek Švarz <http://www.svarz.cz/translate/>
View
BIN  django/conf/locale/ca/LC_MESSAGES/django.mo
Binary file not shown
View
3,581 django/conf/locale/ca/LC_MESSAGES/django.po
2,098 additions, 1,483 deletions not shown
View
BIN  django/conf/locale/ca/LC_MESSAGES/djangojs.mo
Binary file not shown
View
17 django/conf/locale/ca/LC_MESSAGES/djangojs.po
@@ -3,20 +3,19 @@
# Copyright (C)
# This file is distributed under the same license as the PACKAGE package.
#
-# Jorge Gajon <gajon@gajon.org>, 2005.
-# Marc Fargas <marc@fargas.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: djangojs\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-02-15 11:05+1100\n"
-"PO-Revision-Date: 2007-01-19 10:30+0100\n"
+"POT-Creation-Date: 2007-05-20 18:25+0200\n"
+"PO-Revision-Date: 2007-05-20 18:24+0200\n"
"Last-Translator: Marc Fargas <marc@fargas.com>\n"
"Language-Team: <es@li.org>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
+"X-Generator: VIM 7.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: contrib/admin/media/js/SelectFilter2.js:33
#, perl-format
@@ -54,7 +53,7 @@ msgid ""
"January February March April May June July August September October November "
"December"
msgstr ""
-"Febrer Març Abril Maig Juny Juliol Agost Setembre Octubre Novembre Desembre"
+"Febrer Març Abril Maig Juny Juliol Agost Setembre Octubre Novembre Desembre"
#: contrib/admin/media/js/dateparse.js:33
msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday"
@@ -92,7 +91,7 @@ msgstr "Migdia"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:88
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:183
msgid "Cancel"
-msgstr "Cancel·lar"
+msgstr "Cancel·lar"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:128
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:177
@@ -109,7 +108,7 @@ msgstr "Ahir"
#: contrib/admin/media/js/admin/DateTimeShortcuts.js:179
msgid "Tomorrow"
-msgstr "Demà"
+msgstr "Demà"
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:34
#: contrib/admin/media/js/admin/CollapsedFieldsets.js:72
View
BIN  django/conf/locale/es_AR/LC_MESSAGES/django.mo
Binary file not shown
View
752 django/conf/locale/es_AR/LC_MESSAGES/django.po
@@ -1,14 +1,13 @@
-# Translation of django.po to Argentinean spanish, based on Spanish
-# translation work by Ricardo Javier Cárdenes Medina.
-# This file is distributed under the same license as the Django package.
-# Copyright (C) 2006,2007 Ramiro Morales <rm0@gmx.net>
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR
#
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-03-24 11:16-0300\n"
-"PO-Revision-Date: 2007-03-24 11:54-0300\n"
+"POT-Creation-Date: 2007-05-19 13:22-0300\n"
+"PO-Revision-Date: 2007-05-19 13:33-0300\n"
"Last-Translator: Ramiro Morales <rm0@gmx.net>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
@@ -16,93 +15,93 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: newforms/fields.py:78 newforms/fields.py:374 newforms/fields.py:450
-#: newforms/fields.py:461 newforms/models.py:177
+#: newforms/fields.py:82 newforms/fields.py:378 newforms/fields.py:454
+#: newforms/fields.py:465 newforms/models.py:186
#: db/models/fields/__init__.py:117 db/models/fields/__init__.py:274
-#: db/models/fields/__init__.py:610 db/models/fields/__init__.py:621
+#: db/models/fields/__init__.py:612 db/models/fields/__init__.py:623
#: oldforms/__init__.py:357
msgid "This field is required."
msgstr "Este campo es obligatorio."
-#: newforms/fields.py:101 newforms/fields.py:254
+#: newforms/fields.py:105 newforms/fields.py:258
#, python-format
msgid "Ensure this value has at most %d characters."
msgstr "Asegúrese de que este valor tenga como máximo %d caracteres."
-#: newforms/fields.py:103 newforms/fields.py:256
+#: newforms/fields.py:107 newforms/fields.py:260
#, python-format
msgid "Ensure this value has at least %d characters."
msgstr "Asegúrese de que este valor tenga al menos %d caracteres."
-#: newforms/fields.py:126 core/validators.py:120
+#: newforms/fields.py:130 core/validators.py:120
msgid "Enter a whole number."
msgstr "Introduzca un número entero."
-#: newforms/fields.py:128
+#: newforms/fields.py:132
#, python-format
msgid "Ensure this value is less than or equal to %s."
msgstr "Asegúrese de que este valor sea menor o igual a %s."
-#: newforms/fields.py:130
+#: newforms/fields.py:134
#, python-format
msgid "Ensure this value is greater than or equal to %s."
msgstr "Asegúrese de que este valor sea mayor o igual a %s."
-#: newforms/fields.py:163
+#: newforms/fields.py:167
msgid "Enter a valid date."
-msgstr "Ingrese una fecha válida."
+msgstr "Introduzca una fecha válida."
-#: newforms/fields.py:190
+#: newforms/fields.py:194
msgid "Enter a valid time."
msgstr "Introduzca una hora válida."
-#: newforms/fields.py:226
+#: newforms/fields.py:230
msgid "Enter a valid date/time."
msgstr "Introduzca una fecha/hora válida."
-#: newforms/fields.py:240
+#: newforms/fields.py:244
msgid "Enter a valid value."
msgstr "Introduzca un valor válido."
-#: newforms/fields.py:269 core/validators.py:162
+#: newforms/fields.py:273 core/validators.py:162
msgid "Enter a valid e-mail address."
msgstr "Introduzca una dirección de correo electrónico válida"
-#: newforms/fields.py:287 newforms/fields.py:309
+#: newforms/fields.py:291 newforms/fields.py:313
msgid "Enter a valid URL."
msgstr "Introduzca una URL válida."
-#: newforms/fields.py:311
+#: newforms/fields.py:315
msgid "This URL appears to be a broken link."
msgstr "La URL parece ser un enlace roto."
-#: newforms/fields.py:360 newforms/models.py:164
+#: newforms/fields.py:366 newforms/models.py:173
msgid "Select a valid choice. That choice is not one of the available choices."
msgstr ""
"Seleccione una opción válida. Esa opción no es una de las opciones "
"disponibles."
-#: newforms/fields.py:378 newforms/fields.py:454 newforms/models.py:181
+#: newforms/fields.py:382 newforms/fields.py:458 newforms/models.py:190
msgid "Enter a list of values."
msgstr "Introduzca una lista de valores."
-#: newforms/fields.py:387 newforms/models.py:187
+#: newforms/fields.py:391 newforms/models.py:196
#, python-format
msgid "Select a valid choice. %s is not one of the available choices."
msgstr ""
"Seleccione una opción válida. %s no es una de las opciones disponibles."
-#: newforms/widgets.py:170 contrib/admin/filterspecs.py:150
+#: newforms/widgets.py:182 contrib/admin/filterspecs.py:150
#: oldforms/__init__.py:577
msgid "Unknown"
msgstr "Desconocido"
-#: newforms/widgets.py:170 contrib/admin/filterspecs.py:143
+#: newforms/widgets.py:182 contrib/admin/filterspecs.py:143
#: oldforms/__init__.py:577
msgid "Yes"
msgstr "Sí"
-#: newforms/widgets.py:170 contrib/admin/filterspecs.py:143
+#: newforms/widgets.py:182 contrib/admin/filterspecs.py:143
#: oldforms/__init__.py:577
msgid "No"
msgstr "No"
@@ -167,6 +166,21 @@ msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minutos"
+#: utils/timesince.py:40
+#, python-format
+msgid "%d milliseconds"
+msgstr "%d milisegundos"
+
+#: utils/timesince.py:41
+#, python-format
+msgid "%(number)d %(type)s"
+msgstr ""
+
+#: utils/timesince.py:47
+#, python-format
+msgid ", %(number)d %(type)s"
+msgstr ""
+
#: utils/dates.py:6
msgid "Monday"
msgstr "Lunes"
@@ -319,23 +333,23 @@ msgstr "Nov."
msgid "Dec."
msgstr "Dic."
-#: utils/translation/trans_real.py:362
+#: utils/translation/trans_real.py:358
msgid "DATE_FORMAT"
msgstr "j N Y"
-#: utils/translation/trans_real.py:363
+#: utils/translation/trans_real.py:359
msgid "DATETIME_FORMAT"
msgstr "j N Y P"
-#: utils/translation/trans_real.py:364
+#: utils/translation/trans_real.py:360
msgid "TIME_FORMAT"
msgstr "P"
-#: utils/translation/trans_real.py:380
+#: utils/translation/trans_real.py:376
msgid "YEAR_MONTH_FORMAT"
msgstr "F Y"
-#: utils/translation/trans_real.py:381
+#: utils/translation/trans_real.py:377
msgid "MONTH_DAY_FORMAT"
msgstr "j \\de F"
@@ -371,35 +385,35 @@ msgstr "redirecci
msgid "redirects"
msgstr "redirecciones"
-#: contrib/auth/models.py:38 contrib/auth/models.py:57
+#: contrib/auth/models.py:44 contrib/auth/models.py:64
msgid "name"
msgstr "nombre"
-#: contrib/auth/models.py:40
+#: contrib/auth/models.py:46
msgid "codename"
msgstr "nombre en código"
-#: contrib/auth/models.py:42
+#: contrib/auth/models.py:49
msgid "permission"
msgstr "permiso"
-#: contrib/auth/models.py:43 contrib/auth/models.py:58
+#: contrib/auth/models.py:50 contrib/auth/models.py:65
msgid "permissions"
msgstr "permisos"
-#: contrib/auth/models.py:60
+#: contrib/auth/models.py:68
msgid "group"
msgstr "grupo"
-#: contrib/auth/models.py:61 contrib/auth/models.py:100
+#: contrib/auth/models.py:69 contrib/auth/models.py:109
msgid "groups"
msgstr "grupos"
-#: contrib/auth/models.py:90
+#: contrib/auth/models.py:99
msgid "username"
msgstr "nombre de usuario"
-#: contrib/auth/models.py:90
+#: contrib/auth/models.py:99
msgid ""
"Required. 30 characters or fewer. Alphanumeric characters only (letters, "
"digits and underscores)."
@@ -407,23 +421,23 @@ msgstr ""
"Requerido. Longitud máxima 30 caracteres alfanuméricos (letras, dígitos y "
"guiones bajos)."
-#: contrib/auth/models.py:91
+#: contrib/auth/models.py:100
msgid "first name"
msgstr "nombre"
-#: contrib/auth/models.py:92
+#: contrib/auth/models.py:101
msgid "last name"
msgstr "apellido"
-#: contrib/auth/models.py:93
+#: contrib/auth/models.py:102
msgid "e-mail address"
msgstr "dirección de correo"
-#: contrib/auth/models.py:94
+#: contrib/auth/models.py:103
msgid "password"
msgstr "contraseña"
-#: contrib/auth/models.py:94
+#: contrib/auth/models.py:103
msgid ""
"Use '[algo]$[salt]$[hexdigest]' or use the <a href=\"password/\">change "
"password form</a>."
@@ -431,19 +445,19 @@ msgstr ""
"Use '[algo]$[salt]$[hexdigest]' o use el <a href=\"password/\">formulario de "
"cambio de contraseña</a>."
-#: contrib/auth/models.py:95
+#: contrib/auth/models.py:104
msgid "staff status"
msgstr "es staff"
-#: contrib/auth/models.py:95
+#: contrib/auth/models.py:104
msgid "Designates whether the user can log into this admin site."
msgstr "Indica si el usuario puede ingresar a este sitio de administración."
-#: contrib/auth/models.py:96
+#: contrib/auth/models.py:105
msgid "active"
msgstr "activo"
-#: contrib/auth/models.py:96
+#: contrib/auth/models.py:105
msgid ""
"Designates whether this user can log into the Django admin. Unselect this "
"instead of deleting accounts."
@@ -451,11 +465,11 @@ msgstr ""
"Indica si el usuario puede ingresar al sitio de administración Django."
"Desactive este campo en lugar de eliminar usuarios."
-#: contrib/auth/models.py:97
+#: contrib/auth/models.py:106
msgid "superuser status"
msgstr "es superusuario"
-#: contrib/auth/models.py:97
+#: contrib/auth/models.py:106
msgid ""
"Designates that this user has all permissions without explicitly assigning "
"them."
@@ -463,15 +477,15 @@ msgstr ""
"Indica que este usuario posee todos los permisos, sin asignarle los mismos "
"explícitamente."
-#: contrib/auth/models.py:98
+#: contrib/auth/models.py:107
msgid "last login"
msgstr "último ingreso"
-#: contrib/auth/models.py:99
+#: contrib/auth/models.py:108
msgid "date joined"
msgstr "fecha de creación"
-#: contrib/auth/models.py:101
+#: contrib/auth/models.py:110
msgid ""
"In addition to the permissions manually assigned, this user will also get "
"all permissions granted to each group he/she is in."
@@ -479,38 +493,42 @@ msgstr ""
"Además de los permisos asignados manualmente, este usuario también poseerá "
"todos los permisos de los grupos a los que pertenezca."
-#: contrib/auth/models.py:102
+#: contrib/auth/models.py:111
msgid "user permissions"
msgstr "permisos de usuario"
-#: contrib/auth/models.py:105
+#: contrib/auth/models.py:115
msgid "user"
msgstr "usuario"
-#: contrib/auth/models.py:106
+#: contrib/auth/models.py:116
msgid "users"
msgstr "usuarios"
-#: contrib/auth/models.py:111
+#: contrib/auth/models.py:122
msgid "Personal info"
msgstr "Información personal"
-#: contrib/auth/models.py:112
+#: contrib/auth/models.py:123
msgid "Permissions"
msgstr "Permisos"
-#: contrib/auth/models.py:113
+#: contrib/auth/models.py:124
msgid "Important dates"
msgstr "Fechas importantes"
-#: contrib/auth/models.py:114
+#: contrib/auth/models.py:125
msgid "Groups"
msgstr "Grupos"
-#: contrib/auth/models.py:258
+#: contrib/auth/models.py:269
msgid "message"
msgstr "mensaje"
+#: contrib/auth/models.py:282
+msgid "AnonymousUser"
+msgstr "UsuarioAnonimo"
+
#: contrib/auth/forms.py:17 contrib/auth/forms.py:138
msgid "The two password fields didn't match."
msgstr "Los dos campos de contraseñas no coinciden entre si."
@@ -557,7 +575,7 @@ msgstr ""
"La antigua contraseña ingresada es incorrecta. Por favor ingrésela "
"nuevamente."
-#: contrib/auth/views.py:39
+#: contrib/auth/views.py:40
msgid "Logged out"
msgstr "Sesión cerrada"
@@ -652,8 +670,8 @@ msgstr "Los nombres de usuario no pueden contener el car
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
-"Su dirección de correo no es su nombre de usuario. Intente nuevamente "
-"usando '%s'."
+"Su dirección de correo no es su nombre de usuario. Intente nuevamente usando "
+"'%s'."
#: contrib/admin/views/auth.py:19 contrib/admin/views/main.py:257
#, python-format
@@ -676,7 +694,7 @@ msgstr "Cambio de contrase
#: contrib/admin/views/auth.py:64
#, python-format
msgid "Change password: %s"
-msgstr "Cambiar contraseña: %S"
+msgstr "Cambiar contraseña: %s"
#: contrib/admin/views/doc.py:46 contrib/admin/views/doc.py:48
#: contrib/admin/views/doc.py:50
@@ -855,14 +873,14 @@ msgstr "No ha modificado ning
#: contrib/admin/views/main.py:345
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Se modificó con éxito %(name)s \"%(obj)s."
+msgstr "Se modificó con éxito %(name)s \"%(obj)s\"."
#: contrib/admin/views/main.py:353
#, python-format
msgid ""
"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
msgstr ""
-"Se agregó con éxito %(name)s \"%(obj)s. Puede modificarlo nuevamente abajo."
+"Se agregó con éxito %(name)s \"%(obj)s\". Puede modificarlo nuevamente abajo."
#: contrib/admin/views/main.py:391
#, python-format
@@ -1189,8 +1207,8 @@ msgid ""
"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
"Ha ocurrido un error. Se ha informado a los administradores del sitio "
-"mediante correo electrónico y debería ser solucionado en breve. Gracias "
-"por su paciencia."
+"mediante correo electrónico y debería ser solucionado en breve. Gracias por "
+"su paciencia."
#: contrib/admin/templates/admin/delete_confirmation.html:14
#, python-format
@@ -1230,8 +1248,8 @@ msgstr ""
#, python-format
msgid "Enter a new password for the user <strong>%(username)s</strong>."
msgstr ""
-"Introduzca una nueva contraseña para el usuario <strong>%(username)s"
-"</strong>."
+"Introduzca una nueva contraseña para el usuario <strong>%(username)s</"
+"strong>."
#: contrib/admin/templates/admin/auth/user/change_password.html:34
#: contrib/admin/templates/admin/auth/user/add_form.html:18
@@ -1542,16 +1560,476 @@ msgstr "p
msgid "flat pages"
msgstr "páginas estáticas"
-#: contrib/localflavor/usa/forms.py:17
+#: contrib/localflavor/no/forms.py:15 contrib/localflavor/ch/forms.py:18
+msgid "Enter a zip code in the format XXXX."
+msgstr "Introduzca un zip code en formato XXX."
+
+#: contrib/localflavor/no/forms.py:36
+msgid "Enter a valid Norwegian social security number."
+msgstr "Introduzca un número de seguridad social Noruego válido."
+
+#: contrib/localflavor/us/forms.py:18
msgid "Enter a zip code in the format XXXXX or XXXXX-XXXX."
msgstr "Introduzca un zip code en el formato XXXXX o XXXXX-XXXX."
+#: contrib/localflavor/us/forms.py:51
+msgid "Enter a valid U.S. Social Security number in XXX-XX-XXXX format."
+msgstr "Introduzca un Número de Seguridad Social en formato XXX-XX-XXXX."
+
+#: contrib/localflavor/jp/jp_prefectures.py:4
+msgid "Hokkaido"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:5
+msgid "Aomori"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:6
+msgid "Iwate"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:7
+msgid "Miyagi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:8
+msgid "Akita"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:9
+msgid "Yamagata"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:10
+msgid "Fukushima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:11
+msgid "Ibaraki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:12
+msgid "Tochigi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:13
+msgid "Gunma"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:14
+msgid "Saitama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:15
+msgid "Chiba"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:16
+msgid "Tokyo"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:17
+msgid "Kanagawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:18
+msgid "Yamanashi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:19
+msgid "Nagano"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:20
+msgid "Niigata"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:21
+msgid "Toyama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:22
+msgid "Ishikawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:23
+msgid "Fukui"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:24
+msgid "Gifu"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:25
+msgid "Shizuoka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:26
+msgid "Aichi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:27
+msgid "Mie"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:28
+msgid "Shiga"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:29
+msgid "Kyoto"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:30
+msgid "Osaka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:31
+msgid "Hyogo"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:32
+msgid "Nara"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:33
+msgid "Wakayama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:34
+msgid "Tottori"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:35
+msgid "Shimane"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:36
+msgid "Okayama"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:37
+msgid "Hiroshima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:38
+msgid "Yamaguchi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:39
+msgid "Tokushima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:40
+msgid "Kagawa"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:41
+msgid "Ehime"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:42
+msgid "Kochi"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:43
+msgid "Fukuoka"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:44
+msgid "Saga"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:45
+msgid "Nagasaki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:46
+msgid "Kumamoto"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:47
+msgid "Oita"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:48
+msgid "Miyazaki"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:49
+msgid "Kagoshima"
+msgstr ""
+
+#: contrib/localflavor/jp/jp_prefectures.py:50
+msgid "Okinawa"
+msgstr ""
+
+#: contrib/localflavor/jp/forms.py:21
+msgid "Enter a postal code in the format XXXXXXX or XXX-XXXX."
+msgstr "Introduzca un código postal en formato XXXXXX o XXX-XXXX."
+
+#: contrib/localflavor/ch/forms.py:90
+msgid ""
+"Enter a valid Swiss identity or passport card number in X1234567<0 or "
+"1234567890 format."
+msgstr ""
+"Introduzca un número válido de tarjeta de identidad o pasaporte Suizos en "
+"formato X1234567<0 o 1234567890."
+
+#: contrib/localflavor/ch/ch_states.py:5
+msgid "Aargau"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:6
+msgid "Appenzell Innerrhoden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:7
+msgid "Appenzell Ausserrhoden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:8
+msgid "Basel-Stadt"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:9
+msgid "Basel-Land"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:10
+msgid "Berne"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:11
+msgid "Fribourg"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:12
+msgid "Geneva"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:13
+msgid "Glarus"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:14
+msgid "Graubuenden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:15
+msgid "Jura"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:16
+msgid "Lucerne"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:17
+msgid "Neuchatel"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:18
+msgid "Nidwalden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:19
+msgid "Obwalden"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:20
+msgid "Schaffhausen"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:21
+msgid "Schwyz"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:22
+msgid "Solothurn"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:23
+msgid "St. Gallen"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:24
+msgid "Thurgau"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:25
+msgid "Ticino"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:26
+msgid "Uri"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:27
+msgid "Valais"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:28
+msgid "Vaud"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:29
+msgid "Zug"
+msgstr ""
+
+#: contrib/localflavor/ch/ch_states.py:30
+msgid "Zurich"
+msgstr ""
+
+#: contrib/localflavor/fi/forms.py:14 contrib/localflavor/de/forms.py:16
+#: contrib/localflavor/fr/forms.py:17
+msgid "Enter a zip code in the format XXXXX."
+msgstr "Introduzca un zip code en formato XXXXX."
+
+#: contrib/localflavor/fi/forms.py:40 contrib/localflavor/fi/forms.py:45
+msgid "Enter a valid Finnish social security number."
+msgstr "Introduzca un número de seguridad social finlandés válido."
+
+#: contrib/localflavor/au/forms.py:18
+msgid "Enter a 4 digit post code."
+msgstr "Introduzca un post code de 4 dígitos."
+
+#: contrib/localflavor/is_/forms.py:16
+msgid ""
+"Enter a valid Icelandic identification number. The format is XXXXXX-XXXX."
+msgstr ""
+"Introduzca un número de identificación islandés válido. El formato es XXXXXX-"
+"XXXX."
+
+#: contrib/localflavor/is_/forms.py:30
+msgid "The Icelandic identification number is not valid."
+msgstr "El número de identificación islandés no es válido."
+
#: contrib/localflavor/uk/forms.py:18
msgid "Enter a postcode. A space is required between the two postcode parts."
msgstr ""
"Introduzca un postcode. Se requiere un espacio entre las dos secciones del "
"mismo."
+#: contrib/localflavor/de/de_states.py:5
+msgid "Baden-Wuerttemberg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:6
+msgid "Bavaria"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:7
+msgid "Berlin"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:8
+msgid "Brandenburg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:9
+msgid "Bremen"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:10
+msgid "Hamburg"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:11
+msgid "Hessen"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:12
+msgid "Mecklenburg-Western Pomerania"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:13
+msgid "Lower Saxony"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:14
+msgid "North Rhine-Westphalia"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:15
+msgid "Rhineland-Palatinate"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:16
+msgid "Saarland"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:17
+msgid "Saxony"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:18
+msgid "Saxony-Anhalt"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:19
+msgid "Schleswig-Holstein"
+msgstr ""
+
+#: contrib/localflavor/de/de_states.py:20
+msgid "Thuringia"
+msgstr ""
+
+#: contrib/localflavor/de/forms.py:60
+msgid ""
+"Enter a valid German identity card number in XXXXXXXXXXX-XXXXXXX-XXXXXXX-X "
+"format."
+msgstr ""
+"Introduzca un número de tarjeta de identidad alemán válido en formato "
+"XXXXXXXXXXX-XXXXXXX-XXXXXXX-X."
+
+#: contrib/localflavor/br/forms.py:18
+msgid "Enter a zip code in the format XXXXX-XXX."
+msgstr "Introduzca un zip code en formato XXXXX-XXX."
+
+#: contrib/localflavor/br/forms.py:30
+msgid "Phone numbers must be in XX-XXXX-XXXX format."
+msgstr "Los números telefónicos deben respetar el formato XX-XXXX-XXXX."
+
+#: contrib/localflavor/br/forms.py:72
+msgid "This field requires only numbers."
+msgstr "Este campo permite sólo valores numéricos."
+
+#: contrib/localflavor/br/forms.py:74
+msgid "This field requires at most 11 digits or 14 characters."
+msgstr "Este campo requiere como máximo 11 dígitos o 14 caracteres."
+
+#: contrib/localflavor/br/forms.py:84
+msgid "Invalid CPF number."
+msgstr "Número CPF inválido."
+
+#: contrib/localflavor/br/forms.py:106
+msgid "This field requires at least 14 digits"
+msgstr "Este campo requiere al menos 14 dígitos."
+
+#: contrib/localflavor/br/forms.py:116
+msgid "Invalid CNPJ number."
+msgstr "Número CNPJ inválido."
+
+#: contrib/localflavor/cl/forms.py:21
+msgid "Enter valid a Chilean RUT. The format is XX.XXX.XXX-X."
+msgstr "Introduzca un RUT chileno válido. EL formato es XX.XXX.XXX-X."
+
+#: contrib/localflavor/cl/forms.py:26
+msgid "Enter valid a Chilean RUT"
+msgstr "Introduzca un RUT chileno válido."
+
+#: contrib/localflavor/it/forms.py:16
+msgid "Enter a valid zip code."
+msgstr "Introduzca un zip code válido."
+
+#: contrib/localflavor/it/forms.py:41
+msgid "Enter a valid Social Security number."
+msgstr "Introduzca un número de Seguridad Social válido."
+
+#: contrib/localflavor/it/forms.py:68
+msgid "Enter a valid VAT number."
+msgstr "Introduzca un número VAT válido."
+
#: contrib/comments/models.py:67 contrib/comments/models.py:166
msgid "object ID"
msgstr "ID de objeto"
@@ -1931,31 +2409,31 @@ msgstr "Ya existe un(a) %(object)s con este/a %(type)s para %(field)s."
msgid "%(optname)s with this %(fieldname)s already exists."
msgstr "Ya existe %(optname)s con este %(fieldname)s."
-#: db/models/fields/__init__.py:367
+#: db/models/fields/__init__.py:369
msgid "This value must be an integer."
msgstr "Este valor debe ser un número entero."
-#: db/models/fields/__init__.py:402
+#: db/models/fields/__init__.py:404
msgid "This value must be either True or False."
msgstr "Este valor debe ser True o False."
-#: db/models/fields/__init__.py:423
+#: db/models/fields/__init__.py:425
msgid "This field cannot be null."
msgstr "Este campo no puede ser nulo."
-#: db/models/fields/__init__.py:457 core/validators.py:148
+#: db/models/fields/__init__.py:459 core/validators.py:148
msgid "Enter a valid date in YYYY-MM-DD format."
msgstr "Introduzca una fecha válida en formato AAAA-MM-DD."
-#: db/models/fields/__init__.py:526 core/validators.py:157
+#: db/models/fields/__init__.py:528 core/validators.py:157
msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format."
msgstr "Introduzca una fecha/hora válida en formato AAAA-MM-DD HH:MM."
-#: db/models/fields/__init__.py:630
+#: db/models/fields/__init__.py:632
msgid "Enter a valid filename."
msgstr "Introduzca un nombre de archivo válido."
-#: db/models/fields/__init__.py:751
+#: db/models/fields/__init__.py:753
msgid "This value must be either None, True or False."
msgstr "Este valor debe ser None, True o False."
@@ -2027,7 +2505,7 @@ msgstr "Introduzca un n
#: views/generic/create_update.py:43
#, python-format
msgid "The %(verbose_name)s was created successfully."
-msgstr "Se creó con éxito %(verbose_name)."
+msgstr "Se creó con éxito %(verbose_name)s."
#: views/generic/create_update.py:117
#, python-format
@@ -2048,150 +2526,158 @@ msgid "Bengali"
msgstr "Bengalí"
#: conf/global_settings.py:41
+msgid "Bulgarian"
+msgstr "Búlgaro"
+
+#: conf/global_settings.py:42
msgid "Catalan"
msgstr "Catalán"
-#: conf/global_settings.py:42
+#: conf/global_settings.py:43
msgid "Czech"
msgstr "Checo"
-#: conf/global_settings.py:43
+#: conf/global_settings.py:44
msgid "Welsh"
msgstr "Galés"
-#: conf/global_settings.py:44
+#: conf/global_settings.py:45
msgid "Danish"
msgstr "Danés"
-#: conf/global_settings.py:45
+#: conf/global_settings.py:46
msgid "German"
msgstr "Alemán"
-#: conf/global_settings.py:46
+#: conf/global_settings.py:47
msgid "Greek"
msgstr "Griego"
-#: conf/global_settings.py:47
+#: conf/global_settings.py:48
msgid "English"
msgstr "Inglés"
-#: conf/global_settings.py:48
+#: conf/global_settings.py:49
msgid "Spanish"
msgstr "Español"
-#: conf/global_settings.py:49
+#: conf/global_settings.py:50
msgid "Argentinean Spanish"
msgstr "Español Argentino"
-#: conf/global_settings.py:50
+#: conf/global_settings.py:51
msgid "Finnish"
msgstr "Finlandés"
-#: conf/global_settings.py:51
+#: conf/global_settings.py:52
msgid "French"
msgstr "Francés"
-#: conf/global_settings.py:52
+#: conf/global_settings.py:53
msgid "Galician"
msgstr "Gallego"
-#: conf/global_settings.py:53
+#: conf/global_settings.py:54
msgid "Hungarian"
msgstr "Húngaro"
-#: conf/global_settings.py:54
+#: conf/global_settings.py:55
msgid "Hebrew"
msgstr "Hebreo"
-#: conf/global_settings.py:55
+#: conf/global_settings.py:56
msgid "Icelandic"
msgstr "Islandés"
-#: conf/global_settings.py:56
+#: conf/global_settings.py:57
msgid "Italian"
msgstr "Italiano"
-#: conf/global_settings.py:57
+#: conf/global_settings.py:58
msgid "Japanese"
msgstr "Japonés"
-#: conf/global_settings.py:58
+#: conf/global_settings.py:59
+msgid "Korean"
+msgstr "Koreano"
+
+#: conf/global_settings.py:60
msgid "Kannada"
msgstr "Canarés"
-#: conf/global_settings.py:59
+#: conf/global_settings.py:61
msgid "Latvian"
msgstr "Letón"
-#: conf/global_settings.py:60
+#: conf/global_settings.py:62
msgid "Macedonian"
msgstr "Macedonio"
-#: conf/global_settings.py:61
+#: conf/global_settings.py:63
msgid "Dutch"
msgstr "Holandés"
-#: conf/global_settings.py:62
+#: conf/global_settings.py:64
msgid "Norwegian"
msgstr "Noruego"
-#: conf/global_settings.py:63
+#: conf/global_settings.py:65
msgid "Polish"
msgstr "Polaco"
-#: conf/global_settings.py:64
+#: conf/global_settings.py:66
msgid "Portugese"
msgstr "Portugués"
-#: conf/global_settings.py:65
+#: conf/global_settings.py:67
msgid "Brazilian"
msgstr "Brasileño"
-#: conf/global_settings.py:66
+#: conf/global_settings.py:68
msgid "Romanian"
msgstr "Rumano"
-#: conf/global_settings.py:67
+#: conf/global_settings.py:69
msgid "Russian"
msgstr "Ruso"
-#: conf/global_settings.py:68
+#: conf/global_settings.py:70
msgid "Slovak"
msgstr "Eslovaco"
-#: conf/global_settings.py:69
+#: conf/global_settings.py:71
msgid "Slovenian"
msgstr "Esloveno"
-#: conf/global_settings.py:70
+#: conf/global_settings.py:72
msgid "Serbian"
msgstr "Serbio"
-#: conf/global_settings.py:71
+#: conf/global_settings.py:73
msgid "Swedish"
msgstr "Sueco"
-#: conf/global_settings.py:72
+#: conf/global_settings.py:74
msgid "Tamil"
msgstr "Tamil"
-#: conf/global_settings.py:73
+#: conf/global_settings.py:75
msgid "Telugu"
msgstr "Telugu"
-#: conf/global_settings.py:74
+#: conf/global_settings.py:76
msgid "Turkish"
msgstr "Turco"
-#: conf/global_settings.py:75
+#: conf/global_settings.py:77
msgid "Ukrainian"
msgstr "Ucraniano"
-#: conf/global_settings.py:76
+#: conf/global_settings.py:78
msgid "Simplified Chinese"
msgstr "Chino simplificado"
-#: conf/global_settings.py:77
+#: conf/global_settings.py:79
msgid "Traditional Chinese"
msgstr "Chino tradicional"
@@ -2199,6 +2685,28 @@ msgstr "Chino tradicional"
msgid "yes,no,maybe"
msgstr "si,no,talvez"
+#: template/defaultfilters.py:520
+#, python-format
+msgid "%(size)d byte"
+msgid_plural "%(size)d bytes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: template/defaultfilters.py:522
+#, python-format
+msgid "%.1f KB"
+msgstr ""
+
+#: template/defaultfilters.py:524
+#, python-format
+msgid "%.1f MB"
+msgstr ""
+
+#: template/defaultfilters.py:525
+#, python-format
+msgid "%.1f GB"
+msgstr ""
+
#: core/validators.py:64
msgid "This value must contain only letters, numbers and underscores."
msgstr "Este valor debe contener sólo letras, números y guiones bajos."
@@ -2282,8 +2790,8 @@ msgstr "La URL %s no apunta a una imagen v
#, python-format
msgid "Phone numbers must be in XXX-XXX-XXXX format. \"%s\" is invalid."
msgstr ""
-"Los números telefónicos deben respetar el formato XXX-XXX-XXXX. \"%s\" "
-"no es válido."
+"Los números telefónicos deben respetar el formato XXX-XXX-XXXX. \"%s\" no es "
+"válido."
#: core/validators.py:197
#, python-format
@@ -2386,8 +2894,8 @@ msgid "Please enter a valid decimal number with at most %s total digit."
msgid_plural ""
"Please enter a valid decimal number with at most %s total digits."
msgstr[0] ""
-"Por favor, introduzca un número decimal válido con un máximo de un "
-"dígito en total."
+"Por favor, introduzca un número decimal válido con un máximo de un dígito en "
+"total."
msgstr[1] ""
"Por favor, introduzca un número decimal válido con un maximo de %s dígitos "
"en total."
View
BIN  django/conf/locale/ru/LC_MESSAGES/django.mo
Binary file not shown
View
2,891 django/conf/locale/ru/LC_MESSAGES/django.po
2,005 additions, 886 deletions not shown
View
BIN  django/conf/locale/te/LC_MESSAGES/django.mo
Binary file not shown
View
51 django/conf/locale/te/LC_MESSAGES/django.po
@@ -2,19 +2,19 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
-# pavithran <pavithran.s@gmail.com>, 2007.
msgid ""
msgstr ""
"Project-Id-Version: django\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-09-25 15:43+0200\n"
-"PO-Revision-Date: 2007-02-28 18:35+0530\n"
+"PO-Revision-Date: 2007-05-19 12:44+0530\n"
"Last-Translator: pavithran <pavithran.s@gmail.com>\n"
"Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; nplurals=n>1;"
#: contrib/comments/models.py:67 contrib/comments/models.py:166
msgid "object ID"
@@ -144,7 +144,7 @@ msgstr "కర్మ స్కొరులు"
#: contrib/comments/models.py:242
#, python-format
msgid "%(score)d rating by %(user)s"
-msgstr "%(user) రేటింగ్"
+msgstr "%(score)d కి %(user)s రేటింగ్"
#: contrib/comments/models.py:258
#, python-format
@@ -153,9 +153,9 @@ msgid ""
"\n"
"%(text)s"
msgstr ""
-"%(user)s చేత చేయబడ్డ వ్యాఖ్యానములు"
+"%(user)s చేత చేయబడ్డ వ్యాఖ్యానములు:\n"
"\n"
-"%(text)లు"
+"%(text)s"
#: contrib/comments/models.py:265
msgid "flag date"
@@ -220,12 +220,12 @@ msgid_plural ""
"\n"
"%(text)s"
msgstr[0] ""
-"ఈ వ్యాఖ్యానము చేసిన యూజర్ %(count)లు కన్న తక్కువ సమర్పించాడు "
+"ఈ వ్యాఖ్యానము చేసిన యూజర్ %(count)s లు కన్న తక్కువ సమర్పించాడు "
"వ్యాఖ్యానము:\n"
"\n"
"%(text)s"
msgstr[1] ""
-"ఈ వ్యాఖ్యానము చేసిన యూజర్ %(count)లు కన్న తక్కువ సమర్పించాడు"
+"ఈ వ్యాఖ్యానము చేసిన యూజర్ %(count)s లు కన్న తక్కువ సమర్పించాడు"
"వ్యాఖ్యానములు:\n"
"\n"
"%(text)s"
@@ -343,7 +343,8 @@ msgstr "మీ పేరు"
msgid ""
"<h3>By %s:</h3>\n"
"<ul>\n"
-msgstr "<h3> %s తో:</h3>\n"
+msgstr ""
+"<h3> %s తో:</h3>\n"
"<ul>\n"
#: contrib/admin/filterspecs.py:70 contrib/admin/filterspecs.py:88
@@ -513,17 +514,17 @@ msgstr "%s ని మార్చంది"
#: contrib/admin/views/main.py:473
#, python-format
msgid "One or more %(fieldname)s in %(name)s: %(obj)s"
-msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)లు లో %(fieldname)లు : %(obj)లు "
+msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)s లో %(fieldname)s : %(obj)s "
#: contrib/admin/views/main.py:478
#, python-format
msgid "One or more %(fieldname)s in %(name)s:"
-msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)లు లో %(fieldname)లు"
+msgstr "ఒకటి కాని ,అంత కన్నఎక్కువ %(name)s లో %(fieldname)s"
#: contrib/admin/views/main.py:511
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)లు \"%(obj)s\"జయప్రదంగా తీసివేయబడ్డడి"
+msgstr "%(name)s \"%(obj)s\"జయప్రదంగా తీసివేయబడ్డడి"
#: contrib/admin/views/main.py:514
msgid "Are you sure?"
@@ -532,7 +533,7 @@ msgstr "మీరు కచ్చితంగా ఉన్నారా?"
#: contrib/admin/views/main.py:536
#, python-format
msgid "Change history: %s"
-msgstr "మార్చబడిన పురాణము"
+msgstr "మార్చబడిన పురాణము: %s"
#: contrib/admin/views/main.py:570
#, python-format
@@ -796,12 +797,12 @@ msgstr "క్షమించండి మీరు కోరిన పేజి
#: contrib/admin/templates/admin/index.html:17
#, python-format
msgid "Models available in the %(name)s application."
-msgstr "మొడల్ లు %(name)లో దొరికే అప్ప్లికేషన్"
+msgstr "మొడల్ లు %(name)s లో దొరికే అప్ప్లికేషన్"
#: contrib/admin/templates/admin/index.html:18
#, python-format
msgid "%(name)s"
-msgstr "%(name)లు"
+msgstr "%(name)s"
#: contrib/admin/templates/admin/index.html:28
#: contrib/admin/templates/admin/change_form.html:15
@@ -831,7 +832,7 @@ msgstr "ఏమి దొరకలేదు"
#: contrib/admin/templates/admin/change_list.html:11
#, python-format
msgid "Add %(name)s"
-msgstr "%(name)లు జత చేయు"
+msgstr "%(name)s జత చేయు"
#: contrib/admin/templates/admin/login.html:22
msgid "Have you <a href=\"/password_reset/\">forgotten your password</a>?"
@@ -1794,7 +1795,7 @@ msgstr "సంవత్సరము 1900 లేక దాని తరువా
#: core/validators.py:142
#, python-format
msgid "Invalid date: %s."
-msgstr "సరికాని తారీఖు"
+msgstr "సరికాని తారీఖు : %s."
#: core/validators.py:146 db/models/fields/__init__.py:415
msgid "Enter a valid date in YYYY-MM-DD format."
@@ -1846,8 +1847,10 @@ msgstr "సరైన URL కావాలి"
msgid ""
"Valid HTML is required. Specific errors are:\n"
"%s"
-msgstr "సరైన HTML ఇవ్వండి .ప్రత్యేకమైన తప్పులు :\n"
+msgstr ""
+"సరైన HTML ఇవ్వండి .ప్రత్యేకమైన తప్పులు :\n"
"%s"
+
#: core/validators.py:220
#, python-format
msgid "Badly formed XML: %s"
@@ -1856,7 +1859,7 @@ msgstr ""
#: core/validators.py:230
#, python-format
msgid "Invalid URL: %s"
-msgstr ""
+msgstr "సరికాని URL: %s"
#: core/validators.py:234 core/validators.py:236
#, python-format
@@ -2004,27 +2007,27 @@ msgstr ""
#: views/generic/create_update.py:43
#, python-format
msgid "The %(verbose_name)s was created successfully."
-msgstr "%(verbose_name)లు జయప్రదంగా తయారయింది"
+msgstr "%(verbose_name)s జయప్రదంగా తయారయింది"
#: views/generic/create_update.py:117
#, python-format
msgid "The %(verbose_name)s was updated successfully."
-msgstr "%(verbose_name)లు జయప్రదంగా @@"
+msgstr "%(verbose_name)s జయప్రదంగా @@"
#: views/generic/create_update.py:184
#, python-format
msgid "The %(verbose_name)s was deleted."
-msgstr "%(verbose_name)లు తీసివేయబడినది"
+msgstr "%(verbose_name)s తీసివేయబడినది"
#: db/models/manipulators.py:302
#, python-format
msgid "%(object)s with this %(type)s already exists for the given %(field)s."
-msgstr "%(field) లో %(object)తో %(type) ఉన్నాయి"
+msgstr "%(field)s లో %(object)s తో %(type)s ఉన్నాయి"
#: db/models/fields/__init__.py:40
#, python-format
msgid "%(optname)s with this %(fieldname)s already exists."
-msgstr "%(optname)లు తో %(fieldname) ముందే ఉన్నాయి ."
+msgstr "%(optname)s తో %(fieldname)s ముందే ఉన్నాయి ."
#: db/models/fields/__init__.py:114 db/models/fields/__init__.py:265
#: db/models/fields/__init__.py:551 db/models/fields/__init__.py:562
@@ -2082,7 +2085,7 @@ msgstr "లైన్ బ్రేక్స్ కి ఇక్కడ ఆన
#: forms/__init__.py:487 forms/__init__.py:560 forms/__init__.py:599
#, python-format
msgid "Select a valid choice; '%(data)s' is not in %(choices)s."
-msgstr "సరైనది ఎంచుకోండి; %(choices) లో '%(data)s' లేవు "
+msgstr "సరైనది ఎంచుకోండి; %(choices)s లో '%(data)s' లేవు "
#: forms/__init__.py:663
msgid "The submitted file is empty."
View
4 django/contrib/admin/templatetags/admin_list.py
@@ -166,8 +166,8 @@ def items_for_result(cl, result):
# Booleans are special: We use images.
elif isinstance(f, models.BooleanField) or isinstance(f, models.NullBooleanField):
result_repr = _boolean_icon(field_val)
- # FloatFields are special: Zero-pad the decimals.
- elif isinstance(f, models.FloatField):
+ # DecimalFields are special: Zero-pad the decimals.
+ elif isinstance(f, models.DecimalField):
if field_val is not None:
result_repr = ('%%.%sf' % f.decimal_places) % field_val
else:
View
3  django/contrib/admin/views/doc.py
@@ -294,10 +294,11 @@ def get_return_data_type(func_name):
'CommaSeparatedIntegerField': _('Comma-separated integers'),
'DateField' : _('Date (without time)'),
'DateTimeField' : _('Date (with time)'),
+ 'DecimalField' : _('Decimal number'),
'EmailField' : _('E-mail address'),
'FileField' : _('File path'),
'FilePathField' : _('File path'),
- 'FloatField' : _('Decimal number'),
+ 'FloatField' : _('Floating point number'),
'ForeignKey' : _('Integer'),
'ImageField' : _('File path'),
'IntegerField' : _('Integer'),
View
2  django/contrib/formtools/preview.py
@@ -83,7 +83,7 @@ def unused_name(self, name):
"""
while 1:
try:
- f = self.form.fields[name]
+ f = self.form.base_fields[name]
except KeyError:
break # This field name isn't being used by the form.
name += '_'
View
0  tests/regressiontests/markup/models.py → django/contrib/markup/models.py
File renamed without changes
View
0  tests/regressiontests/markup/tests.py → django/contrib/markup/tests.py
File renamed without changes
View
3  django/contrib/sessions/middleware.py
@@ -36,6 +36,9 @@ def items(self):
def get(self, key, default=None):
return self._session.get(key, default)
+ def pop(self, key, *args):
+ return self._session.pop(key, *args)
+
def set_test_cookie(self):
self[TEST_COOKIE_NAME] = TEST_COOKIE_VALUE
View
19 django/contrib/sessions/tests.py
@@ -0,0 +1,19 @@
+r"""
+>>> s = SessionWrapper(None)
+
+Inject data into the session cache.
+>>> s._session_cache = {}
+>>> s._session_cache['some key'] = 'exists'
+
+>>> s.pop('some key')
+'exists'
+
+>>> s.pop('some key', 'does not exist')
+'does not exist'
+"""
+
+from django.contrib.sessions.middleware import SessionWrapper
+
+if __name__ == '__main__':
+ import doctest
+ doctest.testmod()
View
4 django/contrib/sitemaps/__init__.py
@@ -1,7 +1,7 @@
from django.core import urlresolvers
import urllib
-PING_URL = "http://www.google.com/webmasters/sitemaps/ping"
+PING_URL = "http://www.google.com/webmasters/tools/ping"
class SitemapNotFound(Exception):
pass
@@ -29,7 +29,7 @@ def ping_google(sitemap_url=None, ping_url=PING_URL):
from django.contrib.sites.models import Site
current_site = Site.objects.get_current()
- url = "%s%s" % (current_site.domain, sitemap_url)
+ url = "http://%s%s" % (current_site.domain, sitemap_url)
params = urllib.urlencode({'sitemap':url})
urllib.urlopen("%s?%s" % (ping_url, params))
View
0  tests/regressiontests/markup/__init__.py → django/contrib/webdesign/models.py
File renamed without changes
View
17 django/contrib/webdesign/tests.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+
+r"""
+>>> words(7)
+'lorem ipsum dolor sit amet consectetur adipisicing'
+
+>>> paragraphs(1)
+['Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.']
+
+"""
+
+from django.contrib.webdesign.lorem_ipsum import *
+import datetime
+
+if __name__ == '__main__':
+ import doctest
+ doctest.testmod()
View
8 django/core/management.py
@@ -929,7 +929,7 @@ def inspectdb():
if field_type == 'CharField' and row[3]:
extra_params['maxlength'] = row[3]
- if field_type == 'FloatField':
+ if field_type == 'DecimalField':
extra_params['max_digits'] = row[4]
extra_params['decimal_places'] = row[5]
@@ -1004,11 +1004,11 @@ def get_validation_errors(outfile, app=None):
e.add(opts, '"%s": You can\'t use "id" as a field name, because each model automatically gets an "id" field if none of the fields have primary_key=True. You need to either remove/rename your "id" field or add primary_key=True to a field.' % f.name)
if isinstance(f, models.CharField) and f.maxlength in (None, 0):
e.add(opts, '"%s": CharFields require a "maxlength" attribute.' % f.name)
- if isinstance(f, models.FloatField):
+ if isinstance(f, models.DecimalField):
if f.decimal_places is None:
- e.add(opts, '"%s": FloatFields require a "decimal_places" attribute.' % f.name)
+ e.add(opts, '"%s": DecimalFields require a "decimal_places" attribute.' % f.name)
if f.max_digits is None:
- e.add(opts, '"%s": FloatFields require a "max_digits" attribute.' % f.name)
+ e.add(opts, '"%s": DecimalFields require a "max_digits" attribute.' % f.name)
if isinstance(f, models.FileField) and not f.upload_to:
e.add(opts, '"%s": FileFields require an "upload_to" attribute.' % f.name)
if isinstance(f, models.ImageField):
View
42 django/core/serializers/json.py
@@ -4,19 +4,24 @@
import datetime
from django.utils import simplejson
+from django.utils.simplejson import decoder
from django.core.serializers.python import Serializer as PythonSerializer
from django.core.serializers.python import Deserializer as PythonDeserializer
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
+try:
+ import decimal
+except ImportError:
+ from django.utils import _decimal as decimal # Python 2.3 fallback
class Serializer(PythonSerializer):
"""
Convert a queryset to JSON.
"""
def end_serialization(self):
- simplejson.dump(self.objects, self.stream, cls=DateTimeAwareJSONEncoder, **self.options)
+ simplejson.dump(self.objects, self.stream, cls=DjangoJSONEncoder, **self.options)
def getvalue(self):
if callable(getattr(self.stream, 'getvalue', None)):
@@ -30,12 +35,13 @@ def Deserializer(stream_or_string, **options):
stream = StringIO(stream_or_string)
else:
stream = stream_or_string
+ #for obj in PythonDeserializer(simplejson.load(stream, cls=DjangoJSONDecoder)):
for obj in PythonDeserializer(simplejson.load(stream)):
yield obj
-class DateTimeAwareJSONEncoder(simplejson.JSONEncoder):
+class DjangoJSONEncoder(simplejson.JSONEncoder):
"""
- JSONEncoder subclass that knows how to encode date/time types
+ JSONEncoder subclass that knows how to encode date/time and decimal types.
"""
DATE_FORMAT = "%Y-%m-%d"
@@ -48,5 +54,33 @@ def default(self, o):
return o.strftime(self.DATE_FORMAT)
elif isinstance(o, datetime.time):
return o.strftime(self.TIME_FORMAT)
+ elif isinstance(o, decimal.Decimal):
+ return str(o)
else:
- return super(DateTimeAwareJSONEncoder, self).default(o)
+ return super(DjangoJSONEncoder, self).default(o)
+
+# Older, deprecated class name (for backwards compatibility purposes).
+DateTimeAwareJSONEncoder = DjangoJSONEncoder
+
+## Our override for simplejson.JSONNumber, because we want to use decimals in
+## preference to floats (we can convert decimal -> float when they stored, if
+## needed, but cannot go the other way).
+#def DjangoNumber(match, context):
+# match = DjangoNumber.regex.match(match.string, *match.span())
+# integer, frac, exp = match.groups()
+# if exp:
+# res = float(integer + (frac or '') + (exp or ''))
+# elif frac:
+# res = decimal.Decimal(integer + frac)
+# else:
+# res = int(integer)
+# return res, None
+#decoder.pattern(r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?')(DjangoNumber)
+#
+#converters = decoder.ANYTHING[:]
+#converters[-1] = DjangoNumber
+#decoder.JSONScanner = decoder.Scanner(converters)
+#
+#class DjangoJSONDecoder(simplejson.JSONDecoder):
+# _scanner = decoder.Scanner(converters)
+#
View
28 django/core/validators.py
@@ -25,6 +25,7 @@
r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*" # dot-atom
r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-011\013\014\016-\177])*"' # quoted-string
r')@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}$', re.IGNORECASE) # domain
+decimal_re = re.compile(r'^-?(?P<digits>\d+)(\.(?P<decimals>\d+))?$')
integer_re = re.compile(r'^-?\d+$')
ip4_re = re.compile(r'^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$')
phone_re = re.compile(r'^[A-PR-Y0-9]{3}-[A-PR-Y0-9]{3}-[A-PR-Y0-9]{4}$', re.IGNORECASE)
@@ -406,28 +407,35 @@ def __call__(self, field_data, all_data):
if val != int(val):
raise ValidationError, gettext("This value must be a power of %s.") % self.power_of
-class IsValidFloat(object):
+class IsValidDecimal(object):
def __init__(self, max_digits, decimal_places):
self.max_digits, self.decimal_places = max_digits, decimal_places
def __call__(self, field_data, all_data):
- data = str(field_data)
- try:
- float(data)
- except ValueError:
+ match = decimal_re.search(str(field_data))
+ if not match:
raise ValidationError, gettext("Please enter a valid decimal number.")
- # Negative floats require more space to input.
- max_allowed_length = data.startswith('-') and (self.max_digits + 2) or (self.max_digits + 1)
- if len(data) > max_allowed_length:
+
+ digits = len(match.group('digits') or '')
+ decimals = len(match.group('decimals') or '')
+
+ if digits + decimals > self.max_digits:
raise ValidationError, ngettext("Please enter a valid decimal number with at most %s total digit.",
"Please enter a valid decimal number with at most %s total digits.", self.max_digits) % self.max_digits
- if (not '.' in data and len(data) > (max_allowed_length - self.decimal_places - 1)) or ('.' in data and len(data) > (max_allowed_length - (self.decimal_places - len(data.split('.')[1])))):
+ if digits > (self.max_digits - self.decimal_places):
raise ValidationError, ngettext( "Please enter a valid decimal number with a whole part of at most %s digit.",
"Please enter a valid decimal number with a whole part of at most %s digits.", str(self.max_digits-self.decimal_places)) % str(self.max_digits-self.decimal_places)
- if '.' in data and len(data.split('.')[1]) > self.decimal_places:
+ if decimals > self.decimal_places:
raise ValidationError, ngettext("Please enter a valid decimal number with at most %s decimal place.",
"Please enter a valid decimal number with at most %s decimal places.", self.decimal_places) % self.decimal_places
+def isValidFloat(field_data, all_data):
+ data = str(field_data)
+ try:
+ float(data)
+ except ValueError:
+ raise ValidationError, gettext("Please enter a valid floating point number.")
+
class HasAllowableSize(object):
"""
Checks that the file-upload field data is a certain size. min_size and
View
3  django/db/backends/ado_mssql/creation.py
@@ -5,9 +5,10 @@
'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)',
'DateField': 'smalldatetime',
'DateTimeField': 'smalldatetime',
+ 'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
'FileField': 'varchar(100)',
'FilePathField': 'varchar(100)',
- 'FloatField': 'numeric(%(max_digits)s, %(decimal_places)s)',
+ 'FloatField': 'double precision',
'ImageField': 'varchar(100)',
'IntegerField': 'int',
'IPAddressField': 'char(15)',
View
2  django/db/backends/mysql/base.py
@@ -36,6 +36,8 @@
django_conversions = conversions.copy()
django_conversions.update({
FIELD_TYPE.TIME: util.typecast_time,
+ FIELD_TYPE.DECIMAL: util.typecast_decimal,
+ FIELD_TYPE.NEWDECIMAL: util.typecast_decimal,
})
# This should match the numerical portion of the version numbers (we can treat
View
3  django/db/backends/mysql/creation.py
@@ -9,9 +9,10 @@
'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)',
'DateField': 'date',
'DateTimeField': 'datetime',
+ 'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
'FileField': 'varchar(100)',
'FilePathField': 'varchar(100)',
- 'FloatField': 'numeric(%(max_digits)s, %(decimal_places)s)',
+ 'FloatField': 'double precision',
'ImageField': 'varchar(100)',
'IntegerField': 'integer',
'IPAddressField': 'char(15)',
View
2  django/db/backends/mysql/introspection.py
@@ -76,7 +76,7 @@ def get_indexes(cursor, table_name):
DATA_TYPES_REVERSE = {
FIELD_TYPE.BLOB: 'TextField',
FIELD_TYPE.CHAR: 'CharField',
- FIELD_TYPE.DECIMAL: 'FloatField',
+ FIELD_TYPE.DECIMAL: 'DecimalField',
FIELD_TYPE.DATE: 'DateField',
FIELD_TYPE.DATETIME: 'DateTimeField',
FIELD_TYPE.DOUBLE: 'FloatField',
View
2  django/db/backends/mysql_old/base.py
@@ -24,6 +24,8 @@
FIELD_TYPE.DATETIME: util.typecast_timestamp,
FIELD_TYPE.DATE: util.typecast_date,
FIELD_TYPE.TIME: util.typecast_time,
+ FIELD_TYPE.DECIMAL: util.typecast_decimal,
+ FIELD_TYPE.NEWDECIMAL: util.typecast_decimal,
})
# This should match the numerical portion of the version numbers (we can treat
View
3  django/db/backends/mysql_old/creation.py
@@ -9,9 +9,10 @@
'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)',
'DateField': 'date',
'DateTimeField': 'datetime',
+ 'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
'FileField': 'varchar(100)',
'FilePathField': 'varchar(100)',
- 'FloatField': 'numeric(%(max_digits)s, %(decimal_places)s)',
+ 'FloatField': 'double precision',
'ImageField': 'varchar(100)',
'IntegerField': 'integer',
'IPAddressField': 'char(15)',
View
2  django/db/backends/mysql_old/introspection.py
@@ -76,7 +76,7 @@ def get_indexes(cursor, table_name):
DATA_TYPES_REVERSE = {
FIELD_TYPE.BLOB: 'TextField',
FIELD_TYPE.CHAR: 'CharField',
- FIELD_TYPE.DECIMAL: 'FloatField',
+ FIELD_TYPE.DECIMAL: 'DecimalField',
FIELD_TYPE.DATE: 'DateField',
FIELD_TYPE.DATETIME: 'DateTimeField',
FIELD_TYPE.DOUBLE: 'FloatField',
View
3  django/db/backends/oracle/creation.py
@@ -12,9 +12,10 @@
'CommaSeparatedIntegerField': 'VARCHAR2(%(maxlength)s)',
'DateField': 'DATE',
'DateTimeField': 'TIMESTAMP',
+ 'DecimalField': 'NUMBER(%(max_digits)s, %(decimal_places)s)',
'FileField': 'VARCHAR2(100)',
'FilePathField': 'VARCHAR2(100)',
- 'FloatField': 'NUMBER(%(max_digits)s, %(decimal_places)s)',
+ 'FloatField': 'DOUBLE PRECISION',
'ImageField': 'VARCHAR2(100)',
'IntegerField': 'NUMBER(11)',
'IPAddressField': 'VARCHAR2(15)',
View
2  django/db/backends/oracle/introspection.py
@@ -92,7 +92,7 @@ def get_indexes(cursor, table_name):
cx_Oracle.DATETIME: 'DateTimeField',
cx_Oracle.FIXED_CHAR: 'CharField',
cx_Oracle.NCLOB: 'TextField',
- cx_Oracle.NUMBER: 'FloatField',
+ cx_Oracle.NUMBER: 'DecimalField',
cx_Oracle.STRING: 'CharField',
cx_Oracle.TIMESTAMP: 'DateTimeField',
}
View
1  django/db/backends/postgresql/base.py
@@ -268,6 +268,7 @@ def get_sql_sequence_reset(style, model_list):
Database.register_type(Database.new_type((1083,1266), "TIME", util.typecast_time))
Database.register_type(Database.new_type((1114,1184), "TIMESTAMP", util.typecast_timestamp))
Database.register_type(Database.new_type((16,), "BOOLEAN", util.typecast_boolean))
+Database.register_type(Database.new_type((1700,), "NUMERIC", util.typecast_decimal))
OPERATOR_MAPPING = {
'exact': '= %s',
View
3  django/db/backends/postgresql/creation.py
@@ -9,9 +9,10 @@
'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)',
'DateField': 'date',
'DateTimeField': 'timestamp with time zone',
+ 'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
'FileField': 'varchar(100)',
'FilePathField': 'varchar(100)',
- 'FloatField': 'numeric(%(max_digits)s, %(decimal_places)s)',
+ 'FloatField': 'double precision',
'ImageField': 'varchar(100)',
'IntegerField': 'integer',
'IPAddressField': 'inet',
View
3  django/db/backends/postgresql/introspection.py
@@ -72,6 +72,7 @@ def get_indexes(cursor, table_name):
21: 'SmallIntegerField',
23: 'IntegerField',
25: 'TextField',
+ 701: 'FloatField',
869: 'IPAddressField',
1043: 'CharField',
1082: 'DateField',
@@ -79,5 +80,5 @@ def get_indexes(cursor, table_name):
1114: 'DateTimeField',
1184: 'DateTimeField',
1266: 'TimeField',
- 1700: 'FloatField',
+ 1700: 'DecimalField',
}
View
3  django/db/backends/postgresql_psycopg2/introspection.py
@@ -72,6 +72,7 @@ def get_indexes(cursor, table_name):
21: 'SmallIntegerField',
23: 'IntegerField',
25: 'TextField',
+ 701: 'FloatField',
869: 'IPAddressField',
1043: 'CharField',
1082: 'DateField',
@@ -79,5 +80,5 @@ def get_indexes(cursor, table_name):
1114: 'DateTimeField',
1184: 'DateTimeField',
1266: 'TimeField',
- 1700: 'FloatField',
+ 1700: 'DecimalField',
}
View
7 django/db/backends/sqlite3/base.py
@@ -17,6 +17,11 @@
module = 'sqlite3'
raise ImproperlyConfigured, "Error loading %s module: %s" % (module, e)
+try:
+ import decimal
+except ImportError:
+ from django.utils import _decimal as decimal # for Python 2.3
+
DatabaseError = Database.DatabaseError
IntegrityError = Database.IntegrityError
@@ -26,6 +31,8 @@
Database.register_converter("datetime", util.typecast_timestamp)
Database.register_converter("timestamp", util.typecast_timestamp)
Database.register_converter("TIMESTAMP", util.typecast_timestamp)
+Database.register_converter("decimal", util.typecast_decimal)
+Database.register_adapter(decimal.Decimal, util.rev_typecast_decimal)
def utf8rowFactory(cursor,