Django

Code

Changeset 5759

Show
Ignore:
Timestamp:
07/25/07 20:44:09 (1 year ago)
Author:
jbronn
Message:

gis: added get_placeholder() routine for the Field class; fixed bug in management _post_create_sql() hook and added _post_delete_sql() hook.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/gis/django/core/management.py

    r5540 r5759  
    383383                    output.append(backend.get_drop_sequence("%s_%s" % (model._meta.db_table, f.column))) 
    384384 
     385    # Any post deletion needed? (e.g., DropGeometryColumn() in PostGIS) 
     386    for model in app_models: 
     387        opts = model._meta 
     388        for f in opts.fields: 
     389            if hasattr(f, '_post_delete_sql'): 
     390                output.append(f._post_delete_sql(style, model._meta.db_table)) 
    385391 
    386392    app_label = app_models[0]._meta.app_label 
     
    417423    app_dir = os.path.normpath(os.path.join(os.path.dirname(models.get_app(model._meta.app_label).__file__), 'sql')) 
    418424    output = [] 
     425 
     426    # Post-creation SQL should come before any initial SQL data is loaded. 
     427    for f in opts.fields: 
     428        if hasattr(f, '_post_create_sql'): 
     429            output.append(f._post_create_sql(style, model._meta.db_table)) 
    419430 
    420431    # Some backends can't execute more than one SQL statement at a time, 
     
    434445                    output.append(statement + ";") 
    435446            fp.close() 
    436  
    437     for f in opts.fields: 
    438         if hasattr(f, '_post_create_sql'): 
    439             output.append(f._post_create_sql(style, model._meta.db_table)) 
    440447 
    441448    return output 
  • django/branches/gis/django/db/models/base.py

    r5540 r5759  
    228228            field_names = [backend.quote_name(f.column) for f in self._meta.fields if not isinstance(f, AutoField)] 
    229229            db_values = [f.get_db_prep_save(f.pre_save(self, True)) for f in self._meta.fields if not isinstance(f, AutoField)] 
     230            placeholders = [f.get_placeholder(f.pre_save(self, True)) for f in self._meta.fields if not isinstance(f, AutoField)] 
    230231            # If the PK has been manually set, respect that. 
    231232            if pk_set: 
    232233                field_names += [f.column for f in self._meta.fields if isinstance(f, AutoField)] 
    233234                db_values += [f.get_db_prep_save(f.pre_save(self, True)) for f in self._meta.fields if isinstance(f, AutoField)] 
    234             placeholders = ['%s'] * len(field_names) 
     235                placeholders += [f.get_placeholder(f.pre_save(self, True)) for f in self._meta.fields if isinstance(f, AutoField)] 
    235236            if self._meta.order_with_respect_to: 
    236237                field_names.append(backend.quote_name('_order')) 
  • django/branches/gis/django/db/models/fields/__init__.py

    r5583 r5759  
    217217        return [name_prefix + self.name] 
    218218 
     219    def get_placeholder(self, value): 
     220        "Returns the placeholder substitution string for the field with the given value." 
     221        return '%s' 
     222 
    219223    def prepare_field_objs_and_params(self, manipulator, name_prefix): 
    220224        params = {'validator_list': self.validator_list[:]}