Rename delete_rule -> reverse_delete_rule.

This commit is contained in:
Vincent Driessen 2010-12-20 05:50:42 -08:00
parent 52f5deb456
commit 07ef58c1a7
5 changed files with 19 additions and 19 deletions

View File

@ -200,8 +200,8 @@ documents that other documents still hold references to will lead to consistency
issues. Mongoengine's :class:`ReferenceField` adds some functionality to issues. Mongoengine's :class:`ReferenceField` adds some functionality to
safeguard against these kinds of database integrity problems, providing each safeguard against these kinds of database integrity problems, providing each
reference with a delete rule specification. A delete rule is specified by reference with a delete rule specification. A delete rule is specified by
supplying the :attr:`delete_rule` attribute on the :class:`ReferenceField` supplying the :attr:`reverse_delete_rule` attributes on the
definition, like this:: :class:`ReferenceField` definition, like this::
class Employee(Document): class Employee(Document):
... ...

View File

@ -191,7 +191,7 @@ class DocumentMetaclass(type):
new_class = super_new(cls, name, bases, attrs) new_class = super_new(cls, name, bases, attrs)
for field in new_class._fields.values(): for field in new_class._fields.values():
field.owner_document = new_class field.owner_document = new_class
delete_rule = getattr(field, 'delete_rule', DO_NOTHING) delete_rule = getattr(field, 'reverse_delete_rule', DO_NOTHING)
if delete_rule != DO_NOTHING: if delete_rule != DO_NOTHING:
field.document_type.register_delete_rule(new_class, field.name, field.document_type.register_delete_rule(new_class, field.name,
delete_rule) delete_rule)

View File

@ -418,13 +418,13 @@ class ReferenceField(BaseField):
access (lazily). access (lazily).
""" """
def __init__(self, document_type, delete_rule=DO_NOTHING, **kwargs): def __init__(self, document_type, reverse_delete_rule=DO_NOTHING, **kwargs):
if not isinstance(document_type, basestring): if not isinstance(document_type, basestring):
if not issubclass(document_type, (Document, basestring)): if not issubclass(document_type, (Document, basestring)):
raise ValidationError('Argument to ReferenceField constructor ' raise ValidationError('Argument to ReferenceField constructor '
'must be a document class or a string') 'must be a document class or a string')
self.document_type_obj = document_type self.document_type_obj = document_type
self.delete_rule = delete_rule self.reverse_delete_rule = reverse_delete_rule
super(ReferenceField, self).__init__(**kwargs) super(ReferenceField, self).__init__(**kwargs)
@property @property

View File

@ -625,14 +625,14 @@ class DocumentTest(unittest.TestCase):
BlogPost.drop_collection() BlogPost.drop_collection()
def test_delete_rule_cascade_and_nullify(self): def test_reverse_delete_rule_cascade_and_nullify(self):
"""Ensure that a referenced document is also deleted upon deletion. """Ensure that a referenced document is also deleted upon deletion.
""" """
class BlogPost(Document): class BlogPost(Document):
content = StringField() content = StringField()
author = ReferenceField(self.Person, delete_rule=CASCADE) author = ReferenceField(self.Person, reverse_delete_rule=CASCADE)
reviewer = ReferenceField(self.Person, delete_rule=NULLIFY) reviewer = ReferenceField(self.Person, reverse_delete_rule=NULLIFY)
self.Person.drop_collection() self.Person.drop_collection()
BlogPost.drop_collection() BlogPost.drop_collection()
@ -656,18 +656,18 @@ class DocumentTest(unittest.TestCase):
author.delete() author.delete()
self.assertEqual(len(BlogPost.objects), 0) self.assertEqual(len(BlogPost.objects), 0)
def test_delete_rule_cascade_recurs(self): def test_reverse_delete_rule_cascade_recurs(self):
"""Ensure that a chain of documents is also deleted upon cascaded """Ensure that a chain of documents is also deleted upon cascaded
deletion. deletion.
""" """
class BlogPost(Document): class BlogPost(Document):
content = StringField() content = StringField()
author = ReferenceField(self.Person, delete_rule=CASCADE) author = ReferenceField(self.Person, reverse_delete_rule=CASCADE)
class Comment(Document): class Comment(Document):
text = StringField() text = StringField()
post = ReferenceField(BlogPost, delete_rule=CASCADE) post = ReferenceField(BlogPost, reverse_delete_rule=CASCADE)
author = self.Person(name='Test User') author = self.Person(name='Test User')
@ -690,14 +690,14 @@ class DocumentTest(unittest.TestCase):
BlogPost.drop_collection() BlogPost.drop_collection()
Comment.drop_collection() Comment.drop_collection()
def test_delete_rule_deny(self): def test_reverse_delete_rule_deny(self):
"""Ensure that a document cannot be referenced if there are still """Ensure that a document cannot be referenced if there are still
documents referring to it. documents referring to it.
""" """
class BlogPost(Document): class BlogPost(Document):
content = StringField() content = StringField()
author = ReferenceField(self.Person, delete_rule=DENY) author = ReferenceField(self.Person, reverse_delete_rule=DENY)
self.Person.drop_collection() self.Person.drop_collection()
BlogPost.drop_collection() BlogPost.drop_collection()

View File

@ -734,12 +734,12 @@ class QuerySetTest(unittest.TestCase):
self.Person.objects.delete() self.Person.objects.delete()
self.assertEqual(len(self.Person.objects), 0) self.assertEqual(len(self.Person.objects), 0)
def test_delete_rule_cascade(self): def test_reverse_delete_rule_cascade(self):
"""Ensure cascading deletion of referring documents from the database. """Ensure cascading deletion of referring documents from the database.
""" """
class BlogPost(Document): class BlogPost(Document):
content = StringField() content = StringField()
author = ReferenceField(self.Person, delete_rule=CASCADE) author = ReferenceField(self.Person, reverse_delete_rule=CASCADE)
BlogPost.drop_collection() BlogPost.drop_collection()
me = self.Person(name='Test User') me = self.Person(name='Test User')
@ -755,7 +755,7 @@ class QuerySetTest(unittest.TestCase):
self.Person.objects(name='Test User').delete() self.Person.objects(name='Test User').delete()
self.assertEqual(1, BlogPost.objects.count()) self.assertEqual(1, BlogPost.objects.count())
def test_delete_rule_nullify(self): def test_reverse_delete_rule_nullify(self):
"""Ensure nullification of references to deleted documents. """Ensure nullification of references to deleted documents.
""" """
class Category(Document): class Category(Document):
@ -763,7 +763,7 @@ class QuerySetTest(unittest.TestCase):
class BlogPost(Document): class BlogPost(Document):
content = StringField() content = StringField()
category = ReferenceField(Category, delete_rule=NULLIFY) category = ReferenceField(Category, reverse_delete_rule=NULLIFY)
BlogPost.drop_collection() BlogPost.drop_collection()
Category.drop_collection() Category.drop_collection()
@ -780,13 +780,13 @@ class QuerySetTest(unittest.TestCase):
self.assertEqual(1, BlogPost.objects.count()) self.assertEqual(1, BlogPost.objects.count())
self.assertEqual(None, BlogPost.objects.first().category) self.assertEqual(None, BlogPost.objects.first().category)
def test_delete_rule_deny(self): def test_reverse_delete_rule_deny(self):
"""Ensure deletion gets denied on documents that still have references """Ensure deletion gets denied on documents that still have references
to them. to them.
""" """
class BlogPost(Document): class BlogPost(Document):
content = StringField() content = StringField()
author = ReferenceField(self.Person, delete_rule=DENY) author = ReferenceField(self.Person, reverse_delete_rule=DENY)
BlogPost.drop_collection() BlogPost.drop_collection()
self.Person.drop_collection() self.Person.drop_collection()