Exemple #1
0
def answer_question(request, question):
    """Record answer to question, only tutors can answer question

    Then publish the event
    """
    if request.method == 'POST':
        form = AnswerQuestionForm(data=request.POST)
        message = {"success": True}
        if form.is_valid():
            question = form.save(question)
            channel = "classroom_{0}".format(question.classroom.pk)
            message = {
                "type": "answer_question",
                "question": {
                    "pk": question.pk,
                    "subject": question.subject,
                    "content": question.content,
                    "student": question.student.username,
                    "vote_count": question.vote_count(),
                    "answer": question.answer,
                }
            }
            publish(channel, message)
        else:
            message = {"error": form.errors}
            return HttpResponseBadRequest(message)
        return HttpResponse(json.dumps(message))
    return HttpResponseNotFound("Need to post")
Exemple #2
0
def answer_question(request, question):
    """Record answer to question, only tutors can answer question

    Then publish the event
    """
    if request.method == 'POST':
        form = AnswerQuestionForm(data=request.POST)
        message = {"success": True}
        if form.is_valid():
            question = form.save(question)
            channel = "classroom_{0}".format(question.classroom.pk)
            message = {
                "type": "answer_question",
                "question": {
                    "pk": question.pk,
                    "subject": question.subject,
                    "content": question.content,
                    "student": question.student.username,
                    "vote_count": question.vote_count(),
                    "answer": question.answer,
                }
            }
            publish(channel, message)
        else:
            message = {"error": form.errors}
            return HttpResponseBadRequest(message)
        return HttpResponse(json.dumps(message))
    return HttpResponseNotFound("Need to post")
Exemple #3
0
def ask_question(request, classroom):
    """Ask question for specific class

    Need to publish the question to rest of classroom
    """
    if request.method == 'POST':
        form = AskQuestionForm(data=request.POST)
        if form.is_valid():
            question = form.save(request.user, classroom)
            message = {"success": True}
            channel = "classroom_{0}".format(classroom.pk)
            pub_message = {
                "type": "new_question",
                "question": {
                    "pk": question.pk,
                    "subject": question.subject,
                    "content": question.content,
                    "student": question.student.username,
                    "up_vote_url": reverse("question_up_vote",
                                           args=[question.pk]),
                }
            }
            publish(channel, pub_message)
        else:
            message = {"error": form.errors}
            print message
            return HttpResponseBadRequest(message)
        return HttpResponse(json.dumps(message))
    return HttpResponseNotFound("Need to post")
Exemple #4
0
def ask_question(request, classroom):
    """Ask question for specific class

    Need to publish the question to rest of classroom
    """
    if request.method == 'POST':
        form = AskQuestionForm(data=request.POST)
        if form.is_valid():
            question = form.save(request.user, classroom)
            message = {"success": True}
            channel = "classroom_{0}".format(classroom.pk)
            pub_message = {
                "type": "new_question",
                "question": {
                    "pk": question.pk,
                    "subject": question.subject,
                    "content": question.content,
                    "student": question.student.username,
                    "up_vote_url": reverse(
                        "question_up_vote", args=[question.pk]
                    ),
                }
            }
            publish(channel, pub_message)
        else:
            message = {"error": form.errors}
            print message
            return HttpResponseBadRequest(message)
        return HttpResponse(json.dumps(message))
    return HttpResponseNotFound("Need to post")
Exemple #5
0
def class_step(request, classroom, step_id):
    step = get_object_or_404(Step, pk=step_id)
    channel = "classroom_{0}".format(classroom.pk)
    pub_message = {
        "type": "step",
        "data": {
            "pk": step.pk,
            "name": step.name,
            "content": step.content
        }
    }
    publish(channel, pub_message)
    return HttpResponse(json.dumps({"success": True}))
Exemple #6
0
def class_step(request, classroom, step_id):
    step = get_object_or_404(Step, pk=step_id)
    channel = "classroom_{0}".format(classroom.pk)
    pub_message = {
        "type": "step",
        "data": {
            "pk": step.pk,
            "name": step.name,
            "content": step.content
        }
    }
    publish(channel, pub_message)
    return HttpResponse(json.dumps({"success": True}))
Exemple #7
0
def publish_top_questions(classroom):
    """Get a list of the highest voted questions for a classroom and publish"""
    top_questions = []
    for question in classroom.top_questions():
        top_questions.append({
            "pk": question.pk,
            "subject": question.subject,
            "content": question.content,
            "student": question.student.username,
            "vote_count": question.vote_count(),
        })
    channel = "classroom_{0}".format(classroom.pk)
    message = {"type": "top_question", "questions": top_questions}
    publish(channel, message)
Exemple #8
0
def class_interest(request, classroom_id):
    """Mark students interest in the class"""
    classroom = get_object_or_404(ClassRoom, pk=classroom_id)
    interest, created = ClassRoomStudentInterest.objects.get_or_create(
        student=request.user, classroom=classroom)
    # publish interest to class channel, only if interest added
    if created:
        channel = "classes"
        message = {
            "type": "interest",
            "classroom": classroom.pk,
            "interest": classroom.interest(),
        }
        publish(channel, message)
    return HttpResponse(json.dumps({"success": True}))
Exemple #9
0
def class_scratchpad(request, classroom):
    """Publish scratchpad to students"""
    if request.method == 'POST':
        form = ScratchpadForm(data=request.POST)
        if form.is_valid():
            message = {"success": True}
            channel = "classroom_{0}".format(classroom.pk)
            pub_message = {
                "type": "scratchpad",
                "data": form.cleaned_data['content']
            }
            publish(channel, pub_message)
        else:
            message = {"error": form.errors}
            return HttpResponseBadRequest(message)
        return HttpResponse(json.dumps(message))
    return HttpResponseNotFound("Need to post")
Exemple #10
0
def publish_top_questions(classroom):
    """Get a list of the highest voted questions for a classroom and publish"""
    top_questions = []
    for question in classroom.top_questions():
        top_questions.append({
            "pk": question.pk,
            "subject": question.subject,
            "content": question.content,
            "student": question.student.username,
            "vote_count": question.vote_count(),
        })
    channel = "classroom_{0}".format(classroom.pk)
    message = {
        "type": "top_question",
        "questions": top_questions
    }
    publish(channel, message)
Exemple #11
0
def class_interest(request, classroom_id):
    """Mark students interest in the class"""
    classroom = get_object_or_404(ClassRoom, pk=classroom_id)
    interest, created = ClassRoomStudentInterest.objects.get_or_create(
        student=request.user,
        classroom=classroom
    )
    # publish interest to class channel, only if interest added
    if created:
        channel = "classes"
        message = {
            "type": "interest",
            "classroom": classroom.pk,
            "interest": classroom.interest(),
        }
        publish(channel, message)
    return HttpResponse(json.dumps({"success": True}))
Exemple #12
0
def class_scratchpad(request, classroom):
    """Publish scratchpad to students"""
    if request.method == 'POST':
        form = ScratchpadForm(data=request.POST)
        if form.is_valid():
            message = {"success": True}
            channel = "classroom_{0}".format(classroom.pk)
            pub_message = {
                "type": "scratchpad",
                "data": form.cleaned_data['content']
            }
            publish(channel, pub_message)
        else:
            message = {"error": form.errors}
            return HttpResponseBadRequest(message)
        return HttpResponse(json.dumps(message))
    return HttpResponseNotFound("Need to post")