Add details page for packages
Package should add details link for user can see the more information of the package. Implements: blueprint add-fqpn-field Change-Id: Iabcddfeffab67c82fa0f6715a98fc6dc6dfddf94 Closes-bug: #1501108
This commit is contained in:
parent
2350c6d2a0
commit
6ffaec95bd
@ -213,12 +213,13 @@ class ModifyPackage(tables.LinkAction):
|
||||
|
||||
|
||||
class PackageDefinitionsTable(tables.DataTable):
|
||||
name = tables.Column('name', verbose_name=_('Package Name'))
|
||||
name = tables.Column('name',
|
||||
link="horizon:murano:packages:detail",
|
||||
verbose_name=_('Package Name'))
|
||||
tenant_name = tables.Column('tenant_name', verbose_name=_('Tenant Name'))
|
||||
enabled = tables.Column('enabled', verbose_name=_('Active'))
|
||||
is_public = tables.Column('is_public', verbose_name=_('Public'))
|
||||
type = tables.Column('type', verbose_name=_('Type'))
|
||||
author = tables.Column('author', verbose_name=_('Author'))
|
||||
version = tables.Column(lambda obj: getattr(obj, 'version', None),
|
||||
verbose_name=_('Version'))
|
||||
created_time = tables.Column('created',
|
||||
|
@ -25,4 +25,6 @@ urlpatterns = [
|
||||
views.BUNDLE_FORMS), name='import_bundle'),
|
||||
urls.url(r'^modify/(?P<app_id>[^/]+)?$',
|
||||
views.ModifyPackageView.as_view(), name='modify'),
|
||||
urls.url(r'^(?P<app_id>[^/]+)?$',
|
||||
views.DetailView.as_view(), name='detail'),
|
||||
]
|
||||
|
@ -32,6 +32,7 @@ from horizon.forms import views
|
||||
from horizon import messages
|
||||
from horizon import tables as horizon_tables
|
||||
from horizon.utils import functions as utils
|
||||
from horizon import views as horizon_views
|
||||
from muranoclient.common import exceptions as exc
|
||||
from muranoclient.common import utils as muranoclient_utils
|
||||
from openstack_dashboard.api import glance
|
||||
@ -564,3 +565,25 @@ class ModifyPackageView(views.ModalFormView):
|
||||
context = super(ModifyPackageView, self).get_context_data(**kwargs)
|
||||
context['app_id'] = self.kwargs['app_id']
|
||||
return context
|
||||
|
||||
|
||||
class DetailView(horizon_views.HorizonTemplateView):
|
||||
template_name = 'packages/detail.html'
|
||||
page_title = "{{ app.name }}"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(DetailView, self).get_context_data(**kwargs)
|
||||
app = self.get_data()
|
||||
context["app"] = app
|
||||
return context
|
||||
|
||||
def get_data(self):
|
||||
try:
|
||||
app_id = self.kwargs['app_id']
|
||||
app = api.muranoclient(self.request).packages.get(app_id)
|
||||
except Exception:
|
||||
INDEX_URL = 'horizon:murano:packages:index'
|
||||
exceptions.handle(self.request,
|
||||
_('Unable to retrieve package details.'),
|
||||
redirect=reverse(INDEX_URL))
|
||||
return app
|
||||
|
31
muranodashboard/templates/packages/_detail.html
Normal file
31
muranodashboard/templates/packages/_detail.html
Normal file
@ -0,0 +1,31 @@
|
||||
{% load i18n %}
|
||||
|
||||
<div class="detail">
|
||||
<dl class="dl-horizontal">
|
||||
<dt>{% trans "Name" %}</dt>
|
||||
<dd>{{ app.name }}</dd>
|
||||
<dt>{% trans "FQN" %}</dt>
|
||||
<dd>{{ app.fully_qualified_name }}</dd>
|
||||
<dt>{% trans "Type" %}</dt>
|
||||
<dd>{{ app.type }}</dd>
|
||||
<dt>{% trans "ID" %}</dt>
|
||||
<dd>{{ app.id }}</dd>
|
||||
<dt>{% trans "Package Tags" %}</dt>
|
||||
<dd>{{ app.tags|join:", " }}</dd>
|
||||
<dt>{% trans "Enabled" %}</dt>
|
||||
<dd>{{ app.enabled|yesno|capfirst }}</dd>
|
||||
<dt>{% trans "Public" %}</dt>
|
||||
<dd>{{ app.is_public|yesno|capfirst }}</dd>
|
||||
<dt>{% trans "Categories" %}</dt>
|
||||
<dd>{{ app.categories|join:", "|default:_("None") }}</dd>
|
||||
<dt>{% trans "Version" %}</dt>
|
||||
<dd>{{ app.version|default:_("-") }}</dd>
|
||||
<dt>{% trans "Author" %}</dt>
|
||||
<dd>{{ app.author }}</dd>
|
||||
<dt>{% trans "Created" %}</dt>
|
||||
<dd>{{ app.created|parse_isotime }}</dd>
|
||||
<dt>{% trans "Description" %}</dt>
|
||||
<dd>{{ app.description|default:_("None") }}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
20
muranodashboard/templates/packages/detail.html
Normal file
20
muranodashboard/templates/packages/detail.html
Normal file
@ -0,0 +1,20 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load i18n %}
|
||||
{% load breadcrumb_nav %}
|
||||
|
||||
{% block title %}{% trans "Package Details" %}{% endblock %}
|
||||
|
||||
{% block page_header %}
|
||||
<div class='page-header'>
|
||||
{% breadcrumb_nav %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block main %}
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
{% include "packages/_detail.html" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
@ -9,6 +9,7 @@ CategorySelector = "//a[contains(text(), '{0}')][contains(@class, 'dropdown-togg
|
||||
App = "//div[contains(@class, 'app-list')]//h4[contains(text(), '{0}')]"
|
||||
MockAppDescr = "//div[h4[contains(text(), 'MockApp')]]/p"
|
||||
AppPackages = u"//tr[@data-display='{0}']"
|
||||
AppDetail = "//dl[dt[contains(text(), 'Name')]]/dd"
|
||||
TagInDetails = "//div[contains(@class, 'app-meta')]//ul//li[strong[contains(text(), 'Tags')]]" # noqa
|
||||
TestImage = "//tr[td[contains(text(), '{0}')]]"
|
||||
DeleteImageMeta = TestImage + "//td//button[contains(text(), 'Delete Metadata')]" # noqa
|
||||
|
@ -1014,6 +1014,30 @@ class TestSuitePackages(base.PackageTestCase):
|
||||
self.check_package_parameter_by_name(pkg_name, 'Public', 'True')
|
||||
self.check_package_parameter_by_name(pkg_name, 'Active', 'False')
|
||||
|
||||
def test_upload_package_detail(self):
|
||||
"""Test check ability to view package details after uploading it."""
|
||||
|
||||
self.navigate_to('Manage')
|
||||
self.go_to_submenu('Packages')
|
||||
|
||||
self.driver.find_element_by_id(c.UploadPackage).click()
|
||||
el = self.driver.find_element_by_css_selector(
|
||||
"input[name='upload-package']")
|
||||
el.send_keys(self.archive)
|
||||
self.driver.find_element_by_xpath(c.InputSubmit).click()
|
||||
|
||||
# No application data modification is needed
|
||||
self.driver.find_element_by_xpath(c.InputSubmit).click()
|
||||
self.driver.find_element_by_xpath(c.InputSubmit).click()
|
||||
|
||||
self.wait_for_alert_message()
|
||||
|
||||
pkg_name = self.archive_name
|
||||
self.driver.find_element_by_xpath(
|
||||
"//a[contains(text(), '{0}')]".format(pkg_name)).click()
|
||||
self.assertIn(pkg_name,
|
||||
self.driver.find_element(by.By.XPATH, c.AppDetail).text)
|
||||
|
||||
def test_category_management(self):
|
||||
"""Test application category adds and deletes successfully
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
features:
|
||||
- Add details page for packages, The details page will show more info
|
||||
to user, such as FQN, Description, etc.
|
Loading…
x
Reference in New Issue
Block a user