def usage_index(request): 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 render_to_response( 'usage/progress.html', {'task_id': result.task_id}, context_instance=RequestContext(request)) 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 usage_index(request): start, end = get_date_range(request) mc_list = [] for machine_category in MachineCategory.objects.all(): m_list = [] for machine in machine_category.machine_set.all(): time, jobs = machine.get_usage(start, end) if time is None: time = 0 m_list.append({'obj': machine, 'usage': time, 'jobs': jobs}) mc_list.append({ 'obj': machine_category, 'machines': m_list, 'graph': get_machine_graph_url(start, end, machine_category), }) del m_list 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) show_zeros = True institute_list = Institute.active.all() total, total_jobs = 0, 0 i_list = [] m_list = [] start, end = get_date_range(request) available_time, avg_cpus = get_available_time(start, end, machine_category) for m in machine_category.machine_set.all(): time, jobs = m.get_usage(start, end) if time is None: time = 0 m_list.append({'machine': m, 'usage': time, 'jobs': jobs}) for iq in machine_category.institutequota_set.all(): i = iq.institute time, jobs = i.get_usage(start, end, machine_category) if time is None: time = 0 total = total + time total_jobs = total_jobs + jobs try: quota = InstituteQuota.objects.get(institute=i, machine_category=machine_category) display_quota = quota.quota except InstituteQuota.DoesNotExist: display_quota = None else: 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'] = 0 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' 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 = get_institute_graph_url(start, end, machine_category) machines_graph = get_machine_graph_url(start, end, machine_category) trend_graph = get_trend_graph_url(start, end, machine_category) return render_to_response('usage/usage_institute_list.html', locals(), context_instance=RequestContext(request))
def index(request, machine_category_id): 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 render_to_response( 'usage/progress.html', {'task_id': result.task_id}, context_instance=RequestContext(request)) 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 models.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 models.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} if available_time != 0: unused['percent'] = (unused['usage'] / available_time) * 100 else: 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))