Add breadcrumb to more details pages

This patch adds basic Breadcrumb nav to the detail pages for Data
Processing, Databases, Metadata Definitions and Routers.

Change-Id: I114e93799b957db39cbe0d4e49d3e6869bc9d92d
Partial-Bug: 1413823
This commit is contained in:
Rob Cresswell 2015-09-24 12:26:38 +01:00
parent a8d21c2727
commit f38ddf2032
73 changed files with 123 additions and 400 deletions

View File

@ -1,7 +1,7 @@
{% load i18n sizeformat %}
{% load url from future %}
<h3>{% trans "Template Overview" %}</h3>
<div class="status row detail">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ template.name }}</dd>
@ -53,4 +53,4 @@
<dd>{% trans "Cluster configurations are not specified" %}</dd>
{% endif %}
</dl>
</div>
</div>

View File

@ -1,7 +1,7 @@
{% load i18n sizeformat %}
{% load url from future %}
<h3>{% trans "Node Groups" %}</h3>
<div class="status row detail">
<div class="detail">
{% for node_group in template.node_groups %}
<dl class="well">
<h4>{% blocktrans with node_group_name=node_group.name %}Node Group: {{ node_group_name }}{% endblocktrans %}</h4>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Cluster Template Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -55,9 +55,7 @@ class DataProcessingClusterTemplateTests(test.TestCase):
.MultipleTimes().AndReturn(ct)
self.mox.ReplayAll()
res = self.client.get(DETAILS_URL)
self.assertTemplateUsed(res,
'project/data_processing.cluster_templates/'
'details.html')
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
@test.create_stubs({api.sahara: ('cluster_template_get',
'plugin_get_version_details',

View File

@ -64,8 +64,8 @@ class ClusterTemplatesView(tables.DataTableView):
class ClusterTemplateDetailsView(tabs.TabView):
tab_group_class = _tabs.ClusterTemplateDetailsTabs
template_name = 'project/data_processing.cluster_templates/details.html'
page_title = _("Cluster Template Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ template.name|default:template.id }}"
@memoized.memoized_method
def get_object(self):

View File

@ -1,7 +1,7 @@
{% load i18n sizeformat %}
{% load url from future %}
<h3>{% trans "Cluster Overview" %}</h3>
<div class="status row detail">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ cluster.name }}</dd>

View File

@ -1,5 +1,4 @@
{% load i18n sizeformat %}
<h3>{% trans "Cluster Instances" %}</h3>
<div class="status row detail">
<div class="detail">
{{ cluster_instances_table.render }}
</div>
</div>

View File

@ -2,9 +2,7 @@
{% load url from future %}
<h3>{% trans "Node Groups" %}</h3>
<div class="status row detail">
<div class="detail">
{% for node_group in cluster.node_groups %}
<dl class="well">
<h4>{% blocktrans with node_group_name=node_group.name %}Name: {{ node_group_name }}{% endblocktrans %}</h4>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Cluster Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -63,8 +63,8 @@ class ClustersView(tables.DataTableView):
class ClusterDetailsView(tabs.TabView):
tab_group_class = _tabs.ClusterDetailsTabs
template_name = 'project/data_processing.clusters/details.html'
page_title = _("Cluster Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ cluster.name|default:cluster.id }}"
@memoized.memoized_method
def get_object(self):

View File

@ -1,10 +1,6 @@
{% load i18n %}
<h3>{% trans "Data Processing Plugin Overview" %}</h3>
<div class="status row detail">
<h4>{% trans "Information" %}</h4>
<hr class="header_rule">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ plugin.name }}</dd>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Data Processing Plugin Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -44,8 +44,6 @@ class DataProcessingPluginsTests(test.TestCase):
.AndReturn(self.plugins.list()[0])
self.mox.ReplayAll()
res = self.client.get(DETAILS_URL)
self.assertTemplateUsed(
res, 'project/data_processing.data_plugins/details.html')
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
self.assertContains(res, 'vanilla')
self.assertContains(res, 'plugin')
self.assertContains(res, 'Plugin Overview')

View File

@ -45,5 +45,5 @@ class PluginsView(tables.DataTableView):
class PluginDetailsView(tabs.TabView):
tab_group_class = p_tabs.PluginDetailsTabs
template_name = 'project/data_processing.data_plugins/details.html'
template_name = 'horizon/common/_detail.html'
page_title = _("Data Processing Plugin Details")

View File

@ -1,6 +1,6 @@
{% load i18n sizeformat %}
<h3>{% trans "Data Source Overview" %}</h3>
<div class="status row detail">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ data_source.name }}</dd>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Data Source Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -50,10 +50,8 @@ class DataProcessingDataSourceTests(test.TestCase):
.MultipleTimes().AndReturn(self.data_sources.first())
self.mox.ReplayAll()
res = self.client.get(DETAILS_URL)
self.assertTemplateUsed(
res, 'project/data_processing.data_sources/details.html')
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
self.assertContains(res, 'sampleOutput')
self.assertContains(res, 'Data Source Details')
@test.create_stubs({api.sahara: ('data_source_list',
'data_source_delete')})

View File

@ -79,8 +79,8 @@ class EditDataSourceView(CreateDataSourceView):
class DataSourceDetailsView(tabs.TabView):
tab_group_class = _tabs.DataSourceDetailsTabs
template_name = 'project/data_processing.data_sources/details.html'
page_title = _("Data Source Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ data_source.name|default:data_source.id }}"
@memoized.memoized_method
def get_object(self):

View File

@ -1,6 +1,6 @@
{% load i18n %}
<h3>{% trans "Job Binary Overview" %}</h3>
<div class="status row detail">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ job_binary.name }}</dd>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Job Binary Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -46,9 +46,7 @@ class DataProcessingJobBinaryTests(test.TestCase):
.MultipleTimes().AndReturn(self.job_binaries.first())
self.mox.ReplayAll()
res = self.client.get(DETAILS_URL)
self.assertTemplateUsed(
res, 'project/data_processing.job_binaries/details.html')
self.assertContains(res, 'Job Binary Details')
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
@test.create_stubs({api.sahara: ('job_binary_list',
'job_binary_get',

View File

@ -107,8 +107,8 @@ class EditJobBinaryView(CreateJobBinaryView):
class JobBinaryDetailsView(tabs.TabView):
tab_group_class = _tabs.JobBinaryDetailsTabs
template_name = 'project/data_processing.job_binaries/details.html'
page_title = _("Job Binary Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ job_binary.name|default:job_binary.id }}"
@memoized.memoized_method
def get_object(self):

View File

@ -1,7 +1,6 @@
{% load i18n sizeformat %}
{% load url from future %}
<h3>{% trans "Job Overview" %}</h3>
<div class="status row detail">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Status" %}</dt>
<dd>{{ job_execution.info.status }}</dd>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Job Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -48,8 +48,7 @@ class DataProcessingJobExecutionTests(test.TestCase):
.MultipleTimes().AndReturn(self.job_executions.first())
self.mox.ReplayAll()
res = self.client.get(DETAILS_URL)
self.assertTemplateUsed(
res, 'project/data_processing.job_executions/details.html')
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
self.assertContains(res, 'RUNNING')
@test.create_stubs({api.sahara: ('job_execution_list',

View File

@ -62,8 +62,8 @@ class JobExecutionsView(tables.DataTableView):
class JobExecutionDetailsView(tabs.TabView):
tab_group_class = _tabs.JobExecutionDetailsTabs
template_name = 'project/data_processing.job_executions/details.html'
page_title = _("Job Execution Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ job_execution.name|default:job_execution.id }}"
@memoized.memoized_method
def get_object(self):

View File

@ -1,7 +1,7 @@
{% load i18n sizeformat %}
{% load url from future %}
<h3>{% trans "Job Template" %}</h3>
<div class="status row detail">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ job.name }}</dd>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Job Template Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -43,8 +43,7 @@ class DataProcessingJobTests(test.TestCase):
.MultipleTimes().AndReturn(self.jobs.first())
self.mox.ReplayAll()
res = self.client.get(DETAILS_URL)
self.assertTemplateUsed(res,
'project/data_processing.jobs/details.html')
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
self.assertContains(res, 'pigjob')
@test.create_stubs({api.sahara: ('job_binary_list',

View File

@ -69,8 +69,8 @@ class CreateJobView(workflows.WorkflowView):
class JobDetailsView(tabs.TabView):
tab_group_class = _tabs.JobDetailsTabs
template_name = 'project/data_processing.jobs/details.html'
page_title = _("Job Template Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ job.name|default:job.id }}"
@memoized.memoized_method
def get_object(self):

View File

@ -1,7 +1,7 @@
{% load i18n sizeformat %}
{% load url from future %}
<h3>{% trans "Template Overview" %}</h3>
<div class="status row detail">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ template.name }}</dd>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Nodegroup Template Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -93,11 +93,8 @@ class DataProcessingNodeGroupTests(test.TestCase):
.MultipleTimes().AndReturn(ngt)
self.mox.ReplayAll()
res = self.client.get(DETAILS_URL)
self.assertTemplateUsed(res,
'project/data_processing.nodegroup_templates/'
'details.html')
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
self.assertContains(res, 'sample-template')
self.assertContains(res, 'Template Overview')
@test.create_stubs({api.sahara: ('nodegroup_template_list',
'nodegroup_template_delete')})

View File

@ -61,8 +61,8 @@ class NodegroupTemplatesView(tables.DataTableView):
class NodegroupTemplateDetailsView(tabs.TabView):
tab_group_class = _tabs.NodegroupTemplateDetailsTabs
template_name = 'project/data_processing.nodegroup_templates/details.html'
page_title = _("Node Group Template Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ template.name|default:template.id }}"
@memoized.memoized_method
def get_object(self):

View File

@ -1,10 +1,6 @@
{% load i18n sizeformat %}
<h3>{% trans "Cluster Overview" %}</h3>
<div class="status row detail">
<h4>{% trans "Information" %}</h4>
<hr class="header_rule">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ cluster.name }}</dd>

View File

@ -2,7 +2,6 @@
{% load i18n sizeformat %}
{% block connection_info %}
<div class="addresses row detail">
<h4>{% trans "Connection Information" %}</h4>
<hr class="header_rule">
<dl>
@ -23,5 +22,4 @@
{% endif %} <!-- ends else block -->
{% endwith %}
</dl>
</div>
{% endblock %}

View File

@ -1,10 +1,6 @@
{% load i18n sizeformat %}
<h3>{% trans "Cluster Overview" %}</h3>
<div class="status row detail">
<h4>{% trans "Information" %}</h4>
<hr class="header_rule">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ cluster.name }}</dd>

View File

@ -1,12 +0,0 @@
{% extends 'base.html' %}
{% load i18n sizeformat %}
{% block title %}{% trans "Cluster Detail" %}{% endblock %}
{% block main %}
<div class="row-fluid">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -291,5 +291,5 @@ class ClustersTests(test.TestCase):
details_url = reverse('horizon:project:database_clusters:detail',
args=[cluster.id])
res = self.client.get(details_url)
self.assertTemplateUsed(res, 'project/database_clusters/detail.html')
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
self.assertContains(res, cluster.ip[0])

View File

@ -97,12 +97,12 @@ class LaunchClusterView(horizon_forms.ModalFormView):
class DetailView(horizon_tabs.TabbedTableView):
tab_group_class = tabs.ClusterDetailTabs
template_name = 'project/database_clusters/detail.html'
page_title = _("Cluster Details: {{ cluster.name }}")
template_name = 'horizon/common/_detail.html'
page_title = "{{ cluster.name|default:cluster.id }}"
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
context["url"] = reverse('horizon:project:database_clusters:index')
context["cluster"] = self.get_data()
return context

View File

@ -1,11 +1,7 @@
{% load i18n sizeformat %}
{% load url from future %}
<h3>{% trans "Instance Overview" %}</h3>
<div class="status row detail">
<h4>{% trans "Information" %}</h4>
<hr class="header_rule">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ instance.name }}</dd>
@ -18,9 +14,7 @@
<dt>{% trans "Status" %}</dt>
<dd>{{ instance.status|title }}</dd>
</dl>
</div>
<div class="specs row detail">
<h4>{% trans "Specs" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
@ -37,13 +31,11 @@
<dt>{% trans "Updated" %}</dt>
<dd>{{ instance.updated|parse_isotime }}</dd>
</dl>
</div>
{% block connection_info %}
{% endblock %}
{% if instance.replica_of or instance.replicas %}
<div class="specs row detail">
<h4>{% trans "Replication" %}</h4>
<hr class="header_rule">
<dl>
@ -65,5 +57,5 @@
{% endfor %}
{% endif %}
</dl>
</div>
{% endif %}
</div>

View File

@ -2,7 +2,6 @@
{% load i18n sizeformat %}
{% block connection_info %}
<div class="addresses row detail">
<h4>{% trans "Connection Information" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
@ -19,5 +18,4 @@
{% endif %} <!-- ends else block -->
{% endwith %}
</dl>
</div>
{% endblock %}

View File

@ -2,7 +2,6 @@
{% load i18n sizeformat %}
{% block connection_info %}
<div class="addresses row detail">
<h4>{% trans "Connection Info" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
@ -17,5 +16,4 @@
{% endif %} <!-- ends else block -->
{% endwith %}
</dl>
</div>
{% endblock %}
{% endblock %}

View File

@ -2,7 +2,6 @@
{% load i18n sizeformat %}
{% block connection_info %}
<div class="addresses row detail">
<h4>{% trans "Connection Information" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
@ -28,5 +27,4 @@
{% endwith %}
</dl>
{% endif %}
</div>
{% endblock %}

View File

@ -2,7 +2,6 @@
{% load i18n sizeformat %}
{% block connection_info %}
<div class="addresses row detail">
<h4>{% trans "Connection Info" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
@ -20,5 +19,4 @@
{% endif %} <!-- ends else block -->
{% endwith %}
</dl>
</div>
{% endblock %}
{% endblock %}

View File

@ -2,7 +2,6 @@
{% load i18n sizeformat %}
{% block connection_info %}
<div class="addresses row detail">
<h4>{% trans "Connection Info" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
@ -17,5 +16,4 @@
{% endif %} <!-- ends else block -->
{% endwith %}
</dl>
</div>
{% endblock %}
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n sizeformat %}
{% block title %}{% trans "Instance Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -317,7 +317,7 @@ class DatabaseTests(test.TestCase):
self.mox.ReplayAll()
res = self.client.get(DETAILS_URL)
self.assertTemplateUsed(res, 'project/databases/detail.html')
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
if with_designate:
self.assertContains(res, database.hostname)
else:

View File

@ -100,8 +100,8 @@ class LaunchInstanceView(horizon_workflows.WorkflowView):
class DetailView(horizon_tabs.TabbedTableView):
tab_group_class = tabs.InstanceDetailTabs
template_name = 'project/databases/detail.html'
page_title = _("Instance Details: {{ instance.name }}")
template_name = 'horizon/common/_detail.html'
page_title = _("{{ instance.name }}")
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)

View File

@ -16,7 +16,7 @@ METADATA_CREATE_TEMPLATE = 'admin/metadata_defs/create.html'
METADATA_CREATE_URL = "horizon:admin:metadata_defs:create"
METADATA_DETAIL_OVERVIEW_TEMPLATE = "admin/metadata_defs/_detail_overview.html"
METADATA_DETAIL_CONTENTS_TEMPLATE = "admin/metadata_defs/_detail_contents.html"
METADATA_DETAIL_TEMPLATE = 'admin/metadata_defs/detail.html'
METADATA_DETAIL_TEMPLATE = 'horizon/common/_detail.html'
METADATA_DETAIL_URL = "horizon:admin:metadata_defs:detail"
METADATA_INDEX_TEMPLATE = 'admin/metadata_defs/index.html'
METADATA_INDEX_URL = 'horizon:admin:metadata_defs:index'

View File

@ -1,9 +1,5 @@
{% load i18n %}
<div class="clearfix">
<h3 class="pull-left">{{ namespace_name|default:_("Undefined") }}</h3>
</div>
<pre class="data">
{{ namespace_contents }}
</pre>

View File

@ -1,52 +1,42 @@
{% load i18n sizeformat %}
<h3>{% trans "Namespace Overview" %}</h3>
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Display Name" %}</dt>
<dd>{{ namespace.display_name|default:_("None") }}</dd>
<dt>{% trans "Namespace" %}</dt>
<dd>{{ namespace.namespace|default:_("None") }}</dd>
{% if namespace.description %}
<dt>{% trans "Description" %}</dt>
<dd>{{ namespace.description }}</dd>
{% endif %}
<dt>{% trans "Public" %}</dt>
<dd>{{ namespace.public|yesno|capfirst }}</dd>
<dt>{% trans "Protected" %}</dt>
<dd>{{ namespace.protected|yesno|capfirst }}</dd>
<dt>{% trans "Created" %}</dt>
<dd>{{ namespace.created_at|parse_isotime|default:_("Unknown") }}</dd>
<dt>{% trans "Updated" %}</dt>
<dd>{{ namespace.updated_at|parse_isotime|default:_("Never updated") }}</dd>
</dl>
<div class="info row detail">
<div class="col-sm-12">
<h4>{% trans "Info" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
<dt>{% trans "Display Name" %}</dt>
<dd>{{ namespace.display_name|default:_("None") }}</dd>
<dt>{% trans "Namespace" %}</dt>
<dd>{{ namespace.namespace|default:_("None") }}</dd>
{% if namespace.description %}
<dt>{% trans "Description" %}</dt>
<dd>{{ namespace.description }}</dd>
{% endif %}
<dt>{% trans "Public" %}</dt>
<dd>{{ namespace.public|yesno|capfirst }}</dd>
<dt>{% trans "Protected" %}</dt>
<dd>{{ namespace.protected|yesno|capfirst }}</dd>
<dt>{% trans "Created" %}</dt>
<dd>{{ namespace.created_at|parse_isotime|default:_("Unknown") }}</dd>
<dt>{% trans "Updated" %}</dt>
<dd>{{ namespace.updated_at|parse_isotime|default:_("Never updated") }}</dd>
</dl>
</div>
</div>
<div class="resource_types row detail">
<div class="col-sm-12">
<h4>{% trans "Associated Resource Types" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
{% with default_item_value="<em>"|add:_("None")|add:"</em>" %}
{% for resource_type in namespace.resource_type_associations %}
<dt>{{ resource_type.name }}</dt>
<dd>
<li>{% trans "Prefix: " %}
{{ resource_type.prefix|default:default_item_value }}
</li>
<li>{% trans "Properties Target: " %}
{{ resource_type.properties_target|default:default_item_value }}
</li>
</dd>
{% empty %}
<em>{% trans "No associations defined." %}</em>
{% endfor %}
{% endwith %}
</dl>
</div>
<h4>{% trans "Associated Resource Types" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
{% with default_item_value="<em>"|add:_("None")|add:"</em>" %}
{% for resource_type in namespace.resource_type_associations %}
<dt>{{ resource_type.name }}</dt>
<dd>
<li>{% trans "Prefix: " %}
{{ resource_type.prefix|default:default_item_value }}
</li>
<li>{% trans "Properties Target: " %}
{{ resource_type.properties_target|default:default_item_value }}
</li>
</dd>
{% empty %}
<em>{% trans "No associations defined." %}</em>
{% endfor %}
{% endwith %}
</dl>
</div>

View File

@ -1,12 +0,0 @@
{% extends 'base.html' %}
{% load i18n sizeformat %}
{% block title %}{% trans "Namespace Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -90,7 +90,7 @@ class DetailView(tabs.TabView):
redirect_url = constants.METADATA_INDEX_URL
tab_group_class = admin_tabs.NamespaceDetailTabs
template_name = constants.METADATA_DETAIL_TEMPLATE
page_title = _("Namespace Details: {{ namespace.namespace }}")
page_title = "{{ namespace.namespace }}"
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Router Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -60,7 +60,6 @@ class IndexView(r_views.IndexView, n_views.IndexView):
class DetailView(r_views.DetailView):
tab_group_class = rtabs.RouterDetailTabs
template_name = 'admin/routers/detail.html'
failure_url = reverse_lazy('horizon:admin:routers:index')
network_url = 'horizon:admin:networks:detail'

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Router Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -148,7 +148,7 @@ class RouterTests(RouterMixin, test.TestCase):
router = self.routers.first()
res = self._get_detail(router)
self.assertTemplateUsed(res, '%s/routers/detail.html' % self.DASHBOARD)
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
ports = res.context['interfaces_table'].data
self.assertItemsEqual(ports, [self.ports.first()])
@ -687,7 +687,7 @@ class RouterRuleTests(RouterMixin, test.TestCase):
router = self.routers.first()
res = self._get_detail(router)
self.assertTemplateUsed(res, '%s/routers/detail.html' % self.DASHBOARD)
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
self.assertTemplateNotUsed(
res,
'%s/routers/extensions/routerrules/grid.html' % self.DASHBOARD)
@ -705,7 +705,7 @@ class RouterRuleTests(RouterMixin, test.TestCase):
shared=True).AndReturn([])
res = self._get_detail(router)
self.assertTemplateUsed(res, '%s/routers/detail.html' % self.DASHBOARD)
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
if self.DASHBOARD == 'project':
self.assertTemplateUsed(
res,
@ -831,14 +831,14 @@ class RouterRouteTests(RouterMixin, test.TestCase):
router = self.routers_with_routes.first()
res = self._get_detail(router, extraroute=False)
self.assertTemplateUsed(res, '%s/routers/detail.html' % self.DASHBOARD)
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
self.assertNotIn('extra_routes_table', res.context)
def test_routerroute_detail(self):
router = self.routers_with_routes.first()
res = self._get_detail(router, extraroute=True)
self.assertTemplateUsed(res, '%s/routers/detail.html' % self.DASHBOARD)
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
routes = res.context['extra_routes_table'].data
routes_dict = [r._apidict for r in routes]
self.assertItemsEqual(routes_dict, router['routes'])

View File

@ -101,10 +101,10 @@ class IndexView(tables.DataTableView):
class DetailView(tabs.TabbedTableView):
tab_group_class = rdtabs.RouterDetailTabs
template_name = 'project/routers/detail.html'
template_name = 'horizon/common/_detail.html'
failure_url = reverse_lazy('horizon:project:routers:index')
network_url = 'horizon:project:networks:detail'
page_title = _("Router Details")
page_title = "{{ router.name|default:router.id }}"
@memoized.memoized_method
def _get_data(self):

View File

@ -1,20 +1,14 @@
{% load i18n %}
<div class="resource_type row detail">
<h4>{% trans "Resource Type" %}</h4>
<hr class="header_rule">
<div class="detail">
<dl>
<dd>{{ r_type }}</dd>
</dl>
</div>
<div class="attributes row detail">
<h4>{% trans "Attributes" %}</h4>
<pre>{{ r_type_attributes }}
</pre>
</div>
<div class="properties row detail">
<h4>{% trans "Properties" %}</h4>
<pre>{{ r_type_properties }}
</pre>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Resource Type Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -46,7 +46,5 @@ class ResourceTypesTests(test.TestCase):
args=[rt['resource_type']])
res = self.client.get(url)
self.assertTemplateUsed(
res, 'project/stacks.resource_types/details.html')
self.assertContains(res, "<h1>Resource Type Details</h1>", 1, 200)
self.assertTemplateUsed(res, 'horizon/common/_detail.html')
self.assertNoMessages()

View File

@ -45,8 +45,8 @@ class ResourceTypesView(tables.DataTableView):
class DetailView(tabs.TabView):
tab_group_class = project_tabs.ResourceTypeDetailsTabs
template_name = 'project/stacks.resource_types/details.html'
page_title = _("Resource Type Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ resource_type }}"
def get_resource_type(self, request, **kwargs):
try:

View File

@ -1,10 +1,6 @@
{% load i18n sizeformat %}
<h3>{% trans "Stack Overview" %}</h3>
<div class="info row detail">
<h4>{% trans "Information" %}</h4>
<hr class="header_rule">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ stack.stack_name }}</dd>
@ -13,9 +9,7 @@
<dt>{% trans "Description" %}</dt>
<dd>{{ stack.description }}</dd>
</dl>
</div>
<div class="status row detail">
<h4>{% trans "Status" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
@ -28,9 +22,7 @@
{% blocktrans with stack_status_title=stack.stack_status|title stack_status_reason=stack.stack_status_reason %}{{ stack_status_title }}: {{ stack_status_reason }}{% endblocktrans %}
</dd>
</dl>
</div>
<div class="outputs row detail">
<h4>{% trans "Outputs" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
@ -42,9 +34,7 @@
</dd>
{% endfor %}
</dl>
</div>
<div class="parameters row detail">
<h4>{% trans "Stack Parameters" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
@ -53,9 +43,7 @@
<dd>{{ value }}</dd>
{% endfor %}
</dl>
</div>
<div class="launch row detail">
<h4>{% trans "Launch Parameters" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n sizeformat %}
{% block title %}{% trans "Stack Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n sizeformat %}
{% block title %}{% trans "Resource Details" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -277,8 +277,8 @@ class PreviewStackDetailsView(forms.ModalFormMixin, views.HorizonTemplateView):
class DetailView(tabs.TabView):
tab_group_class = project_tabs.StackDetailTabs
template_name = 'project/stacks/detail.html'
page_title = _("Stack Details: {{ stack.stack_name }}")
template_name = 'horizon/common/_detail.html'
page_title = "{{ stack.stack_name|default:stack.id }}"
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
@ -326,7 +326,7 @@ class DetailView(tabs.TabView):
class ResourceView(tabs.TabView):
tab_group_class = project_tabs.ResourceDetailTabs
template_name = 'project/stacks/resource.html'
page_title = _("Resource Details: {{ resource.resource_name }}")
page_title = "{{ resource.resource_name|default:resource.id }}"
def get_context_data(self, **kwargs):
context = super(ResourceView, self).get_context_data(**kwargs)

View File

@ -1,7 +1,6 @@
{% load i18n sizeformat parse_date %}
<div class="info row detail">
<hr class="header_rule">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ ikepolicy.name|default:_("None") }}</dd>

View File

@ -1,7 +1,6 @@
{% load i18n sizeformat parse_date %}
<div class="info row detail">
<hr class="header_rule">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ ipsecpolicy.name|default:_("None") }}</dd>

View File

@ -1,8 +1,7 @@
{% load i18n sizeformat parse_date %}
{% load url from future %}
<div class="info row detail">
<hr class="header_rule">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ ipsecsiteconnection.name|default:_("None") }}</dd>

View File

@ -1,8 +1,7 @@
{% load i18n sizeformat parse_date %}
{% load url from future %}
<div class="info row detail">
<hr class="header_rule">
<div class="detail">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ vpnservice.name|default:_("None") }}</dd>

View File

@ -1,11 +0,0 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Virtual Private Network" %}{% endblock %}
{% block main %}
<div class="row">
<div class="col-sm-12">
{{ tab_group.render }}
</div>
</div>
{% endblock %}

View File

@ -56,8 +56,8 @@ class AddIPSecPolicyView(workflows.WorkflowView):
class IKEPolicyDetailsView(tabs.TabView):
tab_group_class = vpn_tabs.IKEPolicyDetailsTabs
template_name = 'project/vpn/details_tabs.html'
page_title = _("IKE Policy Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ ikepolicy.name|default:ikepolicy.id }}"
@memoized.memoized_method
def get_data(self):
@ -89,8 +89,8 @@ class IKEPolicyDetailsView(tabs.TabView):
class IPSecPolicyDetailsView(tabs.TabView):
tab_group_class = vpn_tabs.IPSecPolicyDetailsTabs
template_name = 'project/vpn/details_tabs.html'
page_title = _("IPSec Policy Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ ipsecpolicy.name|default:ipsecpolicy.id }}"
@memoized.memoized_method
def get_data(self):
@ -123,8 +123,8 @@ class IPSecPolicyDetailsView(tabs.TabView):
class VPNServiceDetailsView(tabs.TabView):
tab_group_class = vpn_tabs.VPNServiceDetailsTabs
template_name = 'project/vpn/details_tabs.html'
page_title = _("VPN Service Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ vpnservice.name|default:vpnservice.id }}"
@memoized.memoized_method
def get_data(self):
@ -166,8 +166,8 @@ class VPNServiceDetailsView(tabs.TabView):
class IPSecSiteConnectionDetailsView(tabs.TabView):
tab_group_class = vpn_tabs.IPSecSiteConnectionDetailsTabs
template_name = 'project/vpn/details_tabs.html'
page_title = _("IPSec Site Connection Details")
template_name = 'horizon/common/_detail.html'
page_title = "{{ ipsecsiteconnection.name|default:ipsecsiteconnection.id}}"
@memoized.memoized_method
def get_data(self):