Changeset 7948
- Timestamp:
- 07/18/08 10:47:10 (4 months ago)
- Files:
-
- django/branches/newforms-admin (modified) (1 prop)
- django/branches/newforms-admin/django/contrib/databrowse/plugins/calendars.py (modified) (2 diffs)
- django/branches/newforms-admin/django/core/serializers/base.py (modified) (2 diffs)
- django/branches/newforms-admin/django/core/serializers/json.py (modified) (3 diffs)
- django/branches/newforms-admin/django/core/validators.py (modified) (2 diffs)
- django/branches/newforms-admin/django/db/backends/mysql/creation.py (modified) (1 diff)
- django/branches/newforms-admin/django/db/backends/mysql_old/creation.py (modified) (1 diff)
- django/branches/newforms-admin/django/db/backends/oracle/creation.py (modified) (1 diff)
- django/branches/newforms-admin/django/db/backends/postgresql/creation.py (modified) (1 diff)
- django/branches/newforms-admin/django/db/backends/sqlite3/creation.py (modified) (1 diff)
- django/branches/newforms-admin/django/db/models/fields/__init__.py (modified) (6 diffs)
- django/branches/newforms-admin/django/db/models/manipulators.py (modified) (2 diffs)
- django/branches/newforms-admin/django/newforms/widgets.py (modified) (2 diffs)
- django/branches/newforms-admin/django/utils/datetime_safe.py (copied) (copied from django/trunk/django/utils/datetime_safe.py)
- django/branches/newforms-admin/django/utils/tzinfo.py (modified) (1 diff)
- django/branches/newforms-admin/tests/regressiontests/datetime_safe (copied) (copied from django/trunk/tests/regressiontests/datetime_safe)
- django/branches/newforms-admin/tests/regressiontests/datetime_safe/tests.py (copied) (copied from django/trunk/tests/regressiontests/datetime_safe/tests.py)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/branches/newforms-admin
- Property svnmerge-integrated changed from /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7943 to /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7947
django/branches/newforms-admin/django/contrib/databrowse/plugins/calendars.py
r7233 r7948 9 9 from django.utils.safestring import mark_safe 10 10 from django.views.generic import date_based 11 from django.utils import datetime_safe 11 12 12 13 class CalendarPlugin(DatabrowsePlugin): … … 34 35 def urls(self, plugin_name, easy_instance_field): 35 36 if isinstance(easy_instance_field.field, models.DateField): 37 d = easy_instance_field.raw_value 36 38 return [mark_safe(u'%s%s/%s/%s/%s/%s/' % ( 37 39 easy_instance_field.model.url(), 38 40 plugin_name, easy_instance_field.field.name, 39 easy_instance_field.raw_value.year,40 easy_instance_field.raw_value.strftime('%b').lower(),41 easy_instance_field.raw_value.day))]41 d.year, 42 datetime_safe.new_date(d).strftime('%b').lower(), 43 d.day))] 42 44 43 45 def model_view(self, request, model_databrowse, url): django/branches/newforms-admin/django/core/serializers/base.py
r7604 r7948 9 9 from django.db import models 10 10 from django.utils.encoding import smart_str, smart_unicode 11 from django.utils import datetime_safe 11 12 12 13 class SerializationError(Exception): … … 60 61 """ 61 62 if isinstance(field, models.DateTimeField): 62 value = getattr(obj, field.name).strftime("%Y-%m-%d %H:%M:%S") 63 d = datetime_safe.new_datetime(getattr(obj, field.name)) 64 value = d.strftime("%Y-%m-%d %H:%M:%S") 63 65 else: 64 66 value = field.flatten_data(follow=None, obj=obj).get(field.name, "") django/branches/newforms-admin/django/core/serializers/json.py
r7233 r7948 7 7 from django.core.serializers.python import Serializer as PythonSerializer 8 8 from django.core.serializers.python import Deserializer as PythonDeserializer 9 from django.utils import datetime_safe 9 10 try: 10 11 from cStringIO import StringIO … … 21 22 """ 22 23 internal_use_only = False 23 24 24 25 def end_serialization(self): 25 26 self.options.pop('stream', None) … … 52 53 def default(self, o): 53 54 if isinstance(o, datetime.datetime): 54 return o.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT)) 55 d = datetime_safe.new_datetime(o) 56 return d.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT)) 55 57 elif isinstance(o, datetime.date): 56 return o.strftime(self.DATE_FORMAT) 58 d = datetime_safe.new_date(o) 59 return d.strftime(self.DATE_FORMAT) 57 60 elif isinstance(o, datetime.time): 58 61 return o.strftime(self.TIME_FORMAT) django/branches/newforms-admin/django/core/validators.py
r7853 r7948 142 142 # produces much friendlier error messages. 143 143 year, month, day = map(int, date_string.split('-')) 144 # This check is needed because strftime is used when saving the date145 # value to the database, and strftime requires that the year be >=1900.146 if year < 1900:147 raise ValidationError, _('Year must be 1900 or later.')148 144 try: 149 145 date(year, month, day) … … 408 404 Usage: If you create an instance of the IsPowerOf validator: 409 405 v = IsAPowerOf(2) 410 406 411 407 The following calls will succeed: 412 v(4, None) 408 v(4, None) 413 409 v(8, None) 414 410 v(16, None) 415 411 416 412 But this call: 417 413 v(17, None) django/branches/newforms-admin/django/db/backends/mysql/creation.py
r6417 r7948 14 14 'FilePathField': 'varchar(%(max_length)s)', 15 15 'FloatField': 'double precision', 16 'ImageField': 'varchar(%(max_length)s)',17 16 'IntegerField': 'integer', 18 17 'IPAddressField': 'char(15)', django/branches/newforms-admin/django/db/backends/mysql_old/creation.py
r6417 r7948 14 14 'FilePathField': 'varchar(%(max_length)s)', 15 15 'FloatField': 'double precision', 16 'ImageField': 'varchar(%(max_length)s)',17 16 'IntegerField': 'integer', 18 17 'IPAddressField': 'char(15)', django/branches/newforms-admin/django/db/backends/oracle/creation.py
r7809 r7948 21 21 'FilePathField': 'NVARCHAR2(%(max_length)s)', 22 22 'FloatField': 'DOUBLE PRECISION', 23 'ImageField': 'NVARCHAR2(%(max_length)s)',24 23 'IntegerField': 'NUMBER(11)', 25 24 'IPAddressField': 'VARCHAR2(15)', django/branches/newforms-admin/django/db/backends/postgresql/creation.py
r6417 r7948 14 14 'FilePathField': 'varchar(%(max_length)s)', 15 15 'FloatField': 'double precision', 16 'ImageField': 'varchar(%(max_length)s)',17 16 'IntegerField': 'integer', 18 17 'IPAddressField': 'inet', django/branches/newforms-admin/django/db/backends/sqlite3/creation.py
r6417 r7948 13 13 'FilePathField': 'varchar(%(max_length)s)', 14 14 'FloatField': 'real', 15 'ImageField': 'varchar(%(max_length)s)',16 15 'IntegerField': 'integer', 17 16 'IPAddressField': 'char(15)', django/branches/newforms-admin/django/db/models/fields/__init__.py
r7922 r7948 24 24 from django.utils.encoding import smart_unicode, force_unicode, smart_str 25 25 from django.utils.maxlength import LegacyMaxlength 26 from django.utils import datetime_safe 26 27 27 28 class NOT_PROVIDED: … … 543 544 value = [smart_unicode(v) for v in value] 544 545 elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte') and hasattr(value, 'strftime'): 545 value = value.strftime('%Y-%m-%d')546 value = datetime_safe.new_date(value).strftime('%Y-%m-%d') 546 547 else: 547 548 value = smart_unicode(value) … … 575 576 if value is not None: 576 577 try: 577 value = value.strftime('%Y-%m-%d')578 value = datetime_safe.new_date(value).strftime('%Y-%m-%d') 578 579 except AttributeError: 579 580 # If value is already a string it won't have a strftime method, … … 587 588 def flatten_data(self, follow, obj=None): 588 589 val = self._get_val_from_obj(obj) 589 return {self.attname: (val is not None and val.strftime("%Y-%m-%d") or '')} 590 if val is None: 591 data = '' 592 else: 593 data = datetime_safe.new_date(val).strftime("%Y-%m-%d") 594 return {self.attname: data} 590 595 591 596 def formfield(self, **kwargs): … … 654 659 val = self._get_val_from_obj(obj) 655 660 date_field, time_field = self.get_manipulator_field_names('') 656 return {date_field: (val is not None and val.strftime("%Y-%m-%d") or ''), 657 time_field: (val is not None and val.strftime("%H:%M:%S") or '')} 661 if val is None: 662 date_data = time_data = '' 663 else: 664 d = datetime_safe.new_datetime(val) 665 date_data = d.strftime('%Y-%m-%d') 666 time_data = d.strftime('%H:%M:%S') 667 return {date_field: date_data, time_field: time_data} 658 668 659 669 def formfield(self, **kwargs): … … 918 928 setattr(cls, 'get_%s_height' % self.name, curry(cls._get_FIELD_height, field=self)) 919 929 920 def get_internal_type(self):921 return "ImageField"922 923 930 def save_file(self, new_data, new_object, original_object, change, rel, save=True): 924 931 FileField.save_file(self, new_data, new_object, original_object, change, rel, save) django/branches/newforms-admin/django/db/models/manipulators.py
r6342 r7948 10 10 from django.utils.encoding import smart_str 11 11 from django.utils.translation import ugettext as _ 12 from django.utils import datetime_safe 12 13 13 14 def add_manipulators(sender): … … 328 329 else: 329 330 format_string = (lookup_type == 'date') and '%B %d, %Y' or '%B %Y' 331 date_val = datetime_safe.new_datetime(date_val) 330 332 raise validators.ValidationError, "Please enter a different %s. The one you entered is already being used for %s." % \ 331 333 (from_field.verbose_name, date_val.strftime(format_string)) django/branches/newforms-admin/django/newforms/widgets.py
r7834 r7948 16 16 from django.utils.encoding import StrAndUnicode, force_unicode 17 17 from django.utils.safestring import mark_safe 18 from django.utils import datetime_safe 18 19 from util import flatatt 19 20 from urlparse import urljoin … … 297 298 value = '' 298 299 elif hasattr(value, 'strftime'): 300 value = datetime_safe.new_datetime(value) 299 301 value = value.strftime(self.format) 300 302 return super(DateTimeInput, self).render(name, value, attrs) django/branches/newforms-admin/django/utils/tzinfo.py
r7233 r7948 61 61 try: 62 62 stamp = time.mktime(tt) 63 except OverflowError: 64 # 32 bit systems can't handle dates after Jan 2038, so we fake it 65 # in that case (since we only care about the DST flag here). 63 except (OverflowError, ValueError): 64 # 32 bit systems can't handle dates after Jan 2038, and certain 65 # systems can't handle dates before ~1901-12-01: 66 # 67 # >>> time.mktime((1900, 1, 13, 0, 0, 0, 0, 0, 0)) 68 # OverflowError: mktime argument out of range 69 # >>> time.mktime((1850, 1, 13, 0, 0, 0, 0, 0, 0)) 70 # ValueError: year out of range 71 # 72 # In this case, we fake the date, because we only care about the 73 # DST flag. 66 74 tt = (2037,) + tt[1:] 67 75 stamp = time.mktime(tt)
