Exemplo n.º 1
0
def create(request: HttpRequest):
    """
    Create the question endpoint.

    Request content:
    {"subject": "My Subject", "body": "Text of my question", "user_id": 1}
    """
    if not request.user.is_authenticated:
        return HttpResponseForbidden(json.dumps(
            {'message': 'User must be authenticated'}),
                                     content_type='application/json')
    data = json.loads(request.body.decode('utf-8'))
    question = Question()
    if 'subject' in data:
        question.subject = data['subject']
    if 'body' in data:
        question.body = encrypt(data['body'], settings.TEXT_SECRET_CODE)
    question.user_id = request.user.id
    question.status = Question.TO_BE_APPROVED
    question.save()
    return HttpResponse(json.dumps({
        'subject':
        question.subject,
        'body':
        decrypt(question.body, settings.TEXT_SECRET_CODE),
        'user__first_name':
        request.user.first_name,
        'user__last_name':
        request.user.last_name,
        'answers': [],
        'id':
        question.id
    }),
                        content_type='application/json')
Exemplo n.º 2
0
def create_question(request):
    if request.method == 'POST':
        form = CreateQuestion(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            question = cd['question']
            tags = cd['tags']
            question_tlt = cd['question_title']
            q = Question(question_text=question,
                         question_title=question_tlt,
                         pub_date=timezone.now(),
                         creator=request.user,
                         tags_list=tags)
            q.save()

            for t in tags.split(','):
                if len(t) > 0:
                    try:
                        print "Text : " + t
                        print len(t)
                        my_tag = Tags.objects.get(tag_text=t)
                    except (KeyError, Tags.DoesNotExist):
                        tag_create = Tags(tag_text=t)
                        tag_create.save()
                        q.tags.add(tag_create)
                    else:
                        q.tags.add(my_tag)

            return HttpResponseRedirect('/forum/')
    else:
        form = CreateQuestion()
    return render(request, 'forum/create_question.html', {'form': form})
Exemplo n.º 3
0
def test_question_form(user):
    from forum.forms import QuestionForm
    from forum.models import Question

    instance = Question()
    instance.course = mommy.make('Course', slug='dbsql')
    instance.user = user

    data = {
        'title':
        'Test Title',
        'text':
        'asljf asdfhuas dfasdflashfdlusafdlsafdlsa filasdflisalfdiayslfdnsalfdyaslifd',
    }

    form = QuestionForm(instance=instance, data=data)
    assert form.is_valid() is True, form.errors
    form.save()
    assert Question.objects.filter(slug='test-title').exists()

    data = {
        'title':
        '',
        'text':
        'asljf asdfhuas dfasdflashfdlusafdlsafdlsa filasdflisalfdiayslfdnsalfdyaslifd',
    }
    form = QuestionForm(data=data)
    assert form.is_valid() is False

    data = {
        'title': 'Test Title',
        'text': '',
    }
    form = QuestionForm(data=data)
    assert form.is_valid() is False
Exemplo n.º 4
0
    def process_data(self, **data):
        processed_data = self.create_revision_data(True, **data)
        if 'added_at' in data:
            processed_data['added_at'] = data['added_at']

        question = Question(author=self.user, **processed_data)
        question.save()
        self.node = question
Exemplo n.º 5
0
 def post(self, request, **kwargs):
     form = AskQuestionForm(data=request.POST,
                            instance=Question(author=request.user))
     if form.is_valid():
         question = form.save()
         return redirect('forum:question', question_id=question.id)
     kwargs['form'] = form
     return super().get(request, **kwargs)
Exemplo n.º 6
0
    def process_data(self, **data):
        processed_data = self.create_revision_data(True, **data)
        if 'added_at' in data:
            processed_data['added_at'] = data['added_at']

        question = Question(author=self.user, **processed_data)
        question.save()
        self.node = question

        messages.info(REQUEST_HOLDER.request, self.describe(self.user))
Exemplo n.º 7
0
def add_question(request, course_id):
    if request.method == 'POST':
        question_title = request.POST['question_title']
        question_content = request.POST['question_content']
        new_question = Question(title=question_title,
                                content=question_content,
                                course=Course.objects.get(id=course_id),
                                user=request.user,
                                time=datetime.datetime.now())
        new_question.save()
    return HttpResponseRedirect("/course/" + str(course_id))
Exemplo n.º 8
0
 def post(self, request, *args, **kwargs):
     new_question = Question()
     course = get_object_or_404(Course, slug=self.kwargs['course_slug'])
     new_question.course = course
     new_question.user = request.user
     form = QuestionForm(instance=new_question, **self.get_form_kwargs())
     if form.is_valid():
         form.save()
         self.success_url = reverse_lazy('forum_question', kwargs={'slug': new_question.slug})
         return self.form_valid(form)
     else:
         return self.form_invalid(form)
Exemplo n.º 9
0
def post_question(request):
	if not request.user.is_authenticated:
		return redirect("/login/")

	if request.method=="POST":
		text = request.POST.get('editordata')
		cat = request.POST.get('category')
		question = Question(question = text, category = cat, author=request.user)
		mp.track(request.user.username, 'New question',  {"Link":"http://127.0.0.1:8000/", "Question": f"{question.question}"})
		question.save()
		return redirect("/discussion/")

	question = Question.objects.all().order_by('-datetime')
	return render(request, "forum/discussion.html", {"question" : question})
Exemplo n.º 10
0
    def process_data(self, **data):
        processed_data = self.create_revision_data(True, **data)
        if 'added_at' in data:
            processed_data['added_at'] = data['added_at']

        question = Question(author=self.user, **processed_data)

        question.save()
        #BEGIN
        #Linking OSQA node with Magnate zinnia entry
        from zinnia.models.entry import Entry
        try:
            entry_id = int(data['entry_id'])  # not processed_data
            question.about_entries.create(entry=Entry.objects.get(pk=entry_id))
        except (KeyError, ValueError, Entry.DoesNotExist) as e:
            pass
        #END

        self.node = question

        messages.info(REQUEST_HOLDER.request, self.describe(self.user))
Exemplo n.º 11
0
    def process_data(self, **data):
        processed_data = self.create_revision_data(True, **data)
        if 'added_at' in data:
            processed_data['added_at'] = data['added_at']

        question = Question(author=self.user, **processed_data)
        question.save()
        if 'invites' in data:
            question.invites = data['invites'].strip()
            for inviter_name in question.invites.split():
                try:
                    inviter = User.objects.get(username=inviter_name)
                except User.DoesNotExist:
                    if isidvalid(inviter_name):
                        inviter = User(username=userid, email=(userid+ u'@synopsys.com'), real_name=userid, email_isvalid=True)
                        inviter.save()
                    else:
                        continue
                question.whitelist.add(inviter)
        self.node = question

        messages.info(REQUEST_HOLDER.request, self.describe(self.user))