Skip to content

Commit 804f66a

Browse files
committed
Merge branch 'feature/review-archi' into develop
2 parents 716f6c9 + 667ca78 commit 804f66a

File tree

4 files changed

+68
-51
lines changed

4 files changed

+68
-51
lines changed

docs/index.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,12 @@ access some additional tagging-related features.
129129
The ``register`` function
130130
-------------------------
131131

132-
To register a model, import the ``tagging`` module and call its
132+
To register a model, import the ``tagging.registry`` module and call its
133133
``register`` function, like so::
134134

135135
from django.db import models
136136

137-
import tagging
137+
from tagging.registry import register
138138

139139
class Widget(models.Model):
140140
name = models.CharField(max_length=50)

tagging/__init__.py

Lines changed: 1 addition & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -12,52 +12,4 @@
1212

1313
__url__ = 'https://github.com/Fantomas42/django-tagging'
1414

15-
16-
class AlreadyRegistered(Exception):
17-
"""
18-
An attempt was made to register a model more than once.
19-
"""
20-
pass
21-
22-
23-
registry = []
24-
25-
26-
def register(model, tag_descriptor_attr='tags',
27-
tagged_item_manager_attr='tagged'):
28-
"""
29-
Sets the given model class up for working with tags.
30-
"""
31-
32-
from tagging.managers import ModelTaggedItemManager, TagDescriptor
33-
34-
if model in registry:
35-
raise AlreadyRegistered(
36-
"The model '%s' has already been registered." %
37-
model._meta.object_name)
38-
if hasattr(model, tag_descriptor_attr):
39-
raise AttributeError(
40-
"'%s' already has an attribute '%s'. You must "
41-
"provide a custom tag_descriptor_attr to register." % (
42-
model._meta.object_name,
43-
tag_descriptor_attr,
44-
)
45-
)
46-
if hasattr(model, tagged_item_manager_attr):
47-
raise AttributeError(
48-
"'%s' already has an attribute '%s'. You must "
49-
"provide a custom tagged_item_manager_attr to register." % (
50-
model._meta.object_name,
51-
tagged_item_manager_attr,
52-
)
53-
)
54-
55-
# Add tag descriptor
56-
setattr(model, tag_descriptor_attr, TagDescriptor())
57-
58-
# Add custom manager
59-
ModelTaggedItemManager().contribute_to_class(
60-
model, tagged_item_manager_attr)
61-
62-
# Finally register in registry
63-
registry.append(model)
15+
default_app_config = 'tagging.apps.TaggingConfig'

tagging/apps.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"""
2+
Apps for tagging.
3+
"""
4+
from django.apps import AppConfig
5+
from django.utils.translation import ugettext_lazy as _
6+
7+
8+
class TaggingConfig(AppConfig):
9+
"""
10+
Config for Tagging application.
11+
"""
12+
name = 'tagging'
13+
label = 'tagging'
14+
verbose_name = _('Tagging')

tagging/registry.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
"""
2+
Registery for tagging.
3+
"""
4+
from tagging.managers import TagDescriptor
5+
from tagging.managers import ModelTaggedItemManager
6+
7+
registry = []
8+
9+
10+
class AlreadyRegistered(Exception):
11+
"""
12+
An attempt was made to register a model more than once.
13+
"""
14+
pass
15+
16+
17+
def register(model, tag_descriptor_attr='tags',
18+
tagged_item_manager_attr='tagged'):
19+
"""
20+
Sets the given model class up for working with tags.
21+
"""
22+
if model in registry:
23+
raise AlreadyRegistered(
24+
"The model '%s' has already been registered." %
25+
model._meta.object_name)
26+
if hasattr(model, tag_descriptor_attr):
27+
raise AttributeError(
28+
"'%s' already has an attribute '%s'. You must "
29+
"provide a custom tag_descriptor_attr to register." % (
30+
model._meta.object_name,
31+
tag_descriptor_attr,
32+
)
33+
)
34+
if hasattr(model, tagged_item_manager_attr):
35+
raise AttributeError(
36+
"'%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+
)
42+
43+
# Add tag descriptor
44+
setattr(model, tag_descriptor_attr, TagDescriptor())
45+
46+
# Add custom manager
47+
ModelTaggedItemManager().contribute_to_class(
48+
model, tagged_item_manager_attr)
49+
50+
# Finally register in registry
51+
registry.append(model)

0 commit comments

Comments
 (0)