From be9c721c7876e442ce559af7e3b9f7fb23fc82c4 Mon Sep 17 00:00:00 2001 From: Ryan Grigsby Date: Fri, 25 Jul 2014 12:14:17 -0400 Subject: [PATCH 01/56] added categories to question form --- knowledge/forms.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index 09dfd19..22f652e 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -4,7 +4,7 @@ from knowledge import settings from knowledge.models import Question, Response -OPTIONAL_FIELDS = ['alert', 'phone_number'] +OPTIONAL_FIELDS = ['alert', 'phone_number', 'categories'] __todo__ = """ @@ -26,7 +26,7 @@ def QuestionForm(user, *args, **kwargs): else: selected_fields = ['name', 'email', 'title', 'body'] else: - selected_fields = ['user', 'title', 'body', 'status'] + selected_fields = ['user', 'title', 'body', 'status', 'categories'] if settings.ALERTS: selected_fields += ['alert'] From 4357a6cf222c76b434e8275c1abb40442cbfa343 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Tue, 29 Jul 2014 15:16:09 -0400 Subject: [PATCH 02/56] Trying to add the plus button to the form... --- knowledge/forms.py | 15 ++++++++++ .../templates/django_knowledge/base.html | 6 ++++ .../templates/django_knowledge/form.html | 2 ++ knowledge/views.py | 8 +++++ knowledge/widgets.py | 29 +++++++++++++++++++ 5 files changed, 60 insertions(+) create mode 100644 knowledge/widgets.py diff --git a/knowledge/forms.py b/knowledge/forms.py index 22f652e..660b976 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -54,6 +54,12 @@ def __init__(self, *args, **kwargs): if qf: qf.widget = qf.hidden_widget() qf.required = False + + #Not sure about 'category' or 'category_create' + self.fields['categories'].widget = CustomRelatedFieldWidgetWrapper( + FilteredSelectMultiple(('category'),False,), + reverse('category_create'), + True) # honey pot! phone_number = forms.CharField(required=False) @@ -61,6 +67,15 @@ def __init__(self, *args, **kwargs): def clean_user(self): return user + #Added this, assuming it is needed + class Media: + ## media for the FilteredSelectMultiple widget + css = { + 'all':(ADMIN_MEDIA_PREFIX + 'css/widgets.css',), + } + # jsi18n is required by the widget + js = ( ADMIN_MEDIA_PREFIX + 'js/admin/RelatedObjectLookups.js',) + class Meta: model = Question fields = selected_fields diff --git a/knowledge/templates/django_knowledge/base.html b/knowledge/templates/django_knowledge/base.html index e3a3d6c..69d1484 100644 --- a/knowledge/templates/django_knowledge/base.html +++ b/knowledge/templates/django_knowledge/base.html @@ -8,6 +8,12 @@ + + + {{ form.media }} + diff --git a/knowledge/templates/django_knowledge/form.html b/knowledge/templates/django_knowledge/form.html index 91377e7..3a15edf 100644 --- a/knowledge/templates/django_knowledge/form.html +++ b/knowledge/templates/django_knowledge/form.html @@ -4,6 +4,8 @@
{% csrf_token %} + {% if popup %}{% endif %} + {% for field in form.visible_fields %}
diff --git a/knowledge/views.py b/knowledge/views.py index 9409636..5b690b2 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -204,7 +204,14 @@ def knowledge_ask(request, if settings.LOGIN_REQUIRED and not request.user.is_authenticated(): return HttpResponseRedirect(settings.LOGIN_URL+"?next=%s" % request.path) + if request.method == 'GET': + if ('_popup' in self.request.GET): + popup = self.request.GET['_popup'] + if request.method == 'POST': + if "_popup" in request.POST: + return HttpResponse('' % \ + (escape(self.object.pk), escapejs(self.object))) form = Form(request.user, request.POST) if form and form.is_valid(): if request.user.is_authenticated() or not form.cleaned_data['phone_number']: @@ -221,4 +228,5 @@ def knowledge_ask(request, 'form': form, 'categories': Category.objects.all(), 'BASE_TEMPLATE' : settings.BASE_TEMPLATE, + 'popup' : popup, }) diff --git a/knowledge/widgets.py b/knowledge/widgets.py new file mode 100644 index 0000000..334acee --- /dev/null +++ b/knowledge/widgets.py @@ -0,0 +1,29 @@ +from django.contrib.admin.widgets import RelatedFieldWidgetWrapper + +class CustomRelatedFieldWidgetWrapper(RelatedFieldWidgetWrapper): + + """ + Based on RelatedFieldWidgetWrapper, this does the same thing + outside of the admin interface + + the parameters for a relation and the admin site are replaced + by a url for the add operation + """ + + def __init__(self, widget, add_url,permission=True): + self.is_hidden = widget.is_hidden + self.needs_multipart_form = widget.needs_multipart_form + self.attrs = widget.attrs + self.choices = widget.choices + self.widget = widget + self.add_url = add_url + self.permission = permission + + def render(self, name, value, *args, **kwargs): + self.widget.choices = self.choices + output = [self.widget.render(name, value, *args, **kwargs)] + if self.permission: + output.append(u' ' % \ + (self.add_url, name)) + output.append(u'%s' % (settings.ADMIN_MEDIA_PREFIX, _('Add Another'))) + return mark_safe(u''.join(output)) \ No newline at end of file From 22b216d09e29a00b20c063ef25a50ffd0e503817 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Tue, 29 Jul 2014 15:20:49 -0400 Subject: [PATCH 03/56] Missed a change, forgot to import custom wrapper --- knowledge/forms.py | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/forms.py b/knowledge/forms.py index 660b976..357deec 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -3,6 +3,7 @@ from knowledge import settings from knowledge.models import Question, Response +from knowledge.widgets import CustomRelatedFieldWidgetWrapper OPTIONAL_FIELDS = ['alert', 'phone_number', 'categories'] From 30aac902775a86a7eefb8f196241ecfa7ae0a7af Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Tue, 29 Jul 2014 15:30:30 -0400 Subject: [PATCH 04/56] Quick fix --- knowledge/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/knowledge/views.py b/knowledge/views.py index 5b690b2..b9ac5e4 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -205,8 +205,8 @@ def knowledge_ask(request, return HttpResponseRedirect(settings.LOGIN_URL+"?next=%s" % request.path) if request.method == 'GET': - if ('_popup' in self.request.GET): - popup = self.request.GET['_popup'] + if ('_popup' in request.GET): + popup = request.GET['_popup'] if request.method == 'POST': if "_popup" in request.POST: From 2b3b635a4e001c3f0c68550d9753b06de7b23264 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 10:10:45 -0400 Subject: [PATCH 05/56] Fixed use of admin_media_prefix --- knowledge/forms.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index 357deec..e07f8eb 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -4,6 +4,7 @@ from knowledge import settings from knowledge.models import Question, Response from knowledge.widgets import CustomRelatedFieldWidgetWrapper +from settings import STATIC_URL OPTIONAL_FIELDS = ['alert', 'phone_number', 'categories'] @@ -72,10 +73,10 @@ def clean_user(self): class Media: ## media for the FilteredSelectMultiple widget css = { - 'all':(ADMIN_MEDIA_PREFIX + 'css/widgets.css',), + 'all':(STATIC_URL + 'admin/css/widgets.css',), } # jsi18n is required by the widget - js = ( ADMIN_MEDIA_PREFIX + 'js/admin/RelatedObjectLookups.js',) + js = (STATIC_URL + 'admin/js/admin/RelatedObjectLookups.js',) class Meta: model = Question From 43dee909be6c873171069611d4c6b3cd26b0ea02 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 10:22:53 -0400 Subject: [PATCH 06/56] Changed the static_url import --- knowledge/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index e07f8eb..57ea2f4 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -4,7 +4,7 @@ from knowledge import settings from knowledge.models import Question, Response from knowledge.widgets import CustomRelatedFieldWidgetWrapper -from settings import STATIC_URL +import settings OPTIONAL_FIELDS = ['alert', 'phone_number', 'categories'] From bc5bccf869df85d3aafc73deae5246b1634991b4 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 10:25:43 -0400 Subject: [PATCH 07/56] Just trying to make it work... --- knowledge/forms.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index 57ea2f4..d8da939 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -4,7 +4,6 @@ from knowledge import settings from knowledge.models import Question, Response from knowledge.widgets import CustomRelatedFieldWidgetWrapper -import settings OPTIONAL_FIELDS = ['alert', 'phone_number', 'categories'] @@ -73,10 +72,10 @@ def clean_user(self): class Media: ## media for the FilteredSelectMultiple widget css = { - 'all':(STATIC_URL + 'admin/css/widgets.css',), + 'all':('/static/admin/css/widgets.css',), } # jsi18n is required by the widget - js = (STATIC_URL + 'admin/js/admin/RelatedObjectLookups.js',) + js = ('/static/admin/js/admin/RelatedObjectLookups.js',) class Meta: model = Question From b0dcad75881b1b2a8f32f776b2d179a4048bd971 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 10:33:19 -0400 Subject: [PATCH 08/56] Fixed an import --- knowledge/forms.py | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/forms.py b/knowledge/forms.py index d8da939..26dbc25 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -4,6 +4,7 @@ from knowledge import settings from knowledge.models import Question, Response from knowledge.widgets import CustomRelatedFieldWidgetWrapper +from django.contrib.admin.widgets import FilteredSelectMultiple OPTIONAL_FIELDS = ['alert', 'phone_number', 'categories'] From 4cbbb6ed22a4ee8bbf202af1b363df3802e411fb Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 10:57:00 -0400 Subject: [PATCH 09/56] Import reverse --- knowledge/forms.py | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/forms.py b/knowledge/forms.py index 26dbc25..9177cc0 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -5,6 +5,7 @@ from knowledge.models import Question, Response from knowledge.widgets import CustomRelatedFieldWidgetWrapper from django.contrib.admin.widgets import FilteredSelectMultiple +from django.core.urlresolvers import reverse, NoReverseMatch OPTIONAL_FIELDS = ['alert', 'phone_number', 'categories'] From 47a9f393dab5104c8b093f0057fdb0c0a55dd728 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 11:03:23 -0400 Subject: [PATCH 10/56] hack --- knowledge/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index 9177cc0..4edce1d 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -61,7 +61,7 @@ def __init__(self, *args, **kwargs): #Not sure about 'category' or 'category_create' self.fields['categories'].widget = CustomRelatedFieldWidgetWrapper( FilteredSelectMultiple(('category'),False,), - reverse('category_create'), + reverse('knowledge_ask'), True) # honey pot! From e6165c936cce21152582c40756b2f94f8a18982e Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 11:05:47 -0400 Subject: [PATCH 11/56] hack --- knowledge/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/views.py b/knowledge/views.py index b9ac5e4..ded04e6 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -204,6 +204,7 @@ def knowledge_ask(request, if settings.LOGIN_REQUIRED and not request.user.is_authenticated(): return HttpResponseRedirect(settings.LOGIN_URL+"?next=%s" % request.path) + popup = null if request.method == 'GET': if ('_popup' in request.GET): popup = request.GET['_popup'] From 44825509e2901447b6be9b16505a8599df6f9c66 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 11:08:01 -0400 Subject: [PATCH 12/56] hack --- knowledge/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/views.py b/knowledge/views.py index ded04e6..80deac4 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -204,7 +204,7 @@ def knowledge_ask(request, if settings.LOGIN_REQUIRED and not request.user.is_authenticated(): return HttpResponseRedirect(settings.LOGIN_URL+"?next=%s" % request.path) - popup = null + popup = None if request.method == 'GET': if ('_popup' in request.GET): popup = request.GET['_popup'] From 3642e3b614005ecb94e7ede2a8ed56e556d41cb0 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 11:11:20 -0400 Subject: [PATCH 13/56] hack --- knowledge/widgets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/widgets.py b/knowledge/widgets.py index 334acee..a7f8f53 100644 --- a/knowledge/widgets.py +++ b/knowledge/widgets.py @@ -25,5 +25,5 @@ def render(self, name, value, *args, **kwargs): if self.permission: output.append(u' ' % \ (self.add_url, name)) - output.append(u'%s' % (settings.ADMIN_MEDIA_PREFIX, _('Add Another'))) + output.append(u'%s' % ('/static/admin/', _('Add Another'))) return mark_safe(u''.join(output)) \ No newline at end of file From 2ec97ca5a781bf66c8f5f9ffcdd4ec8c831480e9 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 11:15:01 -0400 Subject: [PATCH 14/56] global name _ is not defined --- knowledge/widgets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/widgets.py b/knowledge/widgets.py index a7f8f53..42dc887 100644 --- a/knowledge/widgets.py +++ b/knowledge/widgets.py @@ -25,5 +25,5 @@ def render(self, name, value, *args, **kwargs): if self.permission: output.append(u' ' % \ (self.add_url, name)) - output.append(u'%s' % ('/static/admin/', _('Add Another'))) + output.append(u'%s' % ('/static/admin/', 'Add Another')) return mark_safe(u''.join(output)) \ No newline at end of file From 3f4660518551e72f2d8e8ec1908f9443822c423d Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 11:16:28 -0400 Subject: [PATCH 15/56] import --- knowledge/widgets.py | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/widgets.py b/knowledge/widgets.py index 42dc887..d4aedfb 100644 --- a/knowledge/widgets.py +++ b/knowledge/widgets.py @@ -1,4 +1,5 @@ from django.contrib.admin.widgets import RelatedFieldWidgetWrapper +from django.utils.safestring import mark_safe class CustomRelatedFieldWidgetWrapper(RelatedFieldWidgetWrapper): From 26be622dcbd795341d4f1cedac42ea51409f6e4c Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 11:30:01 -0400 Subject: [PATCH 16/56] Think I know what the createview is for now --- knowledge/forms.py | 2 +- knowledge/urls.py | 2 ++ knowledge/views.py | 26 ++++++++++++++++++-------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index 4edce1d..9177cc0 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -61,7 +61,7 @@ def __init__(self, *args, **kwargs): #Not sure about 'category' or 'category_create' self.fields['categories'].widget = CustomRelatedFieldWidgetWrapper( FilteredSelectMultiple(('category'),False,), - reverse('knowledge_ask'), + reverse('category_create'), True) # honey pot! diff --git a/knowledge/urls.py b/knowledge/urls.py index 70176cd..2def6e7 100644 --- a/knowledge/urls.py +++ b/knowledge/urls.py @@ -19,4 +19,6 @@ 'knowledge_moderate', name='knowledge_moderate'), url(r'^ask/$', 'knowledge_ask', name='knowledge_ask'), + + url(r'^ask/create_category/$', CategoryCreateView.as_view(), name='category_create'), ) diff --git a/knowledge/views.py b/knowledge/views.py index 80deac4..5e08bd0 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -8,6 +8,7 @@ from knowledge.models import Question, Response, Category from knowledge.forms import QuestionForm, ResponseForm from knowledge.utils import paginate +from django.views.generic import CreateView ALLOWED_MODS = { @@ -204,15 +205,8 @@ def knowledge_ask(request, if settings.LOGIN_REQUIRED and not request.user.is_authenticated(): return HttpResponseRedirect(settings.LOGIN_URL+"?next=%s" % request.path) - popup = None - if request.method == 'GET': - if ('_popup' in request.GET): - popup = request.GET['_popup'] if request.method == 'POST': - if "_popup" in request.POST: - return HttpResponse('' % \ - (escape(self.object.pk), escapejs(self.object))) form = Form(request.user, request.POST) if form and form.is_valid(): if request.user.is_authenticated() or not form.cleaned_data['phone_number']: @@ -229,5 +223,21 @@ def knowledge_ask(request, 'form': form, 'categories': Category.objects.all(), 'BASE_TEMPLATE' : settings.BASE_TEMPLATE, - 'popup' : popup, }) + +class CategoryCreateView(CreateView): + def get_context_data(self, **kwargs): + context = super(CategoryCreateView,self).get_context_data(**kwargs) + if ('_popup' in self.request.GET): + context['popup'] = self.request.GET['_popup'] + return context + + def post(self, request, *args, **kwargs): + ## Save the normal response + response = super(CategoryCreateView,self).post(request, *args, **kwargs) + ## This will fire the script to close the popup and update the list + if "_popup" in request.POST: + return HttpResponse('' % \ + (escape(self.object.pk), escapejs(self.object))) + ## No popup, so return the normal response + return response From 56a5bde8a0212c9362bec120113c344c76402605 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 11:40:26 -0400 Subject: [PATCH 17/56] Import --- knowledge/urls.py | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/urls.py b/knowledge/urls.py index 2def6e7..ed054da 100644 --- a/knowledge/urls.py +++ b/knowledge/urls.py @@ -1,4 +1,5 @@ from django.conf.urls import patterns, url +from views import CategoryCreateView urlpatterns = patterns('knowledge.views', url(r'^$', 'knowledge_index', name='knowledge_index'), From 379e56d115990d900743934676f2348cadbe488d Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 12:57:25 -0400 Subject: [PATCH 18/56] Trying to make the reverse work --- knowledge/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index 9177cc0..56a5c52 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -61,7 +61,7 @@ def __init__(self, *args, **kwargs): #Not sure about 'category' or 'category_create' self.fields['categories'].widget = CustomRelatedFieldWidgetWrapper( FilteredSelectMultiple(('category'),False,), - reverse('category_create'), + reverse('ask/category_create'), True) # honey pot! From 637e1f5b7dac43a00155eb9855d5fb8242c65f95 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 13:03:22 -0400 Subject: [PATCH 19/56] Added import for views --- knowledge/forms.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index 56a5c52..502a544 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -1,7 +1,7 @@ from django import forms from django.utils.translation import ugettext_lazy as _ -from knowledge import settings +from knowledge import settings, views from knowledge.models import Question, Response from knowledge.widgets import CustomRelatedFieldWidgetWrapper from django.contrib.admin.widgets import FilteredSelectMultiple @@ -61,7 +61,7 @@ def __init__(self, *args, **kwargs): #Not sure about 'category' or 'category_create' self.fields['categories'].widget = CustomRelatedFieldWidgetWrapper( FilteredSelectMultiple(('category'),False,), - reverse('ask/category_create'), + reverse('category_create'), True) # honey pot! From 1a757343322bf8467c0ca458feeee8fdfd0a6e65 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 13:08:21 -0400 Subject: [PATCH 20/56] Trying the import this way now... --- knowledge/forms.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index 502a544..ca7c3f8 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -1,7 +1,8 @@ from django import forms from django.utils.translation import ugettext_lazy as _ -from knowledge import settings, views +from knowledge import settings +from knowledge.views import * from knowledge.models import Question, Response from knowledge.widgets import CustomRelatedFieldWidgetWrapper from django.contrib.admin.widgets import FilteredSelectMultiple From f1e180725447e770a081a11c613ef16c39136ca9 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 13:56:11 -0400 Subject: [PATCH 21/56] Finally used pycharm to fix some more imports --- knowledge/forms.py | 8 +++----- knowledge/views.py | 9 +++++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index ca7c3f8..2b3cdfe 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -1,12 +1,10 @@ from django import forms from django.utils.translation import ugettext_lazy as _ -from knowledge import settings -from knowledge.views import * -from knowledge.models import Question, Response -from knowledge.widgets import CustomRelatedFieldWidgetWrapper +from models import Question, Response +from widgets import CustomRelatedFieldWidgetWrapper from django.contrib.admin.widgets import FilteredSelectMultiple -from django.core.urlresolvers import reverse, NoReverseMatch +from django.core.urlresolvers import reverse OPTIONAL_FIELDS = ['alert', 'phone_number', 'categories'] diff --git a/knowledge/views.py b/knowledge/views.py index 5e08bd0..a92289e 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -1,13 +1,14 @@ +from django.utils.html import escape, escapejs import settings -from django.http import Http404, HttpResponseRedirect +from django.http import Http404, HttpResponseRedirect, HttpResponse from django.shortcuts import render, redirect, get_object_or_404 from django.core.urlresolvers import reverse, NoReverseMatch from django.db.models import Q -from knowledge.models import Question, Response, Category -from knowledge.forms import QuestionForm, ResponseForm -from knowledge.utils import paginate +from models import Question, Response, Category +from forms import QuestionForm, ResponseForm +from utils import paginate from django.views.generic import CreateView From e556af8f0dc5586c0506671fb8940253ec023db3 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 14:09:55 -0400 Subject: [PATCH 22/56] Defining self.object because our createview throws an error about not having a queryset --- knowledge/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/views.py b/knowledge/views.py index a92289e..5c3ec38 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -234,6 +234,7 @@ def get_context_data(self, **kwargs): return context def post(self, request, *args, **kwargs): + self.object = self.get_object() ## Save the normal response response = super(CategoryCreateView,self).post(request, *args, **kwargs) ## This will fire the script to close the popup and update the list From 63e43f5feff41a87b99f4622b14b243e4463d6ea Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 14:17:11 -0400 Subject: [PATCH 23/56] Defined the model: --- knowledge/views.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/knowledge/views.py b/knowledge/views.py index 5c3ec38..b93ebfe 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -227,6 +227,8 @@ def knowledge_ask(request, }) class CategoryCreateView(CreateView): + model = Category + def get_context_data(self, **kwargs): context = super(CategoryCreateView,self).get_context_data(**kwargs) if ('_popup' in self.request.GET): @@ -234,7 +236,6 @@ def get_context_data(self, **kwargs): return context def post(self, request, *args, **kwargs): - self.object = self.get_object() ## Save the normal response response = super(CategoryCreateView,self).post(request, *args, **kwargs) ## This will fire the script to close the popup and update the list From ff59300dd82882cf20c57f4f06a9a5e256291c9e Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 14:20:19 -0400 Subject: [PATCH 24/56] Added an import back --- knowledge/forms.py | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/forms.py b/knowledge/forms.py index 2b3cdfe..5bfc682 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -1,6 +1,7 @@ from django import forms from django.utils.translation import ugettext_lazy as _ +import settings from models import Question, Response from widgets import CustomRelatedFieldWidgetWrapper from django.contrib.admin.widgets import FilteredSelectMultiple From 3db517d95d4484a967c91b2bb9195e7ef1f3d0d8 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 14:43:21 -0400 Subject: [PATCH 25/56] Updated template --- knowledge/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/views.py b/knowledge/views.py index b93ebfe..7ab08ce 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -228,6 +228,7 @@ def knowledge_ask(request, class CategoryCreateView(CreateView): model = Category + template = 'ask.html' def get_context_data(self, **kwargs): context = super(CategoryCreateView,self).get_context_data(**kwargs) From 8f42ebad3db32b5fc11903376195479c15ed3b33 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 14:45:33 -0400 Subject: [PATCH 26/56] Let's try this again --- knowledge/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/views.py b/knowledge/views.py index 7ab08ce..8ffd1f1 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -228,7 +228,7 @@ def knowledge_ask(request, class CategoryCreateView(CreateView): model = Category - template = 'ask.html' + template_name = 'ask.html' def get_context_data(self, **kwargs): context = super(CategoryCreateView,self).get_context_data(**kwargs) From 1c45209d825ea722897c403dc30ff59df8fe369c Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 14:48:43 -0400 Subject: [PATCH 27/56] One more time --- knowledge/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/views.py b/knowledge/views.py index 8ffd1f1..10546fe 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -228,7 +228,7 @@ def knowledge_ask(request, class CategoryCreateView(CreateView): model = Category - template_name = 'ask.html' + template_name = 'django_knowledge/ask.html' def get_context_data(self, **kwargs): context = super(CategoryCreateView,self).get_context_data(**kwargs) From 8ea97c2f4a3c4b5edfb77cfc73e3e640e65fb387 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 15:51:59 -0400 Subject: [PATCH 28/56] Caught an omission of the queryset, trying some things to fix stuff --- knowledge/forms.py | 4 +++- knowledge/templates/django_knowledge/ask.html | 7 +++++++ knowledge/templates/django_knowledge/base.html | 6 ------ knowledge/views.py | 3 --- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index 5bfc682..7093423 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -2,7 +2,7 @@ from django.utils.translation import ugettext_lazy as _ import settings -from models import Question, Response +from models import Question, Response, Category from widgets import CustomRelatedFieldWidgetWrapper from django.contrib.admin.widgets import FilteredSelectMultiple from django.core.urlresolvers import reverse @@ -64,6 +64,8 @@ def __init__(self, *args, **kwargs): reverse('category_create'), True) + self.fields['categories'].queryset = Category.objects.all() + # honey pot! phone_number = forms.CharField(required=False) diff --git a/knowledge/templates/django_knowledge/ask.html b/knowledge/templates/django_knowledge/ask.html index e4c355e..251270f 100644 --- a/knowledge/templates/django_knowledge/ask.html +++ b/knowledge/templates/django_knowledge/ask.html @@ -4,6 +4,13 @@ {% load url from future %} {% block title %}{% trans "Ask a Question" %}{% endblock title %} + + + {{ form.media }} + + {% block knowledge_widgets %}
diff --git a/knowledge/templates/django_knowledge/base.html b/knowledge/templates/django_knowledge/base.html index 69d1484..e3a3d6c 100644 --- a/knowledge/templates/django_knowledge/base.html +++ b/knowledge/templates/django_knowledge/base.html @@ -8,12 +8,6 @@ - - - {{ form.media }} - diff --git a/knowledge/views.py b/knowledge/views.py index 10546fe..a92289e 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -227,9 +227,6 @@ def knowledge_ask(request, }) class CategoryCreateView(CreateView): - model = Category - template_name = 'django_knowledge/ask.html' - def get_context_data(self, **kwargs): context = super(CategoryCreateView,self).get_context_data(**kwargs) if ('_popup' in self.request.GET): From 6db95e9f378324a5d957e2f4deec3578dffb61dc Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 16:02:04 -0400 Subject: [PATCH 29/56] fixing a deprecated url tag --- knowledge/templates/django_knowledge/ask.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/templates/django_knowledge/ask.html b/knowledge/templates/django_knowledge/ask.html index 251270f..dfd6881 100644 --- a/knowledge/templates/django_knowledge/ask.html +++ b/knowledge/templates/django_knowledge/ask.html @@ -9,7 +9,7 @@ Adding this for the plus button on the form --> {{ form.media }} - + {% block knowledge_widgets %} From 2aded2ea45778f5363fca00267bac8a164837751 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 16:05:30 -0400 Subject: [PATCH 30/56] Added some stuff back --- knowledge/views.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/knowledge/views.py b/knowledge/views.py index a92289e..10546fe 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -227,6 +227,9 @@ def knowledge_ask(request, }) class CategoryCreateView(CreateView): + model = Category + template_name = 'django_knowledge/ask.html' + def get_context_data(self, **kwargs): context = super(CategoryCreateView,self).get_context_data(**kwargs) if ('_popup' in self.request.GET): From f12034f36800eedf32068a55dc403b7f37a7ef12 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 30 Jul 2014 16:16:58 -0400 Subject: [PATCH 31/56] Broke results by category, seeing if the javascript is overwritten --- knowledge/templates/django_knowledge/ask.html | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/knowledge/templates/django_knowledge/ask.html b/knowledge/templates/django_knowledge/ask.html index dfd6881..a4ff543 100644 --- a/knowledge/templates/django_knowledge/ask.html +++ b/knowledge/templates/django_knowledge/ask.html @@ -4,13 +4,7 @@ {% load url from future %} {% block title %}{% trans "Ask a Question" %}{% endblock title %} - - - {{ form.media }} - - + {% block knowledge_widgets %}
From 88c1a186d4c3653a33edd7aed9a652a3a531c379 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 10:49:46 -0400 Subject: [PATCH 32/56] Trying a different add_url --- knowledge/forms.py | 2 +- knowledge/templates/django_knowledge/ask.html | 8 +++++++- knowledge/views.py | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index 7093423..a4f86f9 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -61,7 +61,7 @@ def __init__(self, *args, **kwargs): #Not sure about 'category' or 'category_create' self.fields['categories'].widget = CustomRelatedFieldWidgetWrapper( FilteredSelectMultiple(('category'),False,), - reverse('category_create'), + reverse('admin:knowledge_category_add'), True) self.fields['categories'].queryset = Category.objects.all() diff --git a/knowledge/templates/django_knowledge/ask.html b/knowledge/templates/django_knowledge/ask.html index a4ff543..dfd6881 100644 --- a/knowledge/templates/django_knowledge/ask.html +++ b/knowledge/templates/django_knowledge/ask.html @@ -4,7 +4,13 @@ {% load url from future %} {% block title %}{% trans "Ask a Question" %}{% endblock title %} - + + + {{ form.media }} + + {% block knowledge_widgets %}
diff --git a/knowledge/views.py b/knowledge/views.py index 10546fe..38abbdb 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -8,7 +8,7 @@ from models import Question, Response, Category from forms import QuestionForm, ResponseForm -from utils import paginate +from knowledge.utils import paginate from django.views.generic import CreateView From 4331e3441301d9014d6cff2472227a3fce094f83 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 11:18:21 -0400 Subject: [PATCH 33/56] Updated add_link.gif reference --- knowledge/widgets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/widgets.py b/knowledge/widgets.py index d4aedfb..d6a5338 100644 --- a/knowledge/widgets.py +++ b/knowledge/widgets.py @@ -26,5 +26,5 @@ def render(self, name, value, *args, **kwargs): if self.permission: output.append(u' ' % \ (self.add_url, name)) - output.append(u'%s' % ('/static/admin/', 'Add Another')) + output.append(u'%s' % ('/static/admin/', 'Add Another')) return mark_safe(u''.join(output)) \ No newline at end of file From 221a76da364e2c6c5b387d7cb624254e3c99d8f6 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 11:35:54 -0400 Subject: [PATCH 34/56] Updated css to get the plus icon to appear --- knowledge/static/knowledge/css/main.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/knowledge/static/knowledge/css/main.css b/knowledge/static/knowledge/css/main.css index 7591a0a..0b569cc 100644 --- a/knowledge/static/knowledge/css/main.css +++ b/knowledge/static/knowledge/css/main.css @@ -90,8 +90,8 @@ margin-bottom: 1em; } .dk-inner .dk-content .dk-widget img { max-width: 96%; - padding: 1%; - border: 1px solid #ccc; } + /*padding: 1%; + border: 1px solid #ccc; }*/ .dk-inner .dk-content .dk-widget ol.question-list { font-size: 14px; margin-left: 10px; } From a2f5965e3a16450acdc5949770821bce6a2755ae Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 11:40:05 -0400 Subject: [PATCH 35/56] Let's try that again --- knowledge/static/knowledge/css/main.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/static/knowledge/css/main.css b/knowledge/static/knowledge/css/main.css index 0b569cc..d2231ed 100644 --- a/knowledge/static/knowledge/css/main.css +++ b/knowledge/static/knowledge/css/main.css @@ -91,7 +91,7 @@ .dk-inner .dk-content .dk-widget img { max-width: 96%; /*padding: 1%; - border: 1px solid #ccc; }*/ + border: 1px solid #ccc;*/ } .dk-inner .dk-content .dk-widget ol.question-list { font-size: 14px; margin-left: 10px; } From 3193711d0cfeeb3fdc630cdd2043f6430729e332 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 12:41:15 -0400 Subject: [PATCH 36/56] Trying to make the javascript work by adding it directly to the template --- knowledge/templates/django_knowledge/ask.html | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/templates/django_knowledge/ask.html b/knowledge/templates/django_knowledge/ask.html index dfd6881..3131245 100644 --- a/knowledge/templates/django_knowledge/ask.html +++ b/knowledge/templates/django_knowledge/ask.html @@ -9,6 +9,7 @@ Adding this for the plus button on the form --> {{ form.media }} + From 1e9046282e1509d016eb461b5fde7c390c1eff2d Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 12:44:22 -0400 Subject: [PATCH 37/56] Needed an import --- knowledge/templates/django_knowledge/ask.html | 1 + 1 file changed, 1 insertion(+) diff --git a/knowledge/templates/django_knowledge/ask.html b/knowledge/templates/django_knowledge/ask.html index 3131245..9890a91 100644 --- a/knowledge/templates/django_knowledge/ask.html +++ b/knowledge/templates/django_knowledge/ask.html @@ -2,6 +2,7 @@ {% load i18n %} {% load url from future %} +{% load staticfiles %} {% block title %}{% trans "Ask a Question" %}{% endblock title %} From 7f2ec5f7fa66c66f54a19af8b4aeabb19e8dcb9f Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 12:54:08 -0400 Subject: [PATCH 38/56] Trying this - putting the js tag in the base template --- knowledge/templates/django_knowledge/ask.html | 2 -- knowledge/templates/django_knowledge/base.html | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/knowledge/templates/django_knowledge/ask.html b/knowledge/templates/django_knowledge/ask.html index 9890a91..dfd6881 100644 --- a/knowledge/templates/django_knowledge/ask.html +++ b/knowledge/templates/django_knowledge/ask.html @@ -2,7 +2,6 @@ {% load i18n %} {% load url from future %} -{% load staticfiles %} {% block title %}{% trans "Ask a Question" %}{% endblock title %} @@ -10,7 +9,6 @@ Adding this for the plus button on the form --> {{ form.media }} - diff --git a/knowledge/templates/django_knowledge/base.html b/knowledge/templates/django_knowledge/base.html index e3a3d6c..c32ae8e 100644 --- a/knowledge/templates/django_knowledge/base.html +++ b/knowledge/templates/django_knowledge/base.html @@ -1,5 +1,6 @@ +{% load staticfiles %} @@ -8,6 +9,7 @@ + From 42541cb249e0eda5b469337e792525d03624aac4 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 12:57:16 -0400 Subject: [PATCH 39/56] Giving up on the popup, trying to fix other bugs now by first cleaning up unnecessary bits --- knowledge/templates/django_knowledge/ask.html | 7 ------- knowledge/templates/django_knowledge/base.html | 2 -- 2 files changed, 9 deletions(-) diff --git a/knowledge/templates/django_knowledge/ask.html b/knowledge/templates/django_knowledge/ask.html index dfd6881..e4c355e 100644 --- a/knowledge/templates/django_knowledge/ask.html +++ b/knowledge/templates/django_knowledge/ask.html @@ -4,13 +4,6 @@ {% load url from future %} {% block title %}{% trans "Ask a Question" %}{% endblock title %} - - - {{ form.media }} - - {% block knowledge_widgets %}
diff --git a/knowledge/templates/django_knowledge/base.html b/knowledge/templates/django_knowledge/base.html index c32ae8e..e3a3d6c 100644 --- a/knowledge/templates/django_knowledge/base.html +++ b/knowledge/templates/django_knowledge/base.html @@ -1,6 +1,5 @@ -{% load staticfiles %} @@ -9,7 +8,6 @@ - From 140f324c808c0796d6f3aaffa087ec5d6d3637b5 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 13:04:35 -0400 Subject: [PATCH 40/56] Still cleaning up --- knowledge/forms.py | 9 --------- knowledge/templates/django_knowledge/form.html | 2 -- 2 files changed, 11 deletions(-) diff --git a/knowledge/forms.py b/knowledge/forms.py index a4f86f9..86cc763 100644 --- a/knowledge/forms.py +++ b/knowledge/forms.py @@ -72,15 +72,6 @@ def __init__(self, *args, **kwargs): def clean_user(self): return user - #Added this, assuming it is needed - class Media: - ## media for the FilteredSelectMultiple widget - css = { - 'all':('/static/admin/css/widgets.css',), - } - # jsi18n is required by the widget - js = ('/static/admin/js/admin/RelatedObjectLookups.js',) - class Meta: model = Question fields = selected_fields diff --git a/knowledge/templates/django_knowledge/form.html b/knowledge/templates/django_knowledge/form.html index 3a15edf..91377e7 100644 --- a/knowledge/templates/django_knowledge/form.html +++ b/knowledge/templates/django_knowledge/form.html @@ -4,8 +4,6 @@ {% csrf_token %} - {% if popup %}{% endif %} - {% for field in form.visible_fields %}
From 8f8a35af5f9375d80e312fa1ee35af74bcaa986b Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 13:08:07 -0400 Subject: [PATCH 41/56] Trying out removing unused js --- knowledge/widgets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/widgets.py b/knowledge/widgets.py index d6a5338..588ba9b 100644 --- a/knowledge/widgets.py +++ b/knowledge/widgets.py @@ -24,7 +24,7 @@ def render(self, name, value, *args, **kwargs): self.widget.choices = self.choices output = [self.widget.render(name, value, *args, **kwargs)] if self.permission: - output.append(u' ' % \ + output.append(u' ' % \ (self.add_url, name)) output.append(u'%s' % ('/static/admin/', 'Add Another')) return mark_safe(u''.join(output)) \ No newline at end of file From 3db81997adbfdc57fdaf01dbb6a0129b496643dd Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 13:20:24 -0400 Subject: [PATCH 42/56] This should conclude the cleanup --- knowledge/urls.py | 2 -- knowledge/views.py | 23 ++--------------------- 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/knowledge/urls.py b/knowledge/urls.py index ed054da..5a7b7b4 100644 --- a/knowledge/urls.py +++ b/knowledge/urls.py @@ -20,6 +20,4 @@ 'knowledge_moderate', name='knowledge_moderate'), url(r'^ask/$', 'knowledge_ask', name='knowledge_ask'), - - url(r'^ask/create_category/$', CategoryCreateView.as_view(), name='category_create'), ) diff --git a/knowledge/views.py b/knowledge/views.py index 38abbdb..8270cd5 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -8,7 +8,7 @@ from models import Question, Response, Category from forms import QuestionForm, ResponseForm -from knowledge.utils import paginate +from utils import paginate from django.views.generic import CreateView @@ -225,23 +225,4 @@ def knowledge_ask(request, 'categories': Category.objects.all(), 'BASE_TEMPLATE' : settings.BASE_TEMPLATE, }) - -class CategoryCreateView(CreateView): - model = Category - template_name = 'django_knowledge/ask.html' - - def get_context_data(self, **kwargs): - context = super(CategoryCreateView,self).get_context_data(**kwargs) - if ('_popup' in self.request.GET): - context['popup'] = self.request.GET['_popup'] - return context - - def post(self, request, *args, **kwargs): - ## Save the normal response - response = super(CategoryCreateView,self).post(request, *args, **kwargs) - ## This will fire the script to close the popup and update the list - if "_popup" in request.POST: - return HttpResponse('' % \ - (escape(self.object.pk), escapejs(self.object))) - ## No popup, so return the normal response - return response + From c39b0c5d4066d17c2a17cd123e1dd76b72517095 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 13:48:01 -0400 Subject: [PATCH 43/56] Trying out a redirect after adding a new category --- knowledge/urls.py | 1 - knowledge/views.py | 2 -- knowledge/widgets.py | 5 +++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/knowledge/urls.py b/knowledge/urls.py index 5a7b7b4..70176cd 100644 --- a/knowledge/urls.py +++ b/knowledge/urls.py @@ -1,5 +1,4 @@ from django.conf.urls import patterns, url -from views import CategoryCreateView urlpatterns = patterns('knowledge.views', url(r'^$', 'knowledge_index', name='knowledge_index'), diff --git a/knowledge/views.py b/knowledge/views.py index 8270cd5..8b519a4 100644 --- a/knowledge/views.py +++ b/knowledge/views.py @@ -1,4 +1,3 @@ -from django.utils.html import escape, escapejs import settings from django.http import Http404, HttpResponseRedirect, HttpResponse @@ -9,7 +8,6 @@ from models import Question, Response, Category from forms import QuestionForm, ResponseForm from utils import paginate -from django.views.generic import CreateView ALLOWED_MODS = { diff --git a/knowledge/widgets.py b/knowledge/widgets.py index 588ba9b..e76f8ca 100644 --- a/knowledge/widgets.py +++ b/knowledge/widgets.py @@ -1,5 +1,6 @@ from django.contrib.admin.widgets import RelatedFieldWidgetWrapper from django.utils.safestring import mark_safe +from django.core.urlresolvers import reverse class CustomRelatedFieldWidgetWrapper(RelatedFieldWidgetWrapper): @@ -24,7 +25,7 @@ def render(self, name, value, *args, **kwargs): self.widget.choices = self.choices output = [self.widget.render(name, value, *args, **kwargs)] if self.permission: - output.append(u' ' % \ - (self.add_url, name)) + output.append(u' ' % \ + (self.add_url, reverse('knowledge_ask'), name)) output.append(u'%s' % ('/static/admin/', 'Add Another')) return mark_safe(u''.join(output)) \ No newline at end of file From c214c786dd2af2952b339e0e70c81a4f91a7f6ee Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 14:58:02 -0400 Subject: [PATCH 44/56] Caught a bug displaying results for a category --- knowledge/templates/django_knowledge/list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/templates/django_knowledge/list.html b/knowledge/templates/django_knowledge/list.html index be19f36..656e181 100644 --- a/knowledge/templates/django_knowledge/list.html +++ b/knowledge/templates/django_knowledge/list.html @@ -29,7 +29,7 @@

Showing {{ counter }} results{% if search %} for {{ search }}{% end ← {% trans "previous" %} {% endif %} -   {% blocktrans with number=questions.number pages=questions.paginator.num_pages %}page {{ number }} of {{ page }}{% endblocktrans %}   +   {% blocktrans with number=questions.number pages=questions.paginator.num_pages %}page {{ number }} of {{ pages }}{% endblocktrans %}   {% if questions.has_next %} {% trans "next" %} → From 879ee74dd3e914ddb45e0f9e8ea2174b11aa4b3a Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 15:04:33 -0400 Subject: [PATCH 45/56] Modifying the redirect url --- knowledge/widgets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/widgets.py b/knowledge/widgets.py index e76f8ca..7f37f18 100644 --- a/knowledge/widgets.py +++ b/knowledge/widgets.py @@ -25,7 +25,7 @@ def render(self, name, value, *args, **kwargs): self.widget.choices = self.choices output = [self.widget.render(name, value, *args, **kwargs)] if self.permission: - output.append(u' ' % \ + output.append(u' ' % \ (self.add_url, reverse('knowledge_ask'), name)) output.append(u'%s' % ('/static/admin/', 'Add Another')) return mark_safe(u''.join(output)) \ No newline at end of file From 695175fe42a45a1531839a2cee68b0f2193e7877 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 15:11:00 -0400 Subject: [PATCH 46/56] Removing the redirect attempt --- knowledge/widgets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/knowledge/widgets.py b/knowledge/widgets.py index 7f37f18..2e9bbab 100644 --- a/knowledge/widgets.py +++ b/knowledge/widgets.py @@ -25,7 +25,7 @@ def render(self, name, value, *args, **kwargs): self.widget.choices = self.choices output = [self.widget.render(name, value, *args, **kwargs)] if self.permission: - output.append(u' ' % \ - (self.add_url, reverse('knowledge_ask'), name)) + output.append(u' ' % \ + (self.add_url, name)) output.append(u'%s' % ('/static/admin/', 'Add Another')) return mark_safe(u''.join(output)) \ No newline at end of file From b4c28529a731cce98ca89ef300c2bcb33f4cf663 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Thu, 31 Jul 2014 16:22:21 -0400 Subject: [PATCH 47/56] Fixed the css to make the search bar work --- knowledge/static/knowledge/css/main.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/static/knowledge/css/main.css b/knowledge/static/knowledge/css/main.css index d2231ed..ed6fe34 100644 --- a/knowledge/static/knowledge/css/main.css +++ b/knowledge/static/knowledge/css/main.css @@ -36,7 +36,7 @@ border: 1px solid #ccc; font-size: 16px; width: 87%; - height: 16px; + /*height: 16px;*/ float: left; } .dk-inner .dk-search .submit-question-search { height: 34px; From 7ee841fc98fdd33bceb5ad7c1edca78ddb2b1508 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Mon, 4 Aug 2014 10:10:31 -0400 Subject: [PATCH 48/56] Changed question description to richtextfield --- knowledge/models.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/knowledge/models.py b/knowledge/models.py index 1e58676..67bb69b 100644 --- a/knowledge/models.py +++ b/knowledge/models.py @@ -8,6 +8,8 @@ from knowledge.managers import QuestionManager, ResponseManager from knowledge.signals import knowledge_post_save +from mezzanine.core.fields import RichTextField + STATUSES = ( ('public', _('Public')), ('private', _('Private')), @@ -150,7 +152,7 @@ class Question(KnowledgeBase): title = models.CharField(max_length=255, verbose_name=_('Question'), help_text=_('Enter your question or suggestion.')) - body = models.TextField(blank=True, null=True, + body = RichTextField(blank=True, null=True, verbose_name=_('Description'), help_text=_('Please offer details. Markdown enabled.')) From ad42e353ff931943519588bb4bab09fb124ad93b Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Mon, 4 Aug 2014 11:41:59 -0400 Subject: [PATCH 49/56] Trying a styling hack to fix new richtextfield in form --- knowledge/static/knowledge/css/main.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/knowledge/static/knowledge/css/main.css b/knowledge/static/knowledge/css/main.css index ed6fe34..641e843 100644 --- a/knowledge/static/knowledge/css/main.css +++ b/knowledge/static/knowledge/css/main.css @@ -3,6 +3,8 @@ font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; } .dk-inner input { margin: 0; } + .dk-inner .dk-content .dk-widget form.dk-form .field-wrapper .field-input span.mceEditor table.mceLayout { + width: 100% !important; } .dk-inner .quiet { font-weight: normal; color: #888; } From a5694fc24c0802812cc4bdb9f7fa78c25a351539 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Mon, 4 Aug 2014 12:15:56 -0400 Subject: [PATCH 50/56] Set user as a required field to fix bug with questions ruining our database --- knowledge/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/models.py b/knowledge/models.py index 67bb69b..bf3ad10 100644 --- a/knowledge/models.py +++ b/knowledge/models.py @@ -47,7 +47,7 @@ class KnowledgeBase(models.Model): added = models.DateTimeField(auto_now_add=True) lastchanged = models.DateTimeField(auto_now=True) - user = models.ForeignKey('auth.User' if django.VERSION < (1, 5, 0) else django_settings.AUTH_USER_MODEL, blank=True, + user = models.ForeignKey('auth.User' if django.VERSION < (1, 5, 0) else django_settings.AUTH_USER_MODEL, blank=False, null=True, db_index=True) alert = models.BooleanField(default=settings.ALERTS, verbose_name=_('Alert'), From 74862d073669ab7ffb39f330ee40ee3157708c28 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Mon, 4 Aug 2014 15:47:33 -0400 Subject: [PATCH 51/56] Generated migration from develop branch --- ...chg_field_question_user__chg_field_resp.py | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 knowledge/migrations/0004_auto__chg_field_question_body__chg_field_question_user__chg_field_resp.py diff --git a/knowledge/migrations/0004_auto__chg_field_question_body__chg_field_question_user__chg_field_resp.py b/knowledge/migrations/0004_auto__chg_field_question_body__chg_field_question_user__chg_field_resp.py new file mode 100644 index 0000000..27fba9c --- /dev/null +++ b/knowledge/migrations/0004_auto__chg_field_question_body__chg_field_question_user__chg_field_resp.py @@ -0,0 +1,108 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Changing field 'Question.body' + db.alter_column(u'knowledge_question', 'body', self.gf('mezzanine.core.fields.RichTextField')(null=True)) + + # Changing field 'Question.user' + db.alter_column(u'knowledge_question', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True)) + + # Changing field 'Response.user' + db.alter_column(u'knowledge_response', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True)) + + def backwards(self, orm): + + # Changing field 'Question.body' + db.alter_column(u'knowledge_question', 'body', self.gf('django.db.models.fields.TextField')(null=True)) + + # Changing field 'Question.user' + db.alter_column(u'knowledge_question', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label], null=True)) + + # Changing field 'Response.user' + db.alter_column(u'knowledge_response', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm[user_model_label], null=True)) + + models = { + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'knowledge.category': { + 'Meta': {'ordering': "['title']", 'object_name': 'Category'}, + 'added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastchanged': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + u'knowledge.question': { + 'Meta': {'ordering': "['-added']", 'object_name': 'Question'}, + 'added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'alert': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'body': ('mezzanine.core.fields.RichTextField', [], {'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['knowledge.Category']", 'symmetrical': 'False', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastchanged': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'private'", 'max_length': '32', 'db_index': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'null': 'True', 'blank': 'True'}) + }, + u'knowledge.response': { + 'Meta': {'ordering': "['added']", 'object_name': 'Response'}, + 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'alert': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'body': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastchanged': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'responses'", 'to': u"orm['knowledge.Question']"}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'inherit'", 'max_length': '32', 'db_index': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['knowledge'] \ No newline at end of file From 418b465f67ca4e2ee88830b3823c2e611afa9bcc Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 6 Aug 2014 12:15:58 -0400 Subject: [PATCH 52/56] Made response a richtextfield --- knowledge/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knowledge/models.py b/knowledge/models.py index bf3ad10..a41ba21 100644 --- a/knowledge/models.py +++ b/knowledge/models.py @@ -256,7 +256,7 @@ class Response(KnowledgeBase): question = models.ForeignKey('knowledge.Question', related_name='responses') - body = models.TextField(blank=True, null=True, + body = RichTextField(blank=True, null=True, verbose_name=_('Response'), help_text=_('Please enter your response. Markdown enabled.')) status = models.CharField( From c0a34c1fde92574989f9fa11580ff64b0f38b93a Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 6 Aug 2014 13:08:47 -0400 Subject: [PATCH 53/56] Generated migration for richtextfield --- .../0005_auto__chg_field_response_body.py | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 knowledge/migrations/0005_auto__chg_field_response_body.py diff --git a/knowledge/migrations/0005_auto__chg_field_response_body.py b/knowledge/migrations/0005_auto__chg_field_response_body.py new file mode 100644 index 0000000..5fad1c5 --- /dev/null +++ b/knowledge/migrations/0005_auto__chg_field_response_body.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Changing field 'Response.body' + db.alter_column(u'knowledge_response', 'body', self.gf('mezzanine.core.fields.RichTextField')(null=True)) + + def backwards(self, orm): + + # Changing field 'Response.body' + db.alter_column(u'knowledge_response', 'body', self.gf('django.db.models.fields.TextField')(null=True)) + + models = { + u'auth.group': { + 'Meta': {'object_name': 'Group'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + u'auth.permission': { + 'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'knowledge.category': { + 'Meta': {'ordering': "['title']", 'object_name': 'Category'}, + 'added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastchanged': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}) + }, + u'knowledge.question': { + 'Meta': {'ordering': "['-added']", 'object_name': 'Question'}, + 'added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'alert': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'body': ('mezzanine.core.fields.RichTextField', [], {'null': 'True', 'blank': 'True'}), + 'categories': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['knowledge.Category']", 'symmetrical': 'False', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastchanged': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'locked': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'private'", 'max_length': '32', 'db_index': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'null': 'True'}) + }, + u'knowledge.response': { + 'Meta': {'ordering': "['added']", 'object_name': 'Response'}, + 'accepted': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'alert': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'body': ('mezzanine.core.fields.RichTextField', [], {'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lastchanged': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'blank': 'True'}), + 'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'responses'", 'to': u"orm['knowledge.Question']"}), + 'status': ('django.db.models.fields.CharField', [], {'default': "'inherit'", 'max_length': '32', 'db_index': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['auth.User']", 'null': 'True'}) + } + } + + complete_apps = ['knowledge'] \ No newline at end of file From a15532851a5dba25f49635e55b393cbb40338503 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 6 Aug 2014 16:48:54 -0400 Subject: [PATCH 54/56] Working on updating the templates to work with rtf, and removed markdown --- knowledge/templates/django_knowledge/thread.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/knowledge/templates/django_knowledge/thread.html b/knowledge/templates/django_knowledge/thread.html index 858037e..a555165 100644 --- a/knowledge/templates/django_knowledge/thread.html +++ b/knowledge/templates/django_knowledge/thread.html @@ -23,7 +23,7 @@
{{ question.get_name }}  {{ question.added }}
- {{ question.body|striptags|markdown }} + {{ question.body }} {% include "django_knowledge/mod_bar.html" with allowed_mods=allowed_mods.question type="question" node=question %}

@@ -48,7 +48,7 @@
{{ response.get_name }}  {{ response.added }}
- {{ response.body|striptags|markdown }} + {{ response.body }} {% include "django_knowledge/mod_bar.html" with allowed_mods=allowed_mods.response type="response" node=response %}
From 8e3bce4007c5979f3a209d3884967f6b3653b5d5 Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Wed, 6 Aug 2014 16:53:56 -0400 Subject: [PATCH 55/56] Removed the load for markup, added filter tags for rtf --- knowledge/templates/django_knowledge/thread.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/knowledge/templates/django_knowledge/thread.html b/knowledge/templates/django_knowledge/thread.html index a555165..d395a62 100644 --- a/knowledge/templates/django_knowledge/thread.html +++ b/knowledge/templates/django_knowledge/thread.html @@ -1,7 +1,7 @@ {% extends 'django_knowledge/inner.html' %} {% load i18n %} -{% load markup %} +{% load mezzanine_tags %} {% load knowledge_tags %} {% load url from future %} @@ -23,7 +23,7 @@
{{ question.get_name }}  {{ question.added }}
- {{ question.body }} + {{ question.body|richtext_filters|safe }} {% include "django_knowledge/mod_bar.html" with allowed_mods=allowed_mods.question type="question" node=question %}
@@ -48,7 +48,7 @@
{{ response.get_name }}  {{ response.added }}
- {{ response.body }} + {{ response.body|richtext_filters|safe }} {% include "django_knowledge/mod_bar.html" with allowed_mods=allowed_mods.response type="response" node=response %}
From 1eb7b6d32de30635fbb6f7f2b1e84cb9b4705f8e Mon Sep 17 00:00:00 2001 From: Will Schneider Date: Fri, 8 Aug 2014 14:02:52 -0400 Subject: [PATCH 56/56] Removed markdown reference from help text --- knowledge/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/knowledge/models.py b/knowledge/models.py index a41ba21..27115b5 100644 --- a/knowledge/models.py +++ b/knowledge/models.py @@ -154,7 +154,7 @@ class Question(KnowledgeBase): help_text=_('Enter your question or suggestion.')) body = RichTextField(blank=True, null=True, verbose_name=_('Description'), - help_text=_('Please offer details. Markdown enabled.')) + help_text=_('Please offer details.')) status = models.CharField( verbose_name=_('Status'), @@ -258,7 +258,7 @@ class Response(KnowledgeBase): body = RichTextField(blank=True, null=True, verbose_name=_('Response'), - help_text=_('Please enter your response. Markdown enabled.')) + help_text=_('Please enter your response.')) status = models.CharField( verbose_name=_('Status'), max_length=32, choices=STATUSES_EXTENDED,