diff options
author | Adolfo Fitoria <adolfo.fitoria@gmail.com> | 2012-08-17 14:59:56 -0600 |
---|---|---|
committer | Adolfo Fitoria <adolfo.fitoria@gmail.com> | 2012-08-17 14:59:56 -0600 |
commit | bd1e4e99d8048d42e1781ea71ec7b348ff0358e8 (patch) | |
tree | a98124fe97226a8d32d148a0d867861ffa1f1c60 | |
parent | 0d2c4b77710a765e5f720cb7833649af18f61605 (diff) | |
download | askbot-bd1e4e99d8048d42e1781ea71ec7b348ff0358e8.tar.gz askbot-bd1e4e99d8048d42e1781ea71ec7b348ff0358e8.tar.bz2 askbot-bd1e4e99d8048d42e1781ea71ec7b348ff0358e8.zip |
Temporal commit I'll made generic views for the widgets in this moment
-rw-r--r-- | askbot/forms.py | 3 | ||||
-rw-r--r-- | askbot/models/__init__.py | 2 | ||||
-rw-r--r-- | askbot/models/widgets.py | 26 | ||||
-rw-r--r-- | askbot/skins/default/templates/embed/ask_by_widget.html (renamed from askbot/skins/default/templates/ask_by_widget.html) | 0 | ||||
-rw-r--r-- | askbot/skins/default/templates/embed/ask_widget_complete.html (renamed from askbot/skins/default/templates/ask_widget_complete.html) | 0 | ||||
-rw-r--r-- | askbot/skins/default/templates/embed/ask_widget_form.html (renamed from askbot/skins/default/templates/ask_widget_form.html) | 0 | ||||
-rw-r--r-- | askbot/skins/default/templates/embed/delete_ask_widget.html (renamed from askbot/skins/default/templates/delete_ask_widget.html) | 0 | ||||
-rw-r--r-- | askbot/skins/default/templates/embed/delete_question_widget.html | 13 | ||||
-rw-r--r-- | askbot/skins/default/templates/embed/list_ask_widget.html (renamed from askbot/skins/default/templates/list_ask_widget.html) | 0 | ||||
-rw-r--r-- | askbot/skins/default/templates/embed/question_widget.html (renamed from askbot/skins/default/templates/question_widget.html) | 0 | ||||
-rw-r--r-- | askbot/skins/default/templates/embed/widgets.html (renamed from askbot/skins/default/templates/widgets.html) | 0 | ||||
-rw-r--r-- | askbot/urls.py | 26 | ||||
-rw-r--r-- | askbot/views/widgets.py | 76 |
13 files changed, 125 insertions, 21 deletions
diff --git a/askbot/forms.py b/askbot/forms.py index 5662661a..57b14550 100644 --- a/askbot/forms.py +++ b/askbot/forms.py @@ -351,7 +351,8 @@ class TagNamesField(forms.CharField): def __init__(self, *args, **kwargs): super(TagNamesField, self).__init__(*args, **kwargs) - self.required = askbot_settings.TAGS_ARE_REQUIRED + self.required = kwargs.get('required', + askbot_settings.TAGS_ARE_REQUIRED) self.widget = forms.TextInput( attrs={'size': 50, 'autocomplete': 'off'} ) diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index 90d8df14..ecbd64e5 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -45,7 +45,7 @@ from askbot.models.reply_by_email import ReplyAddress from askbot.models import signals from askbot.models.badges import award_badges_signal, get_badge, BadgeData from askbot.models.repute import Award, Repute, Vote -from askbot.models.widgets import AskWidget +from askbot.models.widgets import AskWidget, QuestionWidget from askbot import auth from askbot.utils.decorators import auto_now_timestamp from askbot.utils.slug import slugify diff --git a/askbot/models/widgets.py b/askbot/models/widgets.py index 3303eca7..e7c4bfab 100644 --- a/askbot/models/widgets.py +++ b/askbot/models/widgets.py @@ -4,7 +4,7 @@ from django.utils.translation import ugettext as _ from askbot.conf import settings as askbot_settings from askbot.models import Tag from askbot.models.tag import get_groups -from askbot.forms import FormWithHideableFields +from askbot.forms import FormWithHideableFields, TagNamesField from askbot.conf import settings as askbot_settings from django import forms @@ -30,6 +30,19 @@ class AskWidget(models.Model): def __unicode__(self): return "Widget: %s" % self.title +class QuestionWidget(models.Model): + title = models.CharField(max_length=100) + question_number = models.PositiveIntegerField(default=7) + tagnames = models.CharField('tags', max_length=50) + group = models.ForeignKey(Tag, null=True, blank=True) + search_query = models.CharField(max_length=50) + style = models.TextField('css for the widget', + default=DEFAULT_INNER_STYLE, blank=True) + + class Meta: + app_label = 'askbot' + +#FORMS class CreateAskWidgetForm(forms.ModelForm, FormWithHideableFields): inner_style = forms.CharField( widget=forms.Textarea, @@ -54,3 +67,14 @@ class CreateAskWidgetForm(forms.ModelForm, FormWithHideableFields): class Meta: model = AskWidget + +class CreateQuestionWidgetForm(forms.ModelForm, FormWithHideableFields): + tagnames = TagNamesField() + + #def __init__(self, *args, **kwargs): + # super(CreateQuestionWidgetForm, self).__init__(*args, **kwargs) + # if not askbot_settings.GROUPS_ENABLED: + # self.hide_field('group') + + class Meta: + model = QuestionWidget diff --git a/askbot/skins/default/templates/ask_by_widget.html b/askbot/skins/default/templates/embed/ask_by_widget.html index f5c2a0a2..f5c2a0a2 100644 --- a/askbot/skins/default/templates/ask_by_widget.html +++ b/askbot/skins/default/templates/embed/ask_by_widget.html diff --git a/askbot/skins/default/templates/ask_widget_complete.html b/askbot/skins/default/templates/embed/ask_widget_complete.html index 580c1f94..580c1f94 100644 --- a/askbot/skins/default/templates/ask_widget_complete.html +++ b/askbot/skins/default/templates/embed/ask_widget_complete.html diff --git a/askbot/skins/default/templates/ask_widget_form.html b/askbot/skins/default/templates/embed/ask_widget_form.html index e082b175..e082b175 100644 --- a/askbot/skins/default/templates/ask_widget_form.html +++ b/askbot/skins/default/templates/embed/ask_widget_form.html diff --git a/askbot/skins/default/templates/delete_ask_widget.html b/askbot/skins/default/templates/embed/delete_ask_widget.html index 17f48b8c..17f48b8c 100644 --- a/askbot/skins/default/templates/delete_ask_widget.html +++ b/askbot/skins/default/templates/embed/delete_ask_widget.html diff --git a/askbot/skins/default/templates/embed/delete_question_widget.html b/askbot/skins/default/templates/embed/delete_question_widget.html new file mode 100644 index 00000000..52783e9d --- /dev/null +++ b/askbot/skins/default/templates/embed/delete_question_widget.html @@ -0,0 +1,13 @@ +{% extends "one_column_body.html" %} +<!-- create_ask_widget.html --> +{% block title %}Delete Ask Question Widget{% endblock %} +{% block content %} +<h1>Are you sure that you cant to delete this Ask Question Widget?</h1> +<br/> +<strong>Warning: This could break the widgets on sites that currently use this widget please make sure that you don't use the widget in other sites</strong> +<form action="." method="POST"> + <p><input type='submit' value='Delete' /> <a href="{% url list_ask_widgets %}">Go Back</a></p> +</form> +{% endblock %} +{% block endjs %} +{% endblock %} diff --git a/askbot/skins/default/templates/list_ask_widget.html b/askbot/skins/default/templates/embed/list_ask_widget.html index 27b8a20a..27b8a20a 100644 --- a/askbot/skins/default/templates/list_ask_widget.html +++ b/askbot/skins/default/templates/embed/list_ask_widget.html diff --git a/askbot/skins/default/templates/question_widget.html b/askbot/skins/default/templates/embed/question_widget.html index 9d32294b..9d32294b 100644 --- a/askbot/skins/default/templates/question_widget.html +++ b/askbot/skins/default/templates/embed/question_widget.html diff --git a/askbot/skins/default/templates/widgets.html b/askbot/skins/default/templates/embed/widgets.html index 4c7a633e..4c7a633e 100644 --- a/askbot/skins/default/templates/widgets.html +++ b/askbot/skins/default/templates/embed/widgets.html diff --git a/askbot/urls.py b/askbot/urls.py index a614c84d..287403b4 100644 --- a/askbot/urls.py +++ b/askbot/urls.py @@ -424,10 +424,30 @@ urlpatterns = patterns('', views.widgets.list_ask_widget, name = 'list_ask_widgets' ), + #url( + # r'^%s%s$' % (_('widgets/'), _('questions/')), + # views.widgets.widget_questions, + # name='widget_questions' + #), url( - r'^%s%s$' % (_('widgets/'), _('questions/')), - views.widgets.widget_questions, - name='widget_questions' + r'^widgets/questions/(?P<widget_id>\d+)/$', + views.widgets.question_widget, + name = 'question_widget' + ), + url( + r'^widgets/question/create/$', + views.widgets.create_question_widget, + name = 'create_question_widget' + ), + url( + r'^widgets/question/edit/(?P<widget_id>\d+)/$', + views.widgets.edit_question_widget, + name = 'edit_question_widget' + ), + url( + r'^widgets/question/delete/(?P<widget_id>\d+)/$', + views.widgets.delete_question_widget, + name = 'delete_question_widget' ), url( r'^feeds/(?P<url>.*)/$', diff --git a/askbot/views/widgets.py b/askbot/views/widgets.py index 5710a179..3d63e056 100644 --- a/askbot/views/widgets.py +++ b/askbot/views/widgets.py @@ -22,7 +22,7 @@ def widgets(request): 'ask_widgets': models.AskWidget.objects.all(), 'page_class': 'widgets' } - return render_into_skin('widgets.html', data, request) + return render_into_skin('embed/widgets.html', data, request) @csrf.csrf_protect def ask_widget(request, widget_id): @@ -92,7 +92,7 @@ def ask_widget(request, widget_id): form = forms.AskWidgetForm(include_text=widget.include_text_field) data = {'form': form, 'widget': widget} - return render_into_skin('ask_by_widget.html', data, request) + return render_into_skin('embed/ask_by_widget.html', data, request) @login_required def ask_widget_complete(request): @@ -107,14 +107,14 @@ def ask_widget_complete(request): del request.session['widget_css'] data = {'question_url': question_url, 'custom_css': custom_css} - return render_into_skin('ask_widget_complete.html', data, request) + return render_into_skin('embed/ask_widget_complete.html', data, request) @decorators.admins_only def list_ask_widget(request): widgets = models.AskWidget.objects.all() data = {'widgets': widgets} - return render_into_skin('list_ask_widget.html', data, request) + return render_into_skin('embed/list_ask_widget.html', data, request) @decorators.admins_only def create_ask_widget(request): @@ -127,7 +127,7 @@ def create_ask_widget(request): form = models.widgets.CreateAskWidgetForm() data = {'form': form} - return render_into_skin('ask_widget_form.html', data, request) + return render_into_skin('embed/ask_widget_form.html', data, request) @decorators.admins_only def edit_ask_widget(request, widget_id): @@ -142,7 +142,7 @@ def edit_ask_widget(request, widget_id): form = models.widgets.CreateAskWidgetForm(instance=widget) data = {'form': form} - return render_into_skin('ask_widget_form.html', data, request) + return render_into_skin('embed/ask_widget_form.html', data, request) @decorators.admins_only def delete_ask_widget(request, widget_id): @@ -151,14 +151,14 @@ def delete_ask_widget(request, widget_id): widget.delete() return redirect('list_ask_widgets') else: - return render_into_skin('delete_ask_widget.html', + return render_into_skin('embed/delete_ask_widget.html', {'widget': widget}, request) #TODO: Add cache def render_ask_widget_js(request, widget_id): widget = get_object_or_404(models.AskWidget, pk=widget_id) variable_name = "AskbotAskWidget%d" % widget.id - content_tpl = get_template('widgets/askbot_widget.js', request) + content_tpl = get_template('embed/askbot_widget.js', request) context_dict = {'widget': widget, 'host': request.get_host(), 'variable_name': variable_name} @@ -169,7 +169,7 @@ def render_ask_widget_js(request, widget_id): def render_ask_widget_css(request, widget_id): widget = get_object_or_404(models.AskWidget, pk=widget_id) variable_name = "AskbotAskWidget%d" % widget.id - content_tpl = get_template('widgets/askbot_widget.css', request) + content_tpl = get_template('embed/askbot_widget.css', request) context_dict = {'widget': widget, 'host': request.get_host(), 'variable_name': variable_name} @@ -183,12 +183,58 @@ def widget_questions(request): # make sure this is a GET request with the correct parameters. if request.method != 'GET': raise Http404 - threads = models.Thread.objects.all() + tags_input = request.GET.get('tags','').strip() if len(tags_input) > 0: tags = [tag.strip() for tag in tags_input.split(',')] - threads = threads.filter(tags__name__in=tags) - data = { - 'threads': threads[:askbot_settings.QUESTIONS_WIDGET_MAX_QUESTIONS] - } - return render_into_skin('question_widget.html', data, request) + threads = models.Thread.objects.filter(tags__name__in=tags)[:askbot_settings.QUESTIONS_WIDGET_MAX_QUESTIONS] + + else: + threads = models.Thread.objects.all()[:askbot_settings.QUESTIONS_WIDGET_MAX_QUESTIONS] + + data = { 'threads': threads } + return render_into_skin('embed/question_widget.html', data, request) + +@decorators.admins_only +def list_question_widget(request): + widgets = models.QuestionWidget.objects.all() + data = {'widgets': widgets} + return render_into_skin('embed/list_question_widget.html', data, request) + +@decorators.admins_only +def create_question_widget(request): + if request.method == 'POST': + form = models.widgets.CreateQuestionWidgetForm(request.POST) + if form.is_valid(): + form.save() + return redirect('list_question_widgets') + else: + form = models.widgets.CreateQuestionWidgetForm() + + data = {'form': form} + return render_into_skin('embed/question_widget_form.html', data, request) + +@decorators.admins_only +def edit_question_widget(request, widget_id): + widget = get_object_or_404(models.QuestionWidget, pk=widget_id) + if request.method == 'POST': + form = models.widgets.CreateQuestionWidgetForm(request.POST, + instance=widget) + if form.is_valid(): + form.save() + return redirect('list_question_widgets') + else: + form = models.widgets.CreateAskWidgetForm(instance=widget) + + data = {'form': form} + return render_into_skin('embed/question_widget_form.html', data, request) + +@decorators.admins_only +def delete_question_widget(request, widget_id): + widget = get_object_or_404(models.QuestionWidget, pk=widget_id) + if request.method == "POST": + widget.delete() + return redirect('list_question_widgets') + else: + return render_into_skin('embed/delete_question_widget.html', + {'widget': widget}, request) |