diff --git a/apps/rp/forms.py b/apps/rp/forms.py new file mode 100644 index 0000000000000000000000000000000000000000..2843b2d4e69c0c0d195a55b42dca794f370004d1 --- /dev/null +++ b/apps/rp/forms.py @@ -0,0 +1,11 @@ +from django import forms + + +class TagMultipleChoiceField(forms.ModelMultipleChoiceField): + def prepare_value(self, value): + if hasattr(value, 'tag_id'): + return value.tag_id + elif hasattr(value, '__iter__') and not isinstance(value, str) and not hasattr(value, '_meta'): + return [self.prepare_value(v) for v in value] + else: + return super(TagMultipleChoiceField, self).prepare_value(value) diff --git a/apps/rp/templates/rp/article_form.html b/apps/rp/templates/rp/article_form.html index d94b5de48d040a20901976fab4cd81e02a173790..48f55726d519dc97c13563793166327619f4a00e 100644 --- a/apps/rp/templates/rp/article_form.html +++ b/apps/rp/templates/rp/article_form.html @@ -41,4 +41,13 @@ + + {% endblock %} diff --git a/apps/rp/views/articles.py b/apps/rp/views/articles.py index f85e1a8f11cf965a579d3a082d4eab3d6d4bbd0f..1358c0c0c4c8614b72b5980788bc098e31388a47 100644 --- a/apps/rp/views/articles.py +++ b/apps/rp/views/articles.py @@ -6,9 +6,11 @@ from django.urls import reverse, reverse_lazy from django import forms from crispy_forms.helper import FormHelper -from crispy_forms.layout import Submit, Layout, Field, Div, HTML +from crispy_forms.layout import Layout, Field, Div, HTML from crispy_forms.bootstrap import AppendedText +from taggit.models import Tag +from rp.forms import TagMultipleChoiceField from rp.models import Article from .votes import UDList @@ -79,6 +81,10 @@ class ArticleEdit(UpdateView): form.helper = FormHelper() form.helper.form_tag = False + # Change the layout of the tags field + form.fields["tags"] = TagMultipleChoiceField( + queryset=Tag.objects.all()) + left_layout = Div( Div( Field('title', wrapper_class='col-sm-10'), diff --git a/package.json b/package.json index 11585f17b5aa7c1040f2247a83efe7f4b88ea4f3..b1188ef4367609c2af5d1a73bce12482b8019952 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "dependencies": { "bootstrap": "4.0.0-alpha.6", "font-awesome": "^4.7.0", - "postcss-font-magician": "^1.6.1" + "select2": "^4.0.3", + "select2-bootstrap-theme": "^0.1.0-beta.10" }, "devDependencies": { "css-loader": "^0.28.0", diff --git a/static/src/admin.js b/static/src/admin.js index d3f34d46ea2002b2929aca89ea25cc80887555e0..b7c6005b5a0c57581e68d55d4ba019baee518c19 100644 --- a/static/src/admin.js +++ b/static/src/admin.js @@ -6,6 +6,9 @@ require('bootstrap/dist/js/bootstrap.js'); require('font-awesome/css/font-awesome.css'); require('bootstrap/dist/css/bootstrap.css'); +require('select2'); +require('select2/dist/css/select2.css'); +require('select2-bootstrap-theme/dist/select2-bootstrap.css'); // Local styles import styles from './admin.css';