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