def institute_detail(request, institute_id): institute = get_object_or_404(Institute, pk=institute_id) if institute.is_active: graph = get_institute_trend_graph_url(institute) return render_to_response('institutes/institute_detail.html', locals(), context_instance=RequestContext(request))
def institute_usage(request, institute_id, machine_category_id=settings.DEFAULT_MC): machine_category = get_object_or_404(MachineCategory, pk=machine_category_id) institute = get_object_or_404(Institute, pk=institute_id) project_list = [] start, end = get_date_range(request) institute_list = Institute.active.all() if not institute.can_view(request.user) and not getattr(settings, 'USAGE_IS_PUBLIC', False): return HttpResponseForbidden('<h1>Access Denied</h1>') available_usage, ave_cpus = get_available_time(start, end, machine_category) querystring = request.META.get('QUERY_STRING', '') quota = get_object_or_404(InstituteChunk, institute=institute, machine_category=machine_category) i_usage, i_jobs = institute.get_usage(start, end, machine_category) if i_jobs > 0: for p in institute.project_set.filter(machine_categories=machine_category): p_usage, p_jobs = p.get_usage(start, end, machine_category) chunk, created = p.projectchunk_set.get_or_create(machine_category=machine_category) if p_jobs > 0: mpots = chunk.get_mpots() if mpots: try: percent = (mpots / chunk.get_cap()) * 100 except ZeroDivisionError: percent = 0 else: percent = 0 try: quota_percent = p_usage / (available_usage * quota.quota) * 10000 except: quota_percent = 0 project_list.append( {'project': p, 'usage': p_usage, 'jobs': p_jobs, 'percent': percent, 'quota_percent': quota_percent, }) user_list = [] user_total, user_total_jobs = 0, 0 if i_usage: for u in UserCache.objects.order_by('-cpu_hours').filter(start=start, end=end).filter(project__institute=institute).filter(project__machine_categories=machine_category)[:5]: if not u.cpu_hours: continue user_total += u.cpu_hours user_total_jobs += u.no_jobs try: quota_percent = u.cpu_hours / (available_usage * quota.quota) * 10000 except ZeroDivisionError: quota_percent = 0 user_list.append( {'user': u.user, 'project': u.project, 'usage': u.cpu_hours, 'jobs': u.no_jobs, 'percent': ((u.cpu_hours / i_usage) * 100), 'quota_percent': quota_percent, }) user_percent = (user_total / i_usage) * 100 graph = get_institute_trend_graph_url(institute, start, end, machine_category) return render_to_response('usage/usage_institute_detail.html', locals(), context_instance=RequestContext(request))