コード例 #1
0
ファイル: views.py プロジェクト: paula628/gew
def answers_by_question_graph(request, question_id):
    user = session_check(request)
    if not user:
        return redirect('base:login')
    question = get_object_or_None(Question, id=question_id)
    context = {'title': 'Answers: {}'.format(question.name)}
    answers = Answer.objects.filter(question=question, is_active=True)

    averages = []
    emotion_labels = []
    colors = []
    response_count = []
    for k, v in Emotion.EMOTION_COLORS:
        answers_per_emotion = answers.filter(emotion=k)
        intensity_list = answers_per_emotion.values_list('intensity',
                                                         flat=True)
        response_count.append(answers_per_emotion.count())
        if intensity_list:
            intensity_average = sum(intensity_list) / len(intensity_list)
        else:
            intensity_average = 0
        averages.append(intensity_average)
        emotion_labels.append(k)
        colors.append(v)
    context.update({'total_count': answers.count()})
    context.update({
        'count': json.dumps(response_count),
        'averages': json.dumps(averages),
        'emotion_labels': json.dumps(emotion_labels),
        'colors': json.dumps(colors),
    })
    return render(request, 'base/answers_graph.html', context)
コード例 #2
0
ファイル: views.py プロジェクト: paula628/gew
def student_list(request):
    user = session_check(request)
    if not user:
        return redirect('base:login')
    context = {'title': 'List of Students'}
    answers = Answer.objects.filter(question__created_by=user,
                                    is_active=True).order_by('-date')
    students_pk_list = list(set(answers.values_list('created_by', flat=True)))
    page = request.GET.get('page', 1)
    rows = []
    for student_id in students_pk_list:
        student = get_object_or_None(TempUser, id=student_id)
        answers_per_student = answers.filter(
            created_by__id=student_id).order_by('-date')
        latest_answer = answers_per_student.first()
        latest_question = latest_answer.question
        total_per_student = answers_per_student.count()
        student_name = student.name if student else 'Anonymous Users'
        rows.append({
            'name': student_name,
            'count': total_per_student,
            'id': student_id,
            'latest_question': latest_question,
            'latest_answer': latest_answer
        })
    page_objects = paginate(page, rows)
    context.update({'object_list': page_objects})
    return render(request, 'base/student_list.html', context)
コード例 #3
0
ファイル: views.py プロジェクト: paula628/gew
def dashboard(request):
    context = {}
    user = session_check(request)
    if not user:
        return redirect('base:login')
    context['temp_user'] = user
    context['title'] = "Hello, {}!".format(user.name)
    context['latest_questions'] = user.latest_questions()
    return render(request, 'base/dashboard.html', context)
コード例 #4
0
ファイル: views.py プロジェクト: paula628/gew-test
def frequency_graph(request, question_id):
    context = {}
    user = session_check(request)
    if not user:
        return redirect('base:login')
    question = get_object_or_None(Question, id=question_id)
    answers = Answer.objects.filter(question=question, is_active=True)

    context['emotions'] = Emotion.EMOTION_COLORS

    return render(request, 'base/answer_page_old.html', context)
コード例 #5
0
ファイル: views.py プロジェクト: paula628/gew
def delete_question(request, question_id):
    context = {}
    user = session_check(request)
    if not user:
        return redirect('base:login')
    question = get_object_or_404(Question, id=question_id)
    code = question.code
    question.is_active = False
    question.save(update_fields=["is_active"])
    message = 'Question {} has been deleted'.format(code)
    messages.success(request, message)
    return redirect('base:question_list')
コード例 #6
0
ファイル: views.py プロジェクト: paula628/gew-test
def answers_by_student(request, student_id):
    user = session_check(request)
    if not user:
        return redirect('base:login')
    page = request.GET.get('page')
    student = get_object_or_None(TempUser, id=student_id)
    context = {'title' : 'Student Responses: {}'.format(student.name)}
    answers = Answer.objects.filter(question__created_by__id=user.id,
                                    created_by=student, is_active=True).order_by('-date')
    page_objects = paginate(page, answers)
    context['object_list'] = page_objects
    context['student'] = student
    return render(request, 'base/answer_list.html', context)
コード例 #7
0
ファイル: views.py プロジェクト: paula628/gew-test
def answer_list(request, *args, **kwargs):
    user = session_check(request)
    if not user:
        return redirect('base:login')
    context = {}
    mode, mode_id = '', ''
    if 'mode' in kwargs:
        mode= kwargs.get('mode')
        context['mode'] = True
    if 'mode_id' in kwargs:
        mode_id = kwargs.get('mode_id')
    tag = request.GET.get('tag', None)
    page = request.GET.get('page')

    questions = Question.objects.filter(created_by=user, is_active=True)
    tags = questions.values_list('tag', flat=True)
    tags = list(set(filter(None, tags)))
    context['tags'] = tags

    title = 'All Answers'
    answers = Answer.objects.filter(question__created_by__pk=user.id, is_active=True).order_by('-pk')
    date_from = request.GET.get('date_from', None)
    date_to = request.GET.get('date_to', None)
    if date_from:
        datefrom = date_from + " 00:00"
        start_date = make_aware(datetime.datetime.strptime(datefrom, '%d-%m-%Y %H:%M'))
        answers = answers.filter(date__gte=start_date)
        context['date_from'] = date_from
    if date_to:
        dateto = date_to + " 23:59"
        end_date = make_aware(datetime.datetime.strptime(dateto, '%d-%m-%Y %H:%M'))
        answers = answers.filter(date__lte=end_date)
        context['date_to'] = date_to

    if mode == 'question':
        question = get_object_or_None(Question, id=int(mode_id))
        title = 'Answers to Question: {}'.format(question.name)
        answers = answers.filter(question__id=int(mode_id))
        context['question'] = question
    elif (tag and tag != 'all') or mode == 'tag':
        if tag:
            mode_id = tag
        context['tag'] = mode_id
        title = 'Answers by Tag: {}'.format(mode_id)
        answers = answers.filter(question__tag=mode_id)
    page_objects = paginate(page, answers)
    context['title'] = title
    context['object_list'] = page_objects
    context['count'] = answers.count()
    context['mode'] = mode
    return render(request, 'base/answer_list.html', context)
コード例 #8
0
ファイル: views.py プロジェクト: paula628/gew
def create_question(request):
    context = {}
    context['title'] = 'Create a Question'
    user = session_check(request)
    if not user:
        return redirect('base:login')
    form = QuestionForm()
    context.update({'form': form})
    if request.method == 'POST':
        form = QuestionForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('base:question_list')
    return render(request, 'base/question_form.html', context)
コード例 #9
0
ファイル: views.py プロジェクト: paula628/gew-test
def tag_list(request):
    context = {}
    user = session_check(request)
    if not user:
        return redirect('base:login')
    questions = Question.objects.filter(
                                    created_by=user, is_active=True).order_by(
                                    '-date').select_related('answer_set')

    tags = questions.values('tag').annotate(tag_count=Count('tag')).order_by('tag')
    context['title'] = "Tag List"
    context['tags'] = tags
    context['count'] = tags.count()
    return render(request, 'base/tag_list.html', context)
コード例 #10
0
ファイル: views.py プロジェクト: paula628/gew
def answers_by_student_graph(request, student_id=None):
    user = session_check(request)
    if not user:
        return redirect('base:login')
    context = {}
    if student_id:
        student = get_object_or_None(TempUser, id=student_id)
        context.update({'title': 'Student: {}'.format(student.name)})
        answers = Answer.objects.filter(question__created_by=user,
                                        created_by=student,
                                        is_active=True)
    else:
        student = 0
        context.update({'title': 'Anonymous responses'})
        answers = Answer.objects.filter(question__created_by=user,
                                        created_by=None,
                                        is_active=True)
    context['student'] = student

    averages = []
    emotion_labels = []
    colors = []
    response_count = []
    for k, v in Emotion.EMOTION_COLORS:
        answers_per_emotion = answers.filter(emotion=k)
        intensity_list = answers_per_emotion.values_list('intensity',
                                                         flat=True)
        response_count.append(answers_per_emotion.count())
        if intensity_list:
            intensity_average = sum(intensity_list) / len(intensity_list)
        else:
            intensity_average = 0
        averages.append(intensity_average)
        emotion_labels.append(k)
        colors.append(v)
    context.update({'total_count': answers.count()})
    context.update({
        'count': json.dumps(response_count),
        'averages': json.dumps(averages),
        'emotion_labels': json.dumps(emotion_labels),
        'colors': json.dumps(colors),
    })
    return render(request, 'base/answers_graph.html', context)
コード例 #11
0
ファイル: views.py プロジェクト: paula628/gew
def questions_by_tag(request, tag=False):
    context = {}
    user = session_check(request)
    if not user:
        return redirect('base:login')
    if tag:
        questions = Question.objects.filter(created_by=user,
                                            tag=tag,
                                            is_active=True).order_by('-date')
        for q in questions:
            answers = q.answer_set.filter(is_active=True)
            q.answer_count = answers.count()
        context.update({
            'title': 'Question List by Tag: {}'.format(tag),
            'questions': questions,
            'total_tag': questions.count(),
            'tag': tag,
        })
    return render(request, 'base/question_list_by_tag.html', context)
コード例 #12
0
ファイル: views.py プロジェクト: paula628/gew
def update_question(request, question_id):
    context = {}
    context['title'] = 'Update a Question'
    user = session_check(request)
    if not user:
        return redirect('base:login')
    question = get_object_or_404(Question, id=question_id)
    code = question.code
    form = QuestionForm(instance=question)
    context['question'] = question
    context.update({'form': form})
    if request.method == 'POST':
        form = QuestionForm(request.POST, instance=question)
        if form.is_valid():
            obj = form.save(commit=False)
            obj.save()
            msg = 'Question {} has been updated!'.format(code)
            messages.success(request, msg)
            return redirect('base:question_list')
    return render(request, 'base/question_form.html', context)
コード例 #13
0
ファイル: views.py プロジェクト: paula628/gew-test
def question_list(request):
    context = {}
    tags = []
    title = "Question List"
    user = session_check(request)
    if not user:
		return redirect('base:login')
    questions = Question.objects.filter(created_by=user, is_active=True).order_by('-date')
    total = questions.count()
    tags = questions.values_list('tag', flat=True)
    tags = list(set(filter(None, tags)))
    tag = request.GET.get('tag', None)
    keyword = request.GET.get('keyword', None)
    page = request.GET.get('page', None)

    if tag and tag != 'all':
        questions = questions.filter(tag=tag)
        total_tag = questions.count()
        context.update({
                'total_tag': total_tag,
                'tag' : tag
                    })
    elif keyword:
        questions = questions.filter(Q(name__icontains=keyword)|Q(code__icontains=keyword))
        total_keyword = questions.count()
        context.update({
                    'total_keyword': total_keyword,
                    'keyword' : keyword
                    })

    for q in questions:
        q.answer_count = q.response_count
        q.anonymous_count = q.anonymous_response_count

    page_objects = paginate(page, questions)
    context.update({'object_list': page_objects,
                    'total' : total,
                    'tags' : tags,
                    'title' : title })
    return render(request, 'base/question_list.html', context)
コード例 #14
0
ファイル: views.py プロジェクト: paula628/gew-test
def answers_by_tag_graph(request, tag=False):
    user = session_check(request)
    if not user:
        return redirect('base:login')
    context = {}
    if tag:
        context['tag'] = tag
        context.update({'title' : 'Tag: {}'.format(tag)})
        answers = Answer.objects.filter(question__created_by=user,
                                        question__tag=tag,
                                        is_active=True)

    averages = []
    emotion_labels = []
    emotion_colors = []
    colors = []
    response_count = []
    for k, v in Emotion.EMOTION_COLORS:
        answers_per_emotion = answers.filter(emotion=k)
        intensity_list = answers_per_emotion.values_list('intensity', flat=True)
        response_count.append(answers_per_emotion.count())
        if intensity_list:
            intensity_average = sum(intensity_list)/ len(intensity_list)
        else:
            intensity_average = 0
        if k != 'none' and k != 'other':
            averages.append(intensity_average)
            colors.append(v)
            emotion_colors.append(k)
        emotion_labels.append(k)
    context.update({'total_count' : answers.count()})
    context.update({
                'count': json.dumps(response_count),
                'averages': json.dumps(averages),
                'emotion_all' : json.dumps(emotion_labels),
                'emotion_colors' : json.dumps(emotion_colors),
                'colors': json.dumps(colors),
                })
    return render(request, 'base/answers_graph_by_student_tag.html', context)