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:
parent
a8d21c2727
commit
f38ddf2032
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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',
|
||||
|
@ -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):
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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):
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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')
|
||||
|
@ -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")
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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')})
|
||||
|
@ -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):
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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',
|
||||
|
@ -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):
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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',
|
||||
|
@ -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):
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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',
|
||||
|
@ -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):
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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')})
|
||||
|
@ -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):
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
||||
|
@ -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])
|
||||
|
@ -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
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
||||
|
@ -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 %}
|
||||
|
@ -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 %}
|
||||
|
@ -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 %}
|
||||
|
@ -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 %}
|
||||
|
@ -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 %}
|
@ -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:
|
||||
|
@ -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)
|
||||
|
@ -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'
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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)
|
||||
|
@ -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 %}
|
@ -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'
|
||||
|
||||
|
@ -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 %}
|
@ -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'])
|
||||
|
@ -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):
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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()
|
||||
|
@ -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:
|
||||
|
@ -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">
|
||||
|
@ -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 %}
|
@ -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 %}
|
@ -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)
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 %}
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user