Django

Code

Show
Ignore:
Timestamp:
08/06/07 11:50:17 (1 year ago)
Author:
danderson
Message:

schema-evolution: update from HEAD (v5821)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/schema-evolution/django/db/backends/ado_mssql/creation.py

    r5734 r5822  
    22    'AutoField':         'int IDENTITY (1, 1)', 
    33    'BooleanField':      'bit', 
    4     'CharField':         'varchar(%(maxlength)s)', 
    5     'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)', 
     4    'CharField':         'varchar(%(max_length)s)', 
     5    'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', 
    66    'DateField':         'smalldatetime', 
    77    'DateTimeField':     'smalldatetime', 
     
    1818    'PositiveIntegerField': 'int CONSTRAINT [CK_int_pos_%(column)s] CHECK ([%(column)s] > 0)', 
    1919    'PositiveSmallIntegerField': 'smallint CONSTRAINT [CK_smallint_pos_%(column)s] CHECK ([%(column)s] > 0)', 
    20     'SlugField':         'varchar(%(maxlength)s)', 
     20    'SlugField':         'varchar(%(max_length)s)', 
    2121    'SmallIntegerField': 'smallint', 
    2222    'TextField':         'text', 
  • django/branches/schema-evolution/django/db/backends/mysql/creation.py

    r5734 r5822  
    66    'AutoField':         'integer AUTO_INCREMENT', 
    77    'BooleanField':      'bool', 
    8     'CharField':         'varchar(%(maxlength)s)', 
    9     'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)', 
     8    'CharField':         'varchar(%(max_length)s)', 
     9    'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', 
    1010    'DateField':         'date', 
    1111    'DateTimeField':     'datetime', 
     
    2222    'PositiveIntegerField': 'integer UNSIGNED', 
    2323    'PositiveSmallIntegerField': 'smallint UNSIGNED', 
    24     'SlugField':         'varchar(%(maxlength)s)', 
     24    'SlugField':         'varchar(%(max_length)s)', 
    2525    'SmallIntegerField': 'smallint', 
    2626    'TextField':         'longtext', 
  • django/branches/schema-evolution/django/db/backends/mysql_old/creation.py

    r5734 r5822  
    66    'AutoField':         'integer AUTO_INCREMENT', 
    77    'BooleanField':      'bool', 
    8     'CharField':         'varchar(%(maxlength)s)', 
    9     'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)', 
     8    'CharField':         'varchar(%(max_length)s)', 
     9    'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', 
    1010    'DateField':         'date', 
    1111    'DateTimeField':     'datetime', 
     
    2222    'PositiveIntegerField': 'integer UNSIGNED', 
    2323    'PositiveSmallIntegerField': 'smallint UNSIGNED', 
    24     'SlugField':         'varchar(%(maxlength)s)', 
     24    'SlugField':         'varchar(%(max_length)s)', 
    2525    'SmallIntegerField': 'smallint', 
    2626    'TextField':         'longtext', 
  • django/branches/schema-evolution/django/db/backends/oracle/creation.py

    r5734 r5822  
    99    'AutoField':                    'NUMBER(11)', 
    1010    'BooleanField':                 'NUMBER(1) CHECK (%(column)s IN (0,1))', 
    11     'CharField':                    'NVARCHAR2(%(maxlength)s)', 
    12     'CommaSeparatedIntegerField':   'VARCHAR2(%(maxlength)s)', 
     11    'CharField':                    'NVARCHAR2(%(max_length)s)', 
     12    'CommaSeparatedIntegerField':   'VARCHAR2(%(max_length)s)', 
    1313    'DateField':                    'DATE', 
    1414    'DateTimeField':                'TIMESTAMP', 
  • django/branches/schema-evolution/django/db/backends/postgresql/creation.py

    r5734 r5822  
    66    'AutoField':         'serial', 
    77    'BooleanField':      'boolean', 
    8     'CharField':         'varchar(%(maxlength)s)', 
    9     'CommaSeparatedIntegerField': 'varchar(%(maxlength)s)', 
     8    'CharField':         'varchar(%(max_length)s)', 
     9    'CommaSeparatedIntegerField': 'varchar(%(max_length)s)', 
    1010    'DateField':         'date', 
    1111    'DateTimeField':     'timestamp with time zone', 
     
    2222    'PositiveIntegerField': 'integer CHECK ("%(column)s" >= 0)', 
    2323    'PositiveSmallIntegerField': 'smallint CHECK ("%(column)s" >= 0)', 
    24     'SlugField':         'varchar(%(maxlength)s)', 
     24    'SlugField':         'varchar(%(max_length)s)', 
    2525    'SmallIntegerField': 'smallint', 
    2626    'TextField':         'text', 
  • django/branches/schema-evolution/django/db/backends/sqlite3/creation.py

    r5734 r5822  
    55    'AutoField':                    'integer', 
    66    'BooleanField':                 'bool', 
    7     'CharField':                    'varchar(%(maxlength)s)', 
    8     'CommaSeparatedIntegerField':   'varchar(%(maxlength)s)', 
     7    'CharField':                    'varchar(%(max_length)s)', 
     8    'CommaSeparatedIntegerField':   'varchar(%(max_length)s)', 
    99    'DateField':                    'date', 
    1010    'DateTimeField':                'datetime', 
     
    2121    'PositiveIntegerField':         'integer unsigned', 
    2222    'PositiveSmallIntegerField':    'smallint unsigned', 
    23     'SlugField':                    'varchar(%(maxlength)s)', 
     23    'SlugField':                    'varchar(%(max_length)s)', 
    2424    'SmallIntegerField':            'smallint', 
    2525    'TextField':                    'text', 
  • django/branches/schema-evolution/django/db/backends/sqlite3/introspection.py

    r5787 r5822  
    138138            m = re.search(r'^\s*(?:var)?char\s*\(\s*(\d+)\s*\)\s*$', key) 
    139139            if m: 
    140                 return ('CharField', {'maxlength': int(m.group(1))}) 
     140                return ('CharField', {'max_length': int(m.group(1))}) 
    141141            raise KeyError 
    142142 
  • django/branches/schema-evolution/django/db/models/fields/__init__.py

    r5788 r5822  
    1212from django.utils.translation import ugettext_lazy, ugettext as _ 
    1313from django.utils.encoding import smart_unicode, force_unicode, smart_str 
     14from django.utils.maxlength import LegacyMaxlength 
    1415import datetime, os, time 
    1516try: 
     
    6465 
    6566class Field(object): 
     67    # Provide backwards compatibility for the maxlength attribute and 
     68    # argument for this class and all subclasses. 
     69    __metaclass__ = LegacyMaxlength 
    6670 
    6771    # Designates whether empty strings fundamentally are allowed at the 
     
    7377 
    7478    def __init__(self, verbose_name=None, name=None, primary_key=False, 
    75         maxlength=None, unique=False, blank=False, null=False, db_index=False, 
     79        max_length=None, unique=False, blank=False, null=False, db_index=False, 
    7680        core=False, rel=None, default=NOT_PROVIDED, editable=True, serialize=True, 
    7781        prepopulate_from=None, unique_for_date=None, unique_for_month=None, 
     
    8185        self.verbose_name = verbose_name 
    8286        self.primary_key = primary_key 
    83         self.maxlength, self.unique = maxlength, unique 
     87        self.max_length, self.unique = max_length, unique 
    8488        self.blank, self.null = blank, null 
    8589        # Oracle treats the empty string ('') as null, so coerce the null 
     
    246250    def prepare_field_objs_and_params(self, manipulator, name_prefix): 
    247251        params = {'validator_list': self.validator_list[:]} 
    248         if self.maxlength and not self.choices: # Don't give SelectFields a maxlength parameter. 
    249             params['maxlength'] = self.maxlength 
     252        if self.max_length and not self.choices: # Don't give SelectFields a max_length parameter. 
     253            params['max_length'] = self.max_length 
    250254 
    251255        if self.choices: 
     
    378382    choices = property(_get_choices) 
    379383 
     384    def save_form_data(self, instance, data): 
     385        setattr(instance, self.name, data) 
     386         
    380387    def formfield(self, form_class=forms.CharField, **kwargs): 
    381388        "Returns a django.newforms.Field instance for this database Field." 
     
    463470 
    464471    def formfield(self, **kwargs): 
    465         defaults = {'max_length': self.maxlength} 
     472        defaults = {'max_length': self.max_length} 
    466473        defaults.update(kwargs) 
    467474        return super(CharField, self).formfield(**defaults) 
     
    672679class EmailField(CharField): 
    673680    def __init__(self, *args, **kwargs): 
    674         kwargs['maxlength'] = 75 
     681        kwargs['max_length'] = 75 
    675682        CharField.__init__(self, *args, **kwargs) 
    676683 
     
    693700        self.upload_to = upload_to 
    694701        Field.__init__(self, verbose_name, name, **kwargs) 
     702 
     703    def get_db_prep_save(self, value): 
     704        "Returns field's value prepared for saving into a database." 
     705        # Need to convert UploadedFile objects provided via a form to unicode for database insertion 
     706        if value is None: 
     707            return None 
     708        return unicode(value) 
    695709 
    696710    def get_manipulator_fields(self, opts, manipulator, change, name_prefix='', rel=False, follow=True): 
     
    770784        return os.path.normpath(f) 
    771785 
     786    def save_form_data(self, instance, data): 
     787        if data: 
     788            getattr(instance, "save_%s_file" % self.name)(os.path.join(self.upload_to, data.filename), data.content, save=False) 
     789         
     790    def formfield(self, **kwargs): 
     791        defaults = {'form_class': forms.FileField} 
     792        # If a file has been provided previously, then the form doesn't require  
     793        # that a new file is provided this time. 
     794        if 'initial' in kwargs: 
     795            defaults['required'] = False 
     796        defaults.update(kwargs) 
     797        return super(FileField, self).formfield(**defaults) 
     798 
    772799class FilePathField(Field): 
    773800    def __init__(self, verbose_name=None, name=None, path='', match=None, recursive=False, **kwargs): 
     
    818845            new_object.save() 
    819846 
     847    def formfield(self, **kwargs): 
     848        defaults = {'form_class': forms.ImageField} 
     849        return super(ImageField, self).formfield(**defaults) 
     850 
    820851class IntegerField(Field): 
    821852    empty_strings_allowed = False 
     
    831862    empty_strings_allowed = False 
    832863    def __init__(self, *args, **kwargs): 
    833         kwargs['maxlength'] = 15 
     864        kwargs['max_length'] = 15 
    834865        Field.__init__(self, *args, **kwargs) 
    835866 
     
    879910class SlugField(Field): 
    880911    def __init__(self, *args, **kwargs): 
    881         kwargs['maxlength'] = kwargs.get('maxlength', 50) 
     912        kwargs['max_length'] = kwargs.get('max_length', 50) 
    882913        kwargs.setdefault('validator_list', []).append(validators.isSlug) 
    883914        # Set db_index=True unless it's been set manually. 
     
    965996class URLField(CharField): 
    966997    def __init__(self, verbose_name=None, name=None, verify_exists=True, **kwargs): 
    967         kwargs['maxlength'] = kwargs.get('maxlength', 200) 
     998        kwargs['max_length'] = kwargs.get('max_length', 200) 
    968999        if verify_exists: 
    9691000            kwargs.setdefault('validator_list', []).append(validators.isExistingURL) 
  • django/branches/schema-evolution/django/db/models/fields/related.py

    r5734 r5822  
    757757        return getattr(obj, self.attname).all() 
    758758 
     759    def save_form_data(self, instance, data): 
     760        setattr(instance, self.attname, data) 
     761         
    759762    def formfield(self, **kwargs): 
    760763        defaults = {'form_class': forms.ModelMultipleChoiceField, 'queryset': self.rel.to._default_manager.all()}