diff --git a/requirements.txt b/requirements.txt index 51151d4..a0e41da 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ django-select2 django-ckeditor<4.5.3 django-haystack django-reversion +django-taggit diff --git a/setup.py b/setup.py index 1595a72..0167c8b 100644 --- a/setup.py +++ b/setup.py @@ -103,6 +103,7 @@ setup( 'django-ckeditor<4.5.3', 'django-haystack', 'django-reversion', + 'django-taggit', 'requests', 'whoosh', ], diff --git a/welco/kb/models.py b/welco/kb/models.py index a262391..2be6588 100644 --- a/welco/kb/models.py +++ b/welco/kb/models.py @@ -20,6 +20,7 @@ from django.utils.translation import ugettext_lazy as _ from ckeditor.fields import RichTextField import reversion +from taggit.managers import TaggableManager @reversion.register @@ -27,7 +28,8 @@ class Page(models.Model): title = models.CharField(_('Title'), max_length=200) slug = models.SlugField(_('Slug')) content = RichTextField(_('Text')) - keywords = models.CharField(_('Keywords'), max_length=200, blank=True) + tags = TaggableManager(_('Keywords'), blank=True, + help_text=_('A comma-separated list of tags.')) class Meta: ordering = ['title'] diff --git a/welco/kb/search_indexes.py b/welco/kb/search_indexes.py index a5c2786..d0ed587 100644 --- a/welco/kb/search_indexes.py +++ b/welco/kb/search_indexes.py @@ -27,13 +27,16 @@ class PageIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True) text_auto = indexes.EdgeNgramField() slug = indexes.CharField(model_attr='slug', indexed=False) - keywords = indexes.CharField(model_attr='keywords', boost=1.5) + tags = indexes.CharField(boost=1.5) def get_model(self): return Page def prepare_text(self, obj): - return obj.title + ' ' + obj.keywords + ' ' + HTMLParser().unescape(strip_tags(obj.content)) + return obj.title + ' ' + self.prepare_tags(obj) + ' ' + HTMLParser().unescape(strip_tags(obj.content)) def prepare_text_auto(self, obj): return self.prepare_text(obj) + + def prepare_tags(self, obj): + return ' '.join([tag.name for tag in obj.tags.all()]) diff --git a/welco/kb/templates/kb/page_detail.html b/welco/kb/templates/kb/page_detail.html index ba082fb..5a71242 100644 --- a/welco/kb/templates/kb/page_detail.html +++ b/welco/kb/templates/kb/page_detail.html @@ -21,7 +21,7 @@

{% trans 'Keywords:' %} -{{ object.keywords }} +{% for tag in object.tags.all %}{{tag}}{% if not forloop.last %}, {% endif %}{% endfor %}

{% endblock %} diff --git a/welco/settings.py b/welco/settings.py index 1215007..7aae097 100644 --- a/welco/settings.py +++ b/welco/settings.py @@ -44,6 +44,7 @@ INSTALLED_APPS = ( 'ckeditor', 'haystack', 'reversion', + 'taggit', 'welco.sources.counter', 'welco.sources.mail', 'welco.sources.phone',