Beispiel #1
0
def message_feed(request, pks):
    polls = retrieve_poll(request, pks)
    poll = polls[0]
    return render_to_response('/ureport/partials/viz/message_feed.html'
        , {'poll': poll,
           'responses': _get_responses(poll)},
                              context_instance=RequestContext(request))
def best_visualization(request, poll_id=None):
    module = False
    if 'module' in request.GET:
        module = True
    polls = retrieve_poll(request, poll_id)
    poll = polls[0]

    #    if poll_id:
    #        poll = Poll.objects.get(pk=poll_id)
    #    else:
    #        poll = Poll.objects.latest('start_date')

    rate = poll.responses.count() * 100 / poll.contacts.count()
    dict = {
        'poll': poll,
        'polls': [poll],
        'unlabeled': True,
        'module': module,
        'rate': int(rate),
        }
    if poll.type == Poll.TYPE_TEXT and not  ResponseCategory.objects.filter(response__poll=poll):
        dict.update({'tags': _get_tags(polls),
                    'responses': _get_responses(poll),
                    'poll_id': poll.pk})
    return render_to_response('ureport/partials/viz/best_visualization.html'
                              , dict,
                              context_instance=RequestContext(request))
def best_visualization(request, poll_id=None):
    module = False
    if 'module' in request.GET:
        module = True
    polls = retrieve_poll(request, poll_id)
    try:
        poll = polls[0]
    except IndexError:
        raise Http404

    #    if poll_id:
    #        poll = Poll.objects.get(pk=poll_id)
    #    else:
    #        poll = Poll.objects.latest('start_date')
    try:
        rate = poll.responses.count() * 100 / poll.contacts.count()
    except ZeroDivisionError:
        rate = 0

    dict_to_render = {
        'poll': poll,
        'polls': [poll],
        'unlabeled': True,
        'module': module,
        'rate': int(rate),
        }
    if poll.type == Poll.TYPE_TEXT and not  poll.categories.exists():
        dict_to_render.update({'tags': _get_tags(polls),
                    'responses': _get_responses(poll),
                    'poll_id': poll.pk})
    return render_to_response('ureport/partials/viz/best_visualization.html'
                              , dict_to_render,
                              context_instance=RequestContext(request))
Beispiel #4
0
def best_visualization(request, poll_id=None):
    module = False
    if 'module' in request.GET:
        module = True
    polls = retrieve_poll(request, poll_id)
    try:
        poll = polls[0]
    except IndexError:
        raise Http404

    #    if poll_id:
    #        poll = Poll.objects.get(pk=poll_id)
    #    else:
    #        poll = Poll.objects.latest('start_date')
    try:
        rate = poll.responses.count() * 100 / poll.contacts.count()
    except ZeroDivisionError:
        rate = 0

    dict_to_render = {
        'poll': poll,
        'polls': [poll],
        'unlabeled': True,
        'module': module,
        'rate': int(rate),
    }
    if poll.type == Poll.TYPE_TEXT and not poll.categories.exists():
        dict_to_render.update({
            'tags': _get_tags(polls),
            'responses': _get_responses(poll),
            'poll_id': poll.pk
        })
    return render_to_response('ureport/partials/viz/best_visualization.html',
                              dict_to_render,
                              context_instance=RequestContext(request))
def tag_cloud(request, pks):
    """
        generates a tag cloud
    """

    polls = retrieve_poll(request, pks)

    poll_qn = ['Qn:' + ' '.join(textwrap.wrap(poll.question.rsplit('?'
               )[0])) + '?' for poll in polls]

    tags = _get_tags(polls)
    return render_to_response('ureport/partials/tag_cloud/tag_cloud.html'
                              , {
        'poll': polls[0],
        'tags': tags,
        'poll_qn': poll_qn[0],
        'poll_id': pks,
        }, context_instance=RequestContext(request))
Beispiel #6
0
def tag_cloud(request, pks):
    """
        generates a tag cloud
    """

    polls = retrieve_poll(request, pks)

    poll_qn = [
        'Qn:' + ' '.join(textwrap.wrap(poll.question.rsplit('?')[0])) + '?'
        for poll in polls
    ]

    tags = _get_tags(polls)
    return render_to_response('ureport/partials/tag_cloud/tag_cloud.html', {
        'poll': polls[0],
        'tags': tags,
        'poll_qn': poll_qn[0],
        'poll_id': pks,
    },
                              context_instance=RequestContext(request))
def show_timeseries(request, pks):
    polls = retrieve_poll(request, pks)
    poll_obj = polls[0]
    responses = Response.objects.filter(poll=poll_obj)
    start_date = poll_obj.start_date
    end_date = poll_obj.end_date or datetime.datetime.now()
    poll = poll_obj.question.replace('"', '\\"')
    interval = datetime.timedelta(minutes=60)
    current_date = start_date
    message_count_list = []
    while current_date < end_date:
        count = responses.filter(message__date__range=(start_date,
                                 current_date)).count()
        message_count_list.append(count)
        current_date += interval

    return render_to_response('ureport/partials/viz/timeseries.html', {
        'counts': mark_safe(message_count_list),
        'start': start_date,
        'end': end_date,
        'poll': mark_safe(poll),
        }, context_instance=RequestContext(request))
Beispiel #8
0
def show_timeseries(request, pks):
    polls = retrieve_poll(request, pks)
    poll_obj = polls[0]
    responses = Response.objects.filter(poll=poll_obj)
    start_date = poll_obj.start_date
    end_date = poll_obj.end_date or datetime.datetime.now()
    poll = poll_obj.question.replace('"', '\\"')
    interval = datetime.timedelta(minutes=60)
    current_date = start_date
    message_count_list = []
    while current_date < end_date:
        count = responses.filter(message__date__range=(start_date,
                                                       current_date)).count()
        message_count_list.append(count)
        current_date += interval

    return render_to_response('ureport/partials/viz/timeseries.html', {
        'counts': mark_safe(message_count_list),
        'start': start_date,
        'end': end_date,
        'poll': mark_safe(poll),
    },
                              context_instance=RequestContext(request))
def histogram(request, pks=None):
    """
         view for numeric polls
    """

    all_polls = Poll.objects.filter(type=u'n')
    pks = (pks if pks != None else request.GET.get('pks', None))
    if pks:
        items = 6
        polls = retrieve_poll(request, pks)
        responses = Response.objects.filter(poll__in=polls)
        pks = polls.values_list('pk', flat=True)
        responses = Response.objects.filter(poll__in=polls,
                poll__type=u'n')
        plottable_data = {}
        if responses:
            poll_results = {}
            poll_qns = ['Qn:' + poll.question + '<br>' for poll in
                        Poll.objects.filter(pk__in=pks)]

            total_responses = responses.count()
            vals_list = \
                Value.objects.filter(entity_id__in=responses).values_list('value_float'
                    , flat=True)
            vals_list = sorted(vals_list)
            max = int(vals_list[-1])
            min = int(vals_list[0])
            num_list = range(min, max)
            increment = int(max / items)
            bounds = num_list[::increment]
            ranges_list = [str(a) + '-' + str(a + increment) for a in
                           bounds if a < max]
            poll_results['categories'] = ranges_list
            poll_results['title'] = poll_qns

            for response in responses:
                name = response.poll.name
                poll_results.setdefault(name, {})
                poll_results[name].setdefault('data', {})
                if len(response.eav_values.all()) > 0:
                    value = \
                        int(response.eav_values.all()[0].value_float)
                pos = bisect.bisect_right(bounds, value) - 1
                r = ranges_list[pos]
                poll_results[name]['data'].setdefault(r, 0)
                poll_results[name]['data'][r] += 1

            data = []
            for key in poll_results.keys():
                if key not in ['categories', 'title']:
                    d = {}
                    d['name'] = key
                    d['data'] = poll_results[key]['data'].values()
                    data.append(d)
            plottable_data['data'] = data
            plottable_data['title'] = poll_qns
            plottable_data['categories'] = ranges_list
            plottable_data['mean'] = sum(vals_list) / len(vals_list)
            plottable_data['median'] = vals_list[len(vals_list) / 2]
        return HttpResponse(mark_safe(simplejson.dumps(plottable_data)))

    return render_to_response('ureport/partials/viz/histogram.html',
                              {'polls': all_polls},
                              context_instance=RequestContext(request))
Beispiel #10
0
def histogram(request, pks=None):
    """
         view for numeric polls
    """

    all_polls = Poll.objects.filter(type=u'n')
    pks = (pks if pks != None else request.GET.get('pks', None))
    if pks:
        items = 6
        polls = retrieve_poll(request, pks)
        responses = Response.objects.filter(poll__in=polls)
        pks = polls.values_list('pk', flat=True)
        responses = Response.objects.filter(poll__in=polls, poll__type=u'n')
        plottable_data = {}
        if responses:
            poll_results = {}
            poll_qns = [
                'Qn:' + poll.question + '<br>'
                for poll in Poll.objects.filter(pk__in=pks)
            ]

            total_responses = responses.count()
            vals_list = \
                Value.objects.filter(entity_id__in=responses).values_list('value_float'
                    , flat=True)
            vals_list = sorted(vals_list)
            max = int(vals_list[-1])
            min = int(vals_list[0])
            num_list = range(min, max)
            increment = int(max / items)
            bounds = num_list[::increment]
            ranges_list = [
                str(a) + '-' + str(a + increment) for a in bounds if a < max
            ]
            poll_results['categories'] = ranges_list
            poll_results['title'] = poll_qns

            for response in responses:
                name = response.poll.name
                poll_results.setdefault(name, {})
                poll_results[name].setdefault('data', {})
                if len(response.eav_values.all()) > 0:
                    value = \
                        int(response.eav_values.all()[0].value_float)
                pos = bisect.bisect_right(bounds, value) - 1
                r = ranges_list[pos]
                poll_results[name]['data'].setdefault(r, 0)
                poll_results[name]['data'][r] += 1

            data = []
            for key in poll_results.keys():
                if key not in ['categories', 'title']:
                    d = {}
                    d['name'] = key
                    d['data'] = poll_results[key]['data'].values()
                    data.append(d)
            plottable_data['data'] = data
            plottable_data['title'] = poll_qns
            plottable_data['categories'] = ranges_list
            plottable_data['mean'] = sum(vals_list) / len(vals_list)
            plottable_data['median'] = vals_list[len(vals_list) / 2]
        return HttpResponse(mark_safe(simplejson.dumps(plottable_data)))

    return render_to_response('ureport/partials/viz/histogram.html',
                              {'polls': all_polls},
                              context_instance=RequestContext(request))
def histogram3(request, pks=None):
	p= retrieve_poll(request, pks)
	return render_to_response('ureport/partials/viz/histogram.html',{'polls': p},context_instance=RequestContext(request))