def usage_index(request): if not getattr(settings, 'USAGE_IS_PUBLIC', False): return HttpResponseForbidden('<h1>Access Denied</h1>') result = progress(request) if result is not None: return result start, end = get_date_range(request) result = gen_machine_category_cache(request, start, end) if result is not None: return result mc_list = [] for machine_category in MachineCategory.objects.all(): mc_list.append({ 'obj': machine_category, 'graph': graphs.get_machine_graph_url(start, end, machine_category), }) return render_to_response('usage/mc_list.html', locals(), context_instance=RequestContext(request))
def index(request, machine_category_id): if not getattr(settings, 'USAGE_IS_PUBLIC', False): return HttpResponseForbidden('<h1>Access Denied</h1>') machine_category = get_object_or_404(MachineCategory, pk=machine_category_id) mc_list = MachineCategory.objects.exclude(id__exact=machine_category_id) result = progress(request) if result is not None: return result start, end = get_date_range(request) result = gen_cache_for_machine_category(request, start, end, machine_category) if result is not None: return result show_zeros = True institute_list = Institute.active.all() i_list = [] m_list = [] mc_cache = usage.get_machine_category_usage(machine_category, start, end) total = mc_cache.cpu_time total_jobs = mc_cache.no_jobs available_time = mc_cache.available_time avg_cpus = available_time / (60*24*24) / ((end-start).days + 1) for m_cache in cache.MachineCache.objects.filter(machine__category=machine_category, date=datetime.date.today(), start=start, end=end): m = m_cache.machine time = m_cache.cpu_time jobs = m_cache.no_jobs m_list.append({'machine': m, 'usage': time, 'jobs': jobs}) for i_cache in cache.InstituteCache.objects.filter(machine_category=machine_category, date=datetime.date.today(), start=start, end=end): i = i_cache.institute time = i_cache.cpu_time jobs = i_cache.no_jobs try: quota = InstituteQuota.objects.get(institute=i, machine_category=machine_category) display_quota = quota.quota except InstituteQuota.DoesNotExist: display_quota = None if display_quota is None and time==0 and jobs==0: continue data_row = {'institute': i, 'usage': time, 'jobs': jobs, 'quota': display_quota} if available_time != 0: data_row['percent'] = Decimal(time) / Decimal(available_time) * 100 else: data_row['percent'] = 0 if data_row['quota'] is not None: if data_row['quota'] != 0: data_row['p_used'] = (data_row['percent'] / data_row['quota']) * 100 else: data_row['p_used'] = None data_row['diff'] = data_row['percent'] - data_row['quota'] if data_row['diff'] <= 0: data_row['class'] = 'green' else: data_row['class'] = 'red' else: data_row['class'] = 'green' data_row['diff'] = None data_row['p_used'] = None i_list.append(data_row) # Unused Entry unused = {'usage': available_time - total, 'quota': 0} try: unused['percent'] = (unused['usage'] / available_time) * 100 except ZeroDivisionError: unused['percent'] = 0 unused['diff'] = unused['percent'] - unused['quota'] / 100 if unused['diff'] <= 0: unused['class'] = 'green' else: unused['class'] = 'red' if available_time != 0: utilization = (Decimal(total) / available_time) * 100 else: utilization = 0 institutes_graph = graphs.get_institute_graph_url(start, end, machine_category) machines_graph = graphs.get_machine_graph_url(start, end, machine_category) trend_graph = graphs.get_trend_graph_url(start, end, machine_category) return render_to_response('usage/usage_institute_list.html', locals(), context_instance=RequestContext(request))