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")
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")
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")
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}))
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)
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}))
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")
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)
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}))