def test_cannot_create_empty_question(self): user, created = User.objects.get_or_create(username='******') election, created = Election.objects.get_or_create(name='BarBaz', owner=user, slug='barbaz') category, created = Category.objects.get_or_create(name='FooCat', slug='foocat', election=election) question = Question(question='', category=category) with self.assertRaises(ValidationError) as e: question.full_clean() expected_error = {'question':[u'This field cannot be blank.']} self.assertEqual(e.message_dict,expected_error)
def test_cannot_create_empty_question(self): user, created = User.objects.get_or_create(username='******') election, created = Election.objects.get_or_create(name='BarBaz', owner=user, slug='barbaz') category, created = Category.objects.get_or_create(name='FooCat', slug='foocat', election=election) question = Question(question='', category=category) with self.assertRaises(ValidationError) as e: question.full_clean() expected_error = {'question': [u'This field cannot be blank.']} self.assertEqual(e.message_dict, expected_error)
def async_create_question(request, category_pk): pass category = get_object_or_404(Category, pk=category_pk, election__owner=request.user) value = request.POST.get('value', None) question = Question(question=value, category=category) try: question.full_clean() question.save() return HttpResponse(json.dumps({"pk": question.pk, "question": question.question}), content_type='application/json') except Exception as e: errors = { 'error':e.message_dict } return HttpResponse(json.dumps(errors), content_type='application/json') # class QuestionCreateAjaxView(CreateView): # model = Question # form_class = QuestionForm # @method_decorator(login_required) # @method_decorator(require_POST) # def dispatch(self, request, *args, **kwargs): # if not request.is_ajax(): # return HttpResponseBadRequest() # self.category = get_object_or_404(Category, pk=kwargs['category_pk'], election__owner=request.user) # if self.category.election.owner != request.user: # return HttpResponseForbidden() # return super(QuestionCreateAjaxView, self).dispatch(request, *args, **kwargs) # def form_valid(self, form): # self.object = form.save(commit=False) # self.object.category = self.category # self.object.save() # return HttpResponse(content=json.dumps({"pk": question.pk, "question": question.question}), # content_type='application/json') # def form_invalid(self, form): # return HttpResponse(content=json.dumps( # {'error': form.errors}), # content_type='application/json') # def get_context_data(self, **kwargs): # context = super(QuestionCreateAjaxView, self).get_context_data(**kwargs) # context['election'] = self.category.election # return context # def get_form_kwargs(self, *args, **kwargs): # self.object = Question(question=self.request.POST['value'],category=self.category) # print(self.object.category) # kwargs = super(QuestionCreateAjaxView, self).get_form_kwargs(*args, **kwargs) # kwargs['election'] = self.category.election # return kwargs