Skip to content

Commit 0b730c9

Browse files
committed
Updated the referential integrity checking comand.
- Legacy-Id: 13234
1 parent 8e8d2c3 commit 0b730c9

1 file changed

Lines changed: 17 additions & 9 deletions

File tree

ietf/utils/management/commands/check_referential_integrity.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import django
33
django.setup()
44

5+
from django.apps import apps
56
from django.core.management.base import BaseCommand #, CommandError
67
from django.core.exceptions import FieldError
78
from django.db import models
@@ -13,11 +14,14 @@ class Command(BaseCommand):
1314
help = "Check all models for referential integrity."
1415

1516
def handle(self, *args, **options):
16-
verbosity = options.get("verbosity", "1")
17-
verbosity = int(verbosity) if verbosity.isdigit() else 1
17+
verbosity = options.get("verbosity", 1)
1818

1919
def check_field(field):
20-
foreign_model = field.related.parent_model
20+
try:
21+
foreign_model = field.related_model
22+
except Exception:
23+
debug.pprint('dir(field)')
24+
raise
2125
if verbosity > 1:
2226
print " %s -> %s.%s" % (field.name,foreign_model.__module__,foreign_model.__name__),
2327
used = set(field.model.objects.values_list(field.name,flat=True))
@@ -33,11 +37,15 @@ def check_field(field):
3337
print "%s.%s.%s -> %s.%s Bad key values:" % (model.__module__,model.__name__,field.name,foreign_model.__module__,foreign_model.__name__),list(used - exists)
3438

3539
def check_reverse_field(field):
36-
foreign_model = field.related.parent_model
40+
try:
41+
foreign_model = field.related_model
42+
except Exception:
43+
debug.pprint('dir(field)')
44+
raise
3745
if foreign_model == field.model:
3846
return
39-
foreign_field_name = field.related.var_name
40-
foreign_accessor_name = field.related.get_accessor_name()
47+
foreign_field_name = field.rel.name
48+
foreign_accessor_name = field.rel.get_accessor_name()
4149
if verbosity > 1:
4250
print " %s <- %s -> %s.%s" % (field.model.__name__, field.rel.through._meta.db_table, foreign_model.__module__, foreign_model.__name__),
4351
try:
@@ -58,10 +66,10 @@ def check_reverse_field(field):
5866
if used - exists:
5967
print "%s.%s <- %s -> %s.%s ** Bad key values:\n " % (field.model.__module__, field.model.__name__, field.rel.through._meta.db_table, foreign_model.__module__, foreign_model.__name__), list(used - exists)
6068

61-
for app in [a for a in models.get_apps() if a.__name__.startswith('ietf.')]:
69+
for conf in [ c for c in apps.get_app_configs() if c.name.startswith('ietf.')]:
6270
if verbosity > 1:
63-
print "Checking",app.__name__
64-
for model in models.get_models(app):
71+
print "Checking", conf.name
72+
for model in conf.get_models():
6573
if model._meta.proxy:
6674
continue
6775
if verbosity > 1:

0 commit comments

Comments
 (0)