Skip to content

Commit 87fc49b

Browse files
committed
Fixed #95 -- don't stomp over attributes/fields of a model in tagging.register
git-svn-id: https://django-tagging.googlecode.com/svn/trunk@174 83e7428b-ec2a-0410-86f2-bf466d0e5e72
1 parent dd51cd4 commit 87fc49b

File tree

1 file changed

+27
-7
lines changed

1 file changed

+27
-7
lines changed

tagging/__init__.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,50 @@
1-
from django.utils.translation import ugettext as _
2-
31
from tagging.managers import ModelTaggedItemManager, TagDescriptor
42

3+
4+
55
VERSION = (0, 4, 'pre')
66

7+
8+
79
class AlreadyRegistered(Exception):
810
"""
911
An attempt was made to register a model more than once.
1012
"""
1113
pass
1214

15+
1316
registry = []
1417

18+
1519
def register(model, tag_descriptor_attr='tags',
1620
tagged_item_manager_attr='tagged'):
1721
"""
1822
Sets the given model class up for working with tags.
1923
"""
24+
2025
if model in registry:
21-
raise AlreadyRegistered(
22-
_('The model %s has already been registered.') % model.__name__)
23-
registry.append(model)
26+
raise AlreadyRegistered("The model '%s' has already been "
27+
"registered." % model._meta.object_name)
28+
if hasattr(model, tag_descriptor_attr):
29+
raise AttributeError("'%s' already has an attribute '%s'. You must "
30+
"provide a custom tag_descriptor_attr to register." % (
31+
model._meta.object_name,
32+
tag_descriptor_attr,
33+
)
34+
)
35+
if hasattr(model, tagged_item_manager_attr):
36+
raise AttributeError("'%s' already has an attribute '%s'. You must "
37+
"provide a custom tagged_item_manager_attr to register." % (
38+
model._meta.object_name,
39+
tagged_item_manager_attr,
40+
)
41+
)
2442

2543
# Add tag descriptor
2644
setattr(model, tag_descriptor_attr, TagDescriptor())
2745

2846
# Add custom manager
29-
ModelTaggedItemManager().contribute_to_class(model,
30-
tagged_item_manager_attr)
47+
ModelTaggedItemManager().contribute_to_class(model, tagged_item_manager_attr)
48+
49+
# Finally register in registry
50+
registry.append(model)

0 commit comments

Comments
 (0)