Django

Code

Ticket #1443: 1443_updated.diff

File 1443_updated.diff, 4.2 kB (added by PhiR, 10 months ago)

updated patch against [7322]

  • django/db/models/fields/__init__.py

    old new  
    562562        # Casts dates into string format for entry into database. 
    563563        if value is not None: 
    564564            try: 
    565                 value = value.strftime('%Y-%m-%d') 
     565                value = "%04.d-%02.d-%02.d" % (value.year,value.month,value.day) # "%Y-%m-%d 
    566566            except AttributeError: 
    567567                # If value is already a string it won't have a strftime method, 
    568568                # so we'll just let it pass through. 
     
    574574 
    575575    def flatten_data(self, follow, obj=None): 
    576576        val = self._get_val_from_obj(obj) 
    577         return {self.attname: (val is not None and val.strftime("%Y-%m-%d") or '')} 
     577        return {self.attname: (val is not None and ("%04.d-%02.d-%02.d" % (val.year,val.month,val.day)) or '')} 
    578578 
    579579    def formfield(self, **kwargs): 
    580580        defaults = {'form_class': forms.DateField} 
  • django/core/serializers/json.py

    old new  
    4646    JSONEncoder subclass that knows how to encode date/time and decimal types. 
    4747    """ 
    4848 
    49     DATE_FORMAT = "%Y-%m-%d" 
    50     TIME_FORMAT = "%H:%M:%S" 
     49    DATE_FORMAT = "%04.d-%02.d-%02.d" # %Y-%m-%d 
     50    TIME_FORMAT = "%02.d:%02.d:%02.d" # %H:%M:%S 
    5151 
    5252    def default(self, o): 
    5353        if isinstance(o, datetime.datetime): 
    54             return o.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT)) 
     54            fmt = "%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT) 
     55            return fmt % (o.year, o.month, o.day, o.hour, o.minute, o.second) 
    5556        elif isinstance(o, datetime.date): 
    56             return o.strftime(self.DATE_FORMAT
     57            return self.DATE_FORMAT % (o.year, o.month, o.day
    5758        elif isinstance(o, datetime.time): 
    58             return o.strftime(self.TIME_FORMAT
     59            return self.TIME_FORMAT % (o.hour, o.minute, o.second
    5960        elif isinstance(o, decimal.Decimal): 
    6061            return str(o) 
    6162        else: 
  • django/core/serializers/base.py

    old new  
    5959        Convert a field's value to a string. 
    6060        """ 
    6161        if isinstance(field, models.DateTimeField): 
    62             value = getattr(obj, field.name).strftime("%Y-%m-%d %H:%M:%S") 
     62            dt = getattr(obj, field.name) 
     63            value =  "%04.d-%02.d-%02.d %02.d:%02.d:%02.d" % (dt.year,dt.month,dt.day,dt.hour, dt.minute, dt.second) 
    6364        else: 
    6465            value = field.flatten_data(follow=None, obj=obj).get(field.name, "") 
    6566        return smart_unicode(value) 
  • django/core/validators.py

    old new  
    141141    # Could use time.strptime here and catch errors, but datetime.date below 
    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.') 
     144 
    148145    try: 
    149146        date(year, month, day) 
    150147    except ValueError, e: 
  • tests/regressiontests/serializers_regress/tests.py

    old new  
    255255 
    256256    (data_obj, 800, AutoNowDateTimeData, datetime.datetime(2006,6,16,10,42,37)), 
    257257    (data_obj, 810, ModifyingSaveData, 42), 
     258 
     259    (data_obj, 900, DateTimeData, datetime.datetime(1,1,1,0,0,0)), 
     260    (data_obj, 901, DateData, datetime.date(2,2,2)), 
    258261] 
    259262 
    260263# Because Oracle treats the empty string as NULL, Oracle is expected to fail