def test_valid_input(self): form_object = forms.AskWidgetForm(include_text=False, data=self.good_data, user=AnonymousUser()) self.assertTrue(form_object.is_valid()) form_object = forms.AskWidgetForm(include_text=False, data=self.good_data_anon, user=AnonymousUser()) self.assertTrue(form_object.is_valid())
def ask_widget(request, widget_id): def post_exercise(data, request): thread = models.Thread.objects.create_new(**data) exercise = thread._exercise_post() request.session['widget_exercise_url'] = exercise.get_absolute_url() return exercise widget = get_object_or_404(models.AskWidget, id=widget_id) if request.method == "POST": form = forms.AskWidgetForm(include_text=widget.include_text_field, data=request.POST) if form.is_valid(): ask_anonymously = form.cleaned_data['ask_anonymously'] title = form.cleaned_data['title'] if widget.include_text_field: text = form.cleaned_data['text'] else: text = ' ' if widget.group: group_id = widget.group.id else: group_id = None if widget.tag: tagnames = widget.tag.name else: tagnames = '' data_dict = { 'title': title, 'added_at': datetime.now(), 'wiki': False, 'text': text, 'tagnames': tagnames, 'group_id': group_id, 'is_anonymous': ask_anonymously } if request.user.is_authenticated(): data_dict['author'] = request.user exercise = post_exercise(data_dict, request) return redirect('ask_by_widget_complete') else: request.session['widget_exercise'] = data_dict next_url = '%s?next=%s' % ( reverse('widget_signin'), reverse('ask_by_widget', args=(widget.id,)) ) return redirect(next_url) else: if 'widget_exercise' in request.session and \ request.GET.get('action', 'post-after-login'): if request.user.is_authenticated(): data_dict = request.session['widget_exercise'] data_dict['author'] = request.user exercise = post_exercise(request.session['widget_exercise'], request) del request.session['widget_exercise'] return redirect('ask_by_widget_complete') else: #FIXME: this redirect is temporal need to create the correct view next_url = '%s?next=%s' % (reverse('widget_signin'), reverse('ask_by_widget')) return redirect(next_url) form = forms.AskWidgetForm(include_text=widget.include_text_field) data = { 'form': form, 'widget': widget, 'editor_type': askbot_settings.EDITOR_TYPE } return render_into_skin('embed/ask_by_widget.html', data, request)