Changeset 4937
- Timestamp:
- 04/05/07 21:25:58 (2 years ago)
- Files:
-
- django/trunk/AUTHORS (modified) (1 diff)
- django/trunk/django/core/management.py (modified) (5 diffs)
- django/trunk/django/db/backends/ado_mssql/base.py (modified) (1 diff)
- django/trunk/django/db/backends/dummy/base.py (modified) (1 diff)
- django/trunk/django/db/backends/mysql/base.py (modified) (1 diff)
- django/trunk/django/db/backends/mysql_old/base.py (modified) (1 diff)
- django/trunk/django/db/backends/oracle/base.py (modified) (1 diff)
- django/trunk/django/db/backends/postgresql/base.py (modified) (1 diff)
- django/trunk/django/db/backends/postgresql_psycopg2/base.py (modified) (1 diff)
- django/trunk/django/db/backends/sqlite3/base.py (modified) (1 diff)
- django/trunk/docs/django-admin.txt (modified) (1 diff)
- django/trunk/tests/regressiontests/fixtures_regress (added)
- django/trunk/tests/regressiontests/fixtures_regress/fixtures (added)
- django/trunk/tests/regressiontests/fixtures_regress/fixtures/sequence.json (added)
- django/trunk/tests/regressiontests/fixtures_regress/__init__.py (added)
- django/trunk/tests/regressiontests/fixtures_regress/models.py (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/AUTHORS
r4920 r4937 193 193 Tyson Tate <tyson@fallingbullets.com> 194 194 thebjorn <bp@datakortet.no> 195 Zach Thompson <zthompson47@gmail.com> 195 196 Tom Tobin 196 197 Joe Topjian <http://joe.terrarum.net/geek/code/python/django/> django/trunk/django/core/management.py
r4835 r4937 411 411 412 412 def get_sql_sequence_reset(app): 413 "Returns a list of the SQL statements to reset PostgreSQLsequences for the given app."413 "Returns a list of the SQL statements to reset sequences for the given app." 414 414 from django.db import backend, models 415 output = [] 416 for model in models.get_models(app): 417 for f in model._meta.fields: 418 if isinstance(f, models.AutoField): 419 output.append("%s setval('%s', (%s max(%s) %s %s));" % \ 420 (style.SQL_KEYWORD('SELECT'), 421 style.SQL_FIELD('%s_%s_seq' % (model._meta.db_table, f.column)), 422 style.SQL_KEYWORD('SELECT'), 423 style.SQL_FIELD(backend.quote_name(f.column)), 424 style.SQL_KEYWORD('FROM'), 425 style.SQL_TABLE(backend.quote_name(model._meta.db_table)))) 426 break # Only one AutoField is allowed per model, so don't bother continuing. 427 for f in model._meta.many_to_many: 428 output.append("%s setval('%s', (%s max(%s) %s %s));" % \ 429 (style.SQL_KEYWORD('SELECT'), 430 style.SQL_FIELD('%s_id_seq' % f.m2m_db_table()), 431 style.SQL_KEYWORD('SELECT'), 432 style.SQL_FIELD(backend.quote_name('id')), 433 style.SQL_KEYWORD('FROM'), 434 style.SQL_TABLE(f.m2m_db_table()))) 435 return output 436 get_sql_sequence_reset.help_doc = "Prints the SQL statements for resetting PostgreSQL sequences for the given app name(s)." 415 return backend.get_sql_sequence_reset(style, models.get_models(app)) 416 get_sql_sequence_reset.help_doc = "Prints the SQL statements for resetting sequences for the given app name(s)." 437 417 get_sql_sequence_reset.args = APP_ARGS 438 418 … … 1334 1314 from django.db.models import get_apps 1335 1315 from django.core import serializers 1336 from django.db import connection, transaction 1316 from django.db import connection, transaction, backend 1337 1317 from django.conf import settings 1338 1318 import sys … … 1340 1320 # Keep a count of the installed objects and fixtures 1341 1321 count = [0,0] 1342 1322 models = set() 1323 1343 1324 humanize = lambda dirname: dirname and "'%s'" % dirname or 'absolute path' 1344 1325 … … 1402 1383 for obj in objects: 1403 1384 count[0] += 1 1385 models.add(obj.object.__class__) 1404 1386 obj.save() 1405 1387 label_found = True … … 1423 1405 if verbosity > 0: 1424 1406 print "Installed %d object(s) from %d fixture(s)" % tuple(count) 1407 sequence_sql = backend.get_sql_sequence_reset(style, models) 1408 if sequence_sql: 1409 if verbosity > 1: 1410 print "Resetting sequences" 1411 for line in sequence_sql: 1412 cursor.execute(line) 1425 1413 transaction.commit() 1426 1414 transaction.leave_transaction_management() django/trunk/django/db/backends/ado_mssql/base.py
r4691 r4937 152 152 ) for table in full_table_list] 153 153 154 def get_sql_sequence_reset(style, model_list): 155 "Returns a list of the SQL statements to reset sequences for the given models." 156 # No sequence reset required 157 return [] 158 154 159 OPERATOR_MAPPING = { 155 160 'exact': '= %s', django/trunk/django/db/backends/dummy/base.py
r4659 r4937 41 41 get_drop_foreignkey_sql = complain 42 42 get_sql_flush = complain 43 get_sql_sequence_reset = complain 43 44 44 45 OPERATOR_MAPPING = {} django/trunk/django/db/backends/mysql/base.py
r4760 r4937 216 216 return [] 217 217 218 def get_sql_sequence_reset(style, model_list): 219 "Returns a list of the SQL statements to reset sequences for the given models." 220 # No sequence reset required 221 return [] 222 218 223 OPERATOR_MAPPING = { 219 224 'exact': '= %s', django/trunk/django/db/backends/mysql_old/base.py
r4767 r4937 218 218 return [] 219 219 220 def get_sql_sequence_reset(style, model_list): 221 "Returns a list of the SQL statements to reset sequences for the given models." 222 # No sequence reset required 223 return [] 224 220 225 OPERATOR_MAPPING = { 221 226 'exact': '= %s', django/trunk/django/db/backends/oracle/base.py
r4691 r4937 135 135 ) for table in tables] 136 136 137 def get_sql_sequence_reset(style, model_list): 138 "Returns a list of the SQL statements to reset sequences for the given models." 139 # No sequence reset required 140 return [] 137 141 138 142 OPERATOR_MAPPING = { django/trunk/django/db/backends/postgresql/base.py
r4691 r4937 214 214 return [] 215 215 216 def get_sql_sequence_reset(style, model_list): 217 "Returns a list of the SQL statements to reset sequences for the given models." 218 from django.db import models 219 output = [] 220 for model in model_list: 221 for f in model._meta.fields: 222 if isinstance(f, models.AutoField): 223 output.append("%s setval('%s', (%s max(%s) %s %s));" % \ 224 (style.SQL_KEYWORD('SELECT'), 225 style.SQL_FIELD('%s_%s_seq' % (model._meta.db_table, f.column)), 226 style.SQL_KEYWORD('SELECT'), 227 style.SQL_FIELD(quote_name(f.column)), 228 style.SQL_KEYWORD('FROM'), 229 style.SQL_TABLE(quote_name(model._meta.db_table)))) 230 break # Only one AutoField is allowed per model, so don't bother continuing. 231 for f in model._meta.many_to_many: 232 output.append("%s setval('%s', (%s max(%s) %s %s));" % \ 233 (style.SQL_KEYWORD('SELECT'), 234 style.SQL_FIELD('%s_id_seq' % f.m2m_db_table()), 235 style.SQL_KEYWORD('SELECT'), 236 style.SQL_FIELD(quote_name('id')), 237 style.SQL_KEYWORD('FROM'), 238 style.SQL_TABLE(f.m2m_db_table()))) 239 return output 216 240 217 241 # Register these custom typecasts, because Django expects dates/times to be django/trunk/django/db/backends/postgresql_psycopg2/base.py
r4691 r4937 170 170 else: 171 171 return [] 172 173 def get_sql_sequence_reset(style, model_list): 174 "Returns a list of the SQL statements to reset sequences for the given models." 175 from django.db import models 176 output = [] 177 for model in model_list: 178 for f in model._meta.fields: 179 if isinstance(f, models.AutoField): 180 output.append("%s setval('%s', (%s max(%s) %s %s));" % \ 181 (style.SQL_KEYWORD('SELECT'), 182 style.SQL_FIELD('%s_%s_seq' % (model._meta.db_table, f.column)), 183 style.SQL_KEYWORD('SELECT'), 184 style.SQL_FIELD(quote_name(f.column)), 185 style.SQL_KEYWORD('FROM'), 186 style.SQL_TABLE(quote_name(model._meta.db_table)))) 187 break # Only one AutoField is allowed per model, so don't bother continuing. 188 for f in model._meta.many_to_many: 189 output.append("%s setval('%s', (%s max(%s) %s %s));" % \ 190 (style.SQL_KEYWORD('SELECT'), 191 style.SQL_FIELD('%s_id_seq' % f.m2m_db_table()), 192 style.SQL_KEYWORD('SELECT'), 193 style.SQL_FIELD(quote_name('id')), 194 style.SQL_KEYWORD('FROM'), 195 style.SQL_TABLE(f.m2m_db_table()))) 196 return output 172 197 173 198 OPERATOR_MAPPING = { django/trunk/django/db/backends/sqlite3/base.py
r4691 r4937 171 171 return sql 172 172 173 def get_sql_sequence_reset(style, model_list): 174 "Returns a list of the SQL statements to reset sequences for the given models." 175 # No sequence reset required 176 return [] 177 173 178 def _sqlite_date_trunc(lookup_type, dt): 174 179 try: django/trunk/docs/django-admin.txt
r4818 r4937 367 367 ---------------------------------------------- 368 368 369 Prints the SQL statements for resetting PostgreSQLsequences for the given369 Prints the SQL statements for resetting sequences for the given 370 370 appnames. 371 371
