Django

Code

Changeset 7948

Show
Ignore:
Timestamp:
07/18/08 10:47:10 (4 months ago)
Author:
brosner
Message:

newforms-admin: Merged from trunk up to [7947].

Files:

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  
    99from django.utils.safestring import mark_safe 
    1010from django.views.generic import date_based 
     11from django.utils import datetime_safe 
    1112 
    1213class CalendarPlugin(DatabrowsePlugin): 
     
    3435    def urls(self, plugin_name, easy_instance_field): 
    3536        if isinstance(easy_instance_field.field, models.DateField): 
     37            d = easy_instance_field.raw_value 
    3638            return [mark_safe(u'%s%s/%s/%s/%s/%s/' % ( 
    3739                easy_instance_field.model.url(), 
    3840                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))] 
    4244 
    4345    def model_view(self, request, model_databrowse, url): 
  • django/branches/newforms-admin/django/core/serializers/base.py

    r7604 r7948  
    99from django.db import models 
    1010from django.utils.encoding import smart_str, smart_unicode 
     11from django.utils import datetime_safe 
    1112 
    1213class SerializationError(Exception): 
     
    6061        """ 
    6162        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") 
    6365        else: 
    6466            value = field.flatten_data(follow=None, obj=obj).get(field.name, "") 
  • django/branches/newforms-admin/django/core/serializers/json.py

    r7233 r7948  
    77from django.core.serializers.python import Serializer as PythonSerializer 
    88from django.core.serializers.python import Deserializer as PythonDeserializer 
     9from django.utils import datetime_safe 
    910try: 
    1011    from cStringIO import StringIO 
     
    2122    """ 
    2223    internal_use_only = False 
    23      
     24 
    2425    def end_serialization(self): 
    2526        self.options.pop('stream', None) 
     
    5253    def default(self, o): 
    5354        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)) 
    5557        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) 
    5760        elif isinstance(o, datetime.time): 
    5861            return o.strftime(self.TIME_FORMAT) 
  • django/branches/newforms-admin/django/core/validators.py

    r7853 r7948  
    142142    # produces much friendlier error messages. 
    143143    year, month, day = map(int, date_string.split('-')) 
    144     # This check is needed because strftime is used when saving the date 
    145     # 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.') 
    148144    try: 
    149145        date(year, month, day) 
     
    408404    Usage: If you create an instance of the IsPowerOf validator: 
    409405        v = IsAPowerOf(2) 
    410      
     406 
    411407    The following calls will succeed: 
    412         v(4, None)  
     408        v(4, None) 
    413409        v(8, None) 
    414410        v(16, None) 
    415      
     411 
    416412    But this call: 
    417413        v(17, None) 
  • django/branches/newforms-admin/django/db/backends/mysql/creation.py

    r6417 r7948  
    1414    'FilePathField':     'varchar(%(max_length)s)', 
    1515    'FloatField':        'double precision', 
    16     'ImageField':        'varchar(%(max_length)s)', 
    1716    'IntegerField':      'integer', 
    1817    'IPAddressField':    'char(15)', 
  • django/branches/newforms-admin/django/db/backends/mysql_old/creation.py

    r6417 r7948  
    1414    'FilePathField':     'varchar(%(max_length)s)', 
    1515    'FloatField':        'double precision', 
    16     'ImageField':        'varchar(%(max_length)s)', 
    1716    'IntegerField':      'integer', 
    1817    'IPAddressField':    'char(15)', 
  • django/branches/newforms-admin/django/db/backends/oracle/creation.py

    r7809 r7948  
    2121    'FilePathField':                'NVARCHAR2(%(max_length)s)', 
    2222    'FloatField':                   'DOUBLE PRECISION', 
    23     'ImageField':                   'NVARCHAR2(%(max_length)s)', 
    2423    'IntegerField':                 'NUMBER(11)', 
    2524    'IPAddressField':               'VARCHAR2(15)', 
  • django/branches/newforms-admin/django/db/backends/postgresql/creation.py

    r6417 r7948  
    1414    'FilePathField':     'varchar(%(max_length)s)', 
    1515    'FloatField':        'double precision', 
    16     'ImageField':        'varchar(%(max_length)s)', 
    1716    'IntegerField':      'integer', 
    1817    'IPAddressField':    'inet', 
  • django/branches/newforms-admin/django/db/backends/sqlite3/creation.py

    r6417 r7948  
    1313    'FilePathField':                'varchar(%(max_length)s)', 
    1414    'FloatField':                   'real', 
    15     'ImageField':                   'varchar(%(max_length)s)', 
    1615    'IntegerField':                 'integer', 
    1716    'IPAddressField':               'char(15)', 
  • django/branches/newforms-admin/django/db/models/fields/__init__.py

    r7922 r7948  
    2424from django.utils.encoding import smart_unicode, force_unicode, smart_str 
    2525from django.utils.maxlength import LegacyMaxlength 
     26from django.utils import datetime_safe 
    2627 
    2728class NOT_PROVIDED: 
     
    543544            value = [smart_unicode(v) for v in value] 
    544545        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') 
    546547        else: 
    547548            value = smart_unicode(value) 
     
    575576        if value is not None: 
    576577            try: 
    577                 value = value.strftime('%Y-%m-%d') 
     578                value = datetime_safe.new_date(value).strftime('%Y-%m-%d') 
    578579            except AttributeError: 
    579580                # If value is already a string it won't have a strftime method, 
     
    587588    def flatten_data(self, follow, obj=None): 
    588589        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} 
    590595 
    591596    def formfield(self, **kwargs): 
     
    654659        val = self._get_val_from_obj(obj) 
    655660        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} 
    658668 
    659669    def formfield(self, **kwargs): 
     
    918928            setattr(cls, 'get_%s_height' % self.name, curry(cls._get_FIELD_height, field=self)) 
    919929 
    920     def get_internal_type(self): 
    921         return "ImageField" 
    922  
    923930    def save_file(self, new_data, new_object, original_object, change, rel, save=True): 
    924931        FileField.save_file(self, new_data, new_object, original_object, change, rel, save) 
  • django/branches/newforms-admin/django/db/models/manipulators.py

    r6342 r7948  
    1010from django.utils.encoding import smart_str 
    1111from django.utils.translation import ugettext as _ 
     12from django.utils import datetime_safe 
    1213 
    1314def add_manipulators(sender): 
     
    328329        else: 
    329330            format_string = (lookup_type == 'date') and '%B %d, %Y' or '%B %Y' 
     331            date_val = datetime_safe.new_datetime(date_val) 
    330332            raise validators.ValidationError, "Please enter a different %s. The one you entered is already being used for %s." % \ 
    331333                (from_field.verbose_name, date_val.strftime(format_string)) 
  • django/branches/newforms-admin/django/newforms/widgets.py

    r7834 r7948  
    1616from django.utils.encoding import StrAndUnicode, force_unicode 
    1717from django.utils.safestring import mark_safe 
     18from django.utils import datetime_safe 
    1819from util import flatatt 
    1920from urlparse import urljoin 
     
    297298            value = '' 
    298299        elif hasattr(value, 'strftime'): 
     300            value = datetime_safe.new_datetime(value) 
    299301            value = value.strftime(self.format) 
    300302        return super(DateTimeInput, self).render(name, value, attrs) 
  • django/branches/newforms-admin/django/utils/tzinfo.py

    r7233 r7948  
    6161        try: 
    6262            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. 
    6674            tt = (2037,) + tt[1:] 
    6775            stamp = time.mktime(tt)