Permalink
Browse files

magic-removal: Fixed #1259 -- This is VERY backwards-incompatible! No…

…rmalized all table names to be singular. Added 'django_' prefix to core tables that didn't have it. Thanks, Tom Tobin.

git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2111 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
1 parent 75c4013 commit e8b570c3c6a745cdc215af228274b7c35d217517 @adrianholovaty adrianholovaty committed Jan 23, 2006
@@ -132,7 +132,7 @@ def get_group_permissions(self):
# The SQL below works out to the following, after DB quoting:
# cursor.execute("""
# SELECT p.package, p.codename
- # FROM auth_permissions p, auth_groups_permissions gp, auth_users_groups ug
+ # FROM auth_permission p, auth_group_permissions gp, auth_user_groups ug
# WHERE p.id = gp.permission_id
# AND gp.group_id = ug.group_id
# AND ug.user_id = %s""", [self.id])
@@ -143,7 +143,7 @@ def get_group_permissions(self):
AND gp.%s = ug.%s
AND ug.%s = %%s""" % (
backend.quote_name('package'), backend.quote_name('codename'),
- backend.quote_name('auth_permissions'), backend.quote_name('auth_groups_permissions'),
+ backend.quote_name('auth_permission'), backend.quote_name('auth_group_permissions'),
backend.quote_name('auth_users_groups'), backend.quote_name('id'),
backend.quote_name('permission_id'), backend.quote_name('group_id'),
backend.quote_name('group_id'), backend.quote_name('user_id'))
@@ -86,7 +86,6 @@ class Comment(models.Model):
site = models.ForeignKey(Site)
objects = CommentManager()
class Meta:
- db_table = 'comments'
verbose_name = _('Comment')
verbose_name_plural = _('Comments')
ordering = ('-submit_date',)
@@ -173,7 +172,6 @@ class FreeComment(models.Model):
approved = models.BooleanField(_('approved by staff'))
site = models.ForeignKey(Site)
class Meta:
- db_table = 'comments_free'
verbose_name = _('Free comment')
verbose_name_plural = _('Free comments')
ordering = ('-submit_date',)
@@ -266,7 +264,6 @@ class UserFlag(models.Model):
flag_date = models.DateTimeField(_('flag date'), auto_now_add=True)
objects = UserFlagManager()
class Meta:
- db_table = 'comments_user_flags'
verbose_name = _('User flag')
verbose_name_plural = _('User flags')
unique_together = (('user', 'comment'),)
@@ -279,7 +276,6 @@ class ModeratorDeletion(models.Model):
comment = models.ForeignKey(Comment)
deletion_date = models.DateTimeField(_('deletion date'), auto_now_add=True)
class Meta:
- db_table = 'comments_moderator_deletions'
verbose_name = _('Moderator deletion')
verbose_name_plural = _('Moderator deletions')
unique_together = (('user', 'comment'),)
@@ -7,7 +7,7 @@ class Package(models.Model):
class Meta:
verbose_name = _('package')
verbose_name_plural = _('packages')
- db_table = 'packages'
+ db_table = 'django_package'
ordering = ('name',)
def __repr__(self):
@@ -20,7 +20,7 @@ class ContentType(models.Model):
class Meta:
verbose_name = _('content type')
verbose_name_plural = _('content types')
- db_table = 'content_types'
+ db_table = 'django_content_type'
ordering = ('package', 'name')
unique_together = (('package', 'python_module_name'),)
@@ -14,7 +14,7 @@ class FlatPage(models.Model):
registration_required = models.BooleanField(_('registration required'), help_text=_("If this is checked, only logged-in users will be able to view the page."))
sites = models.ManyToManyField(Site)
class Meta:
- db_table = 'django_flatpages'
+ db_table = 'django_flatpage'
verbose_name = _('flat page')
verbose_name_plural = _('flat pages')
ordering = ('url',)
@@ -11,7 +11,7 @@ class Redirect(models.Model):
class Meta:
verbose_name = _('redirect')
verbose_name_plural = _('redirects')
- db_table = 'django_redirects'
+ db_table = 'django_redirect'
unique_together=(('site', 'old_path'),)
ordering = ('old_path',)
class Admin:
@@ -37,7 +37,7 @@ class Session(models.Model):
expire_date = models.DateTimeField(_('expire date'))
objects = SessionManager()
class Meta:
- db_table = 'django_sessions'
+ db_table = 'django_session'
verbose_name = _('session')
verbose_name_plural = _('sessions')
module_constants = {
@@ -11,7 +11,7 @@ class Site(models.Model):
name = models.CharField(_('display name'), maxlength=50)
objects = SiteManager()
class Meta:
- db_table = 'sites'
+ db_table = 'django_site'
verbose_name = _('site')
verbose_name_plural = _('sites')
ordering = ('domain',)
View
@@ -29,7 +29,7 @@
def _get_packages_insert(app_label):
from django.db import backend
return "INSERT INTO %s (%s, %s) VALUES ('%s', '%s');" % \
- (backend.quote_name('packages'), backend.quote_name('label'), backend.quote_name('name'),
+ (backend.quote_name('django_package'), backend.quote_name('label'), backend.quote_name('name'),
app_label, app_label)
def _get_permission_codename(action, opts):
@@ -46,13 +46,13 @@ def _get_all_permissions(opts):
def _get_permission_insert(name, codename, opts):
from django.db import backend
return "INSERT INTO %s (%s, %s, %s) VALUES ('%s', '%s', '%s');" % \
- (backend.quote_name('auth_permissions'), backend.quote_name('name'), backend.quote_name('package'),
+ (backend.quote_name('auth_permission'), backend.quote_name('name'), backend.quote_name('package'),
backend.quote_name('codename'), name.replace("'", "''"), opts.app_label, codename)
def _get_contenttype_insert(opts):
from django.db import backend
return "INSERT INTO %s (%s, %s, %s) VALUES ('%s', '%s', '%s');" % \
- (backend.quote_name('content_types'), backend.quote_name('name'), backend.quote_name('package'),
+ (backend.quote_name('django_content_type'), backend.quote_name('name'), backend.quote_name('package'),
backend.quote_name('python_module_name'), opts.verbose_name, opts.app_label, opts.module_name)
def _is_valid_dir_name(s):
@@ -249,18 +249,18 @@ def get_sql_delete(app):
app_label = app_models[0]._meta.app_label
- # Delete from packages, auth_permissions, content_types.
+ # Delete from django_package, auth_permission, django_content_type.
output.append("DELETE FROM %s WHERE %s = '%s';" % \
- (backend.quote_name('packages'), backend.quote_name('label'), app_label))
+ (backend.quote_name('django_package'), backend.quote_name('label'), app_label))
output.append("DELETE FROM %s WHERE %s = '%s';" % \
- (backend.quote_name('auth_permissions'), backend.quote_name('package'), app_label))
+ (backend.quote_name('auth_permission'), backend.quote_name('package'), app_label))
output.append("DELETE FROM %s WHERE %s = '%s';" % \
- (backend.quote_name('content_types'), backend.quote_name('package'), app_label))
+ (backend.quote_name('django_content_type'), backend.quote_name('package'), app_label))
# Delete from the admin log.
if cursor is not None:
cursor.execute("SELECT %s FROM %s WHERE %s = %%s" % \
- (backend.quote_name('id'), backend.quote_name('content_types'),
+ (backend.quote_name('id'), backend.quote_name('django_content_type'),
backend.quote_name('package')), [app_label])
if admin_log_exists:
for row in cursor.fetchall():
@@ -373,7 +373,7 @@ def database_check(app):
# Check that the package exists in the database.
cursor.execute("SELECT 1 FROM %s WHERE %s = %%s" % \
- (backend.quote_name('packages'), backend.quote_name('label')), [app_label])
+ (backend.quote_name('django_package'), backend.quote_name('label')), [app_label])
if has_no_records(cursor):
# sys.stderr.write("The '%s' package isn't installed.\n" % app_label)
print _get_packages_insert(app_label)
@@ -388,13 +388,13 @@ def database_check(app):
contenttypes_seen[opts.module_name] = 1
for codename, name in perms:
cursor.execute("SELECT 1 FROM %s WHERE %s = %%s AND %s = %%s" % \
- (backend.quote_name('auth_permissions'), backend.quote_name('package'),
+ (backend.quote_name('auth_permission'), backend.quote_name('package'),
backend.quote_name('codename')), (app_label, codename))
if has_no_records(cursor):
# sys.stderr.write("The '%s.%s' permission doesn't exist.\n" % (app_label, codename))
print _get_permission_insert(name, codename, opts)
cursor.execute("SELECT 1 FROM %s WHERE %s = %%s AND %s = %%s" % \
- (backend.quote_name('content_types'), backend.quote_name('package'),
+ (backend.quote_name('django_content_type'), backend.quote_name('package'),
backend.quote_name('python_module_name')), (app_label, opts.module_name))
if has_no_records(cursor):
# sys.stderr.write("The '%s.%s' content type doesn't exist.\n" % (app_label, opts.module_name))
@@ -403,29 +403,29 @@ def database_check(app):
# Check that there aren't any *extra* permissions in the DB that the model
# doesn't know about.
cursor.execute("SELECT %s FROM %s WHERE %s = %%s" % \
- (backend.quote_name('codename'), backend.quote_name('auth_permissions'),
+ (backend.quote_name('codename'), backend.quote_name('auth_permission'),
backend.quote_name('package')), (app_label,))
for row in cursor.fetchall():
try:
perms_seen[row[0]]
except KeyError:
# sys.stderr.write("A permission called '%s.%s' was found in the database but not in the model.\n" % (app_label, row[0]))
print "DELETE FROM %s WHERE %s='%s' AND %s = '%s';" % \
- (backend.quote_name('auth_permissions'), backend.quote_name('package'),
+ (backend.quote_name('auth_permission'), backend.quote_name('package'),
app_label, backend.quote_name('codename'), row[0])
# Check that there aren't any *extra* content types in the DB that the
# model doesn't know about.
cursor.execute("SELECT %s FROM %s WHERE %s = %%s" % \
- (backend.quote_name('python_module_name'), backend.quote_name('content_types'),
+ (backend.quote_name('python_module_name'), backend.quote_name('django_content_type'),
backend.quote_name('package')), (app_label,))
for row in cursor.fetchall():
try:
contenttypes_seen[row[0]]
except KeyError:
# sys.stderr.write("A content type called '%s.%s' was found in the database but not in the model.\n" % (app_label, row[0]))
print "DELETE FROM %s WHERE %s='%s' AND %s = '%s';" % \
- (backend.quote_name('content_types'), backend.quote_name('package'),
+ (backend.quote_name('django_content_type'), backend.quote_name('package'),
app_label, backend.quote_name('python_module_name'), row[0])
database_check.help_doc = "Checks that everything is installed in the database for the given model module name(s) and prints SQL statements if needed."
database_check.args = APP_ARGS
@@ -6,8 +6,8 @@
from bisect import bisect
import re
-# Calculate the module_name using a poor-man's pluralization.
-get_module_name = lambda class_name: class_name.lower() + 's'
+# Calculate the module_name by converting to lowercase
+get_module_name = lambda class_name: class_name.lower()
# Calculate the verbose_name by converting from InitialCaps to "lowercase with spaces".
get_verbose_name = lambda class_name: re.sub('([A-Z])', ' \\1', class_name).lower().strip()

0 comments on commit e8b570c

Please sign in to comment.