Exemple #1
0
def monitorings_list(request, monitoring_status='unpublished'):
    """
    List of monitorings for experts
    """
    if not request.user.userprofile.is_expert:
        raise PermissionDenied

    # Process monitorings_index_columns_form data to know what columns to show in table
    columns_form = monitorings_index_columns_form(request)
    if columns_form.post_ok(request):
        # After form submission redirect to the same page.
        return HttpResponseRedirect(request.path)

    monitorings = perm_filter(request.user, 'view_monitoring',
                              Monitoring.objects.all())

    template_name = 'home/monitorings_unpublished.html'
    queryform = MonitoringsQueryForm(request.GET)
    context = {'queryform': queryform, 'columns_form': columns_form}

    if monitoring_status == 'unpublished':
        monitorings = monitorings.exclude(
            status=MONITORING_PUBLISHED).order_by('-status', 'publish_date')
        db_statuses = monitorings.order_by('status').values_list(
            'status', flat=True).distinct()

        if queryform.is_valid():
            monitorings = queryform.apply(monitorings)

        statuses = []
        for status, status_name in reversed(MONITORING_STATUS[:-1]):
            statuses.append({
                'name':
                status_name,
                'unfiltered_monitorings_exist':
                status in db_statuses,
                'monitorings_list':
                monitorings.filter(status=status)
            })

        context.update({'statuses': statuses})

    elif monitoring_status == 'published':
        template_name = 'home/monitorings_published.html'
        monitorings = monitorings.filter(
            status=MONITORING_PUBLISHED).order_by('-publish_date')
        monitorings_exist = monitorings.exists()

        if queryform.is_valid():
            monitorings = queryform.apply(monitorings)

        context.update({
            'monitorings': monitorings,
            'monitorings_exist': monitorings_exist
        })

    return TemplateResponse(request, template_name, context)
Exemple #2
0
def tasks_by_monitoring(request, monitoring_pk):
    user = request.user
    monitoring = get_object_or_404(Monitoring, pk=monitoring_pk)
    if not user.is_expert or not user.has_perm('exmo2010.view_monitoring',
                                               monitoring):
        raise PermissionDenied

    title = _('Task list for %(monitoring)s') % {'monitoring': monitoring}
    headers = [
        (_('organization'), 'organization__name', 'organization__name', None,
         None),
        (_('status'), 'status', 'status', int, Task.TASK_STATUS),
        (_('complete, %'), None, None, None, None),
    ]

    if user.is_expertA:
        users = User.objects.filter(
            task__organization__monitoring=monitoring).distinct()
        user_choice = [(u.username, u.profile.legal_name) for u in users]
        headers.insert(1, (_('expert'), 'user__username', 'user__username',
                           None, user_choice))
    else:
        filter1 = request.GET.get('filter1')
        if filter1:
            try:
                int(filter1)
            except ValueError:
                request.GET = QueryDict('')

    tasks = Task.objects.filter(
        organization__monitoring=monitoring).select_related(
            'user__userprofile', 'organization')

    # TODO: use queryform instead of table().
    return table(
        request,
        headers,
        queryset=perm_filter(request.user, 'view_task',
                             tasks).prefetch_related('qanswer_set'),
        paginate_by=50,
        extra_context={
            'monitoring': annotate_exmo_perms(monitoring, request.user),
            'title': title,
            'invcodeform': SettingsInvCodeForm(),
        },
        template_name="manage_monitoring/tasks.html",
    )
Exemple #3
0
def monitorings_list(request, monitoring_status='unpublished'):
    """
    List of monitorings for experts
    """
    if not request.user.userprofile.is_expert:
        raise PermissionDenied

    # Process monitorings_index_columns_form data to know what columns to show in table
    columns_form = monitorings_index_columns_form(request)
    if columns_form.post_ok(request):
        # After form submission redirect to the same page.
        return HttpResponseRedirect(request.path)

    monitorings = perm_filter(request.user, 'view_monitoring', Monitoring.objects.all())

    template_name = 'home/monitorings_unpublished.html'
    queryform = MonitoringsQueryForm(request.GET)
    context = {'queryform': queryform, 'columns_form': columns_form}

    if monitoring_status == 'unpublished':
        monitorings = monitorings.exclude(status=MONITORING_PUBLISHED).order_by('-status', 'publish_date')
        db_statuses = monitorings.order_by('status').values_list('status', flat=True).distinct()

        if queryform.is_valid():
            monitorings = queryform.apply(monitorings)

        statuses = []
        for status, status_name in reversed(MONITORING_STATUS[:-1]):
            statuses.append({'name': status_name,
                             'unfiltered_monitorings_exist': status in db_statuses,
                             'monitorings_list': monitorings.filter(status=status)})

        context.update({'statuses': statuses})

    elif monitoring_status == 'published':
        template_name = 'home/monitorings_published.html'
        monitorings = monitorings.filter(status=MONITORING_PUBLISHED).order_by('-publish_date')
        monitorings_exist = monitorings.exists()

        if queryform.is_valid():
            monitorings = queryform.apply(monitorings)

        context.update({'monitorings': monitorings,
                        'monitorings_exist': monitorings_exist})

    return TemplateResponse(request, template_name, context)
Exemple #4
0
def tasks_by_monitoring(request, monitoring_pk):
    user = request.user
    monitoring = get_object_or_404(Monitoring, pk=monitoring_pk)
    if not user.is_expert or not user.has_perm('exmo2010.view_monitoring', monitoring):
        raise PermissionDenied

    title = _('Task list for %(monitoring)s') % {'monitoring': monitoring}
    headers = [
        (_('organization'), 'organization__name', 'organization__name', None, None),
        (_('status'), 'status', 'status', int, Task.TASK_STATUS),
        (_('complete, %'), None, None, None, None),
    ]

    if user.is_expertA:
        users = User.objects.filter(task__organization__monitoring=monitoring).distinct()
        user_choice = [(u.username, u.profile.legal_name) for u in users]
        headers.insert(1, (_('expert'), 'user__username', 'user__username', None, user_choice))
    else:
        filter1 = request.GET.get('filter1')
        if filter1:
            try:
                int(filter1)
            except ValueError:
                request.GET = QueryDict('')

    tasks = Task.objects.filter(organization__monitoring=monitoring).select_related('user__userprofile', 'organization')

    # TODO: use queryform instead of table().
    return table(
        request,
        headers,
        queryset=perm_filter(request.user, 'view_task', tasks).prefetch_related('qanswer_set'),
        paginate_by=50,
        extra_context={
            'monitoring': annotate_exmo_perms(monitoring, request.user),
            'title': title,
            'invcodeform': SettingsInvCodeForm(),
        },
        template_name="manage_monitoring/tasks.html",
    )