Example #1
0
def indicator_plan(request, program):
    """
    This is the GRID report or indicator plan for a program.
    Shows a simple list of indicators sorted by level
    and number. Lives in the "Indicator" home page as a link.
    """
    program = get_object_or_404(Program, id=program)

    verify_program_access_level(request, program.id, 'low')
    if program.results_framework and request.GET.get('orderby') == '2':
        rows = ip.get_rf_rows(ip.tier_sorted_indicator_queryset(program.pk),
                              program.pk)
        ordering = 2
    elif program.results_framework:
        rows = ip.get_rf_rows(ip.chain_sorted_indicator_queryset(program.pk),
                              program.pk)
        ordering = 1
    else:
        rows = ip.get_non_rf_rows(ip.non_rf_indicator_queryset(program.pk))
        ordering = False

    table_width = 4000  #pixels
    return render(
        request, "indicators/indicator_plan.html", {
            'program': program,
            'column_names': ip.column_names(),
            'column_widths': ip.column_widths(1200),
            'table_width': table_width,
            'rows': rows,
            'ordering': ordering
        })
Example #2
0
def dated_target_info(request, pk):
    verify_program_access_level(request, pk, 'low')
    return Response({
        'max_start_date':
        Program.objects.filter(id=pk).annotate(
            ptd=Max('indicator__periodictargets__start_date')).values_list(
                'ptd', flat=True)[0]
    })
def delete_pinned_report(request):
    """
    AJAX call for deleting a PinnedReport
    """
    pinned_report = get_object_or_404(PinnedReport, pk=request.POST.get('pinned_report_id'),
                                      tola_user_id=request.user.tola_user.id)
    verify_program_access_level(request, pinned_report.program.pk, 'low', super_admin_override=True)
    pinned_report.delete()
    return HttpResponse()
Example #4
0
 def list(self, request):
     program = get_object_or_404(Program,
                                 pk=request.query_params.get(
                                     'program_id', None))
     verify_program_access_level(request, program.pk, 'low')
     queryset = program.indicator_set.exclude(
         models.Q(target_frequency=Indicator.EVENT)
         | models.Q(target_frequency__isnull=True)).values(
             'target_frequency').distinct().order_by('target_frequency')
     serializer = ProgramTargetFrequenciesSerializer(queryset, many=True)
     return response.Response(serializer.data)
def create_pinned_report(request):
    """
    AJAX call for creating a PinnedReport
    """
    try:
        Program.objects.get(pk=request.POST.get('program'))
    except Program.DoesNotExist:
        return HttpResponseBadRequest('program does not exist')
    verify_program_access_level(request, request.POST.get('program'), 'low', super_admin_override=True)
    form = PinnedReportForm(request.POST)
    if form.is_valid():
        pr = form.save(commit=False)
        pr.tola_user = request.user.tola_user
        pr.save()
    else:
        return HttpResponseBadRequest(str(form.errors.items()))

    return HttpResponse()