Remove SortedDict, add user, team, credential, and job_template counts as top level dictionaries. Refinement for AC-649

This commit is contained in:
Matthew Jones
2013-11-20 15:19:53 -05:00
parent 83950be7ea
commit 7929cfedd8

View File

@@ -139,26 +139,26 @@ class DashboardView(APIView):
data = SortedDict() data = SortedDict()
user_inventory = get_user_queryset(request.user, Inventory) user_inventory = get_user_queryset(request.user, Inventory)
failed_inventory = sum(i.inventory_sources_with_failures for i in user_inventory) failed_inventory = sum(i.inventory_sources_with_failures for i in user_inventory)
data['inventories'] = SortedDict({'url': reverse('api:inventory_list'), data['inventories'] = {'url': reverse('api:inventory_list'),
'total': user_inventory.count(), 'total': user_inventory.count(),
#'job_failed' #'job_failed'
'inventory_failed': failed_inventory}) 'inventory_failed': failed_inventory}
user_inventory_sources = get_user_queryset(request.user, InventorySource) user_inventory_sources = get_user_queryset(request.user, InventorySource)
rax_inventory_sources = user_inventory_sources.filter(source='rax') rax_inventory_sources = user_inventory_sources.filter(source='rax')
rax_inventory_failed = rax_inventory_sources.filter(status='failed') rax_inventory_failed = rax_inventory_sources.filter(status='failed')
ec2_inventory_sources = user_inventory_sources.filter(source='ec2') ec2_inventory_sources = user_inventory_sources.filter(source='ec2')
ec2_inventory_failed = ec2_inventory_sources.filter(status='failed') ec2_inventory_failed = ec2_inventory_sources.filter(status='failed')
data['inventory_sources'] = {} data['inventory_sources'] = {}
data['inventory_sources']['rax'] = SortedDict({'url': reverse('api:inventory_source_list') + "?source=rax", data['inventory_sources']['rax'] = {'url': reverse('api:inventory_source_list') + "?source=rax",
'label': 'Rackspace', 'label': 'Rackspace',
'failures_url': reverse('api:inventory_source_list') + "?source=rax&status=failed", 'failures_url': reverse('api:inventory_source_list') + "?source=rax&status=failed",
'total': rax_inventory_sources.count(), 'total': rax_inventory_sources.count(),
'failed': rax_inventory_failed.count()}) 'failed': rax_inventory_failed.count()}
data['inventory_sources']['ec2'] = SortedDict({'url': reverse('api:inventory_source_list') + "?source=ec2", data['inventory_sources']['ec2'] = {'url': reverse('api:inventory_source_list') + "?source=ec2",
'failures_url': reverse('api:inventory_source_list') + "?source=ec2&status=failed", 'failures_url': reverse('api:inventory_source_list') + "?source=ec2&status=failed",
'label': 'Amazon EC2', 'label': 'Amazon EC2',
'total': ec2_inventory_sources.count(), 'total': ec2_inventory_sources.count(),
'failed': ec2_inventory_failed.count()}) 'failed': ec2_inventory_failed.count()}
user_groups = get_user_queryset(request.user, Group) user_groups = get_user_queryset(request.user, Group)
failed_group_inventory = [g.inventory for g in user_groups if g.inventory.has_active_failures] failed_group_inventory = [g.inventory for g in user_groups if g.inventory.has_active_failures]
@@ -168,25 +168,25 @@ class DashboardView(APIView):
if j.failed: if j.failed:
group_with_job_failure += 1 group_with_job_failure += 1
break break
data['groups'] = SortedDict({'url': reverse('api:group_list'), data['groups'] = {'url': reverse('api:group_list'),
'failures_url': reverse('api:group_list') + "?has_active_failures=True", 'failures_url': reverse('api:group_list') + "?has_active_failures=True",
'total': user_groups.count(), 'total': user_groups.count(),
'job_failed': group_with_job_failure, 'job_failed': group_with_job_failure,
'inventory_failed': len(failed_group_inventory)}) 'inventory_failed': len(failed_group_inventory)}
user_hosts = get_user_queryset(request.user, Host) user_hosts = get_user_queryset(request.user, Host)
user_hosts_failed = user_hosts.filter(has_active_failures=True) user_hosts_failed = user_hosts.filter(has_active_failures=True)
data['hosts'] = SortedDict({'url': reverse('api:host_list'), data['hosts'] = {'url': reverse('api:host_list'),
'failures_url': reverse('api:host_list') + "?has_active_failures=True", 'failures_url': reverse('api:host_list') + "?has_active_failures=True",
'total': user_hosts.count(), 'total': user_hosts.count(),
'failed': user_hosts_failed.count()}) 'failed': user_hosts_failed.count()}
user_projects = get_user_queryset(request.user, Project) user_projects = get_user_queryset(request.user, Project)
user_projects_failed = user_projects.filter(last_update_failed=True) user_projects_failed = user_projects.filter(last_update_failed=True)
data['projects'] = SortedDict({'url': reverse('api:project_list'), data['projects'] = {'url': reverse('api:project_list'),
'failures_url': reverse('api:project_list') + "?last_update_failed=True", 'failures_url': reverse('api:project_list') + "?last_update_failed=True",
'total': user_projects.count(), 'total': user_projects.count(),
'failed': user_projects_failed.count()}) 'failed': user_projects_failed.count()}
git_projects = user_projects.filter(scm_type='git') git_projects = user_projects.filter(scm_type='git')
git_failed_projects = git_projects.filter(last_update_failed=True) git_failed_projects = git_projects.filter(last_update_failed=True)
@@ -195,28 +195,41 @@ class DashboardView(APIView):
hg_projects = user_projects.filter(scm_type='hg') hg_projects = user_projects.filter(scm_type='hg')
hg_failed_projects = hg_projects.filter(last_update_failed=True) hg_failed_projects = hg_projects.filter(last_update_failed=True)
data['scm_types'] = {} data['scm_types'] = {}
data['scm_types']['git'] = SortedDict({'url': reverse('api:project_list') + "?scm_type=git", data['scm_types']['git'] = {'url': reverse('api:project_list') + "?scm_type=git",
'label': 'Git', 'label': 'Git',
'failures_url': reverse('api:project_list') + "?scm_type=git&last_update_failed=True", 'failures_url': reverse('api:project_list') + "?scm_type=git&last_update_failed=True",
'total': git_projects.count(), 'total': git_projects.count(),
'failed': git_failed_projects.count()}) 'failed': git_failed_projects.count()}
data['scm_types']['svn'] = SortedDict({'url': reverse('api:project_list') + "?scm_type=svn", data['scm_types']['svn'] = {'url': reverse('api:project_list') + "?scm_type=svn",
'label': 'Subversion', 'label': 'Subversion',
'failures_url': reverse('api:project_list') + "?scm_type=svn&last_update_failed=True", 'failures_url': reverse('api:project_list') + "?scm_type=svn&last_update_failed=True",
'total': svn_projects.count(), 'total': svn_projects.count(),
'failed': svn_failed_projects.count()}) 'failed': svn_failed_projects.count()}
data['scm_types']['hg'] = SortedDict({'url': reverse('api:project_list') + "?scm_type=hg", data['scm_types']['hg'] = {'url': reverse('api:project_list') + "?scm_type=hg",
'label': 'Mercurial', 'label': 'Mercurial',
'failures_url': reverse('api:project_list') + "?scm_type=hg&last_update_failed=True", 'failures_url': reverse('api:project_list') + "?scm_type=hg&last_update_failed=True",
'total': hg_projects.count(), 'total': hg_projects.count(),
'failed': hg_failed_projects.count()}) 'failed': hg_failed_projects.count()}
user_jobs = get_user_queryset(request.user, Job) user_jobs = get_user_queryset(request.user, Job)
user_failed_jobs = user_jobs.filter(failed=True) user_failed_jobs = user_jobs.filter(failed=True)
data['jobs'] = SortedDict({'url': reverse('api:job_list'), data['jobs'] = {'url': reverse('api:job_list'),
'failure_url': reverse('api:job_list') + "?failed=True", 'failure_url': reverse('api:job_list') + "?failed=True",
'total': user_jobs.count(), 'total': user_jobs.count(),
'failed': user_failed_jobs.count()}) 'failed': user_failed_jobs.count()}
user_list = get_user_queryset(request.user, User)
team_list = get_user_queryset(request.user, Team)
credential_list = get_user_queryset(request.user, Credential)
job_template_list = get_user_queryset(request.user, JobTemplate)
data['users'] = {'url': reverse('api:user_list'),
'total': user_list.count()}
data['team'] = {'url': reverse('api:team_list'),
'total': team_list.count()}
data['credentials'] = {'url': reverse('api:credential_list'),
'total': credential_list.count()}
data['job_templates'] = {'url': reverse('api:job_template_list'),
'total': job_template_list.count()}
return Response(data) return Response(data)