Add receiver detail page

Change-Id: I79a25af144c0ebb50866731ef40f741beb6f2ebb
This commit is contained in:
Liuqing Jing 2016-02-19 06:41:57 -05:00
parent 8ffeba91a7
commit b76ee98ab3
6 changed files with 101 additions and 6 deletions

View File

@ -51,7 +51,7 @@ class Event(base.APIResourceWrapper):
class Receiver(base.APIResourceWrapper):
_attrs = ['id', 'name', 'type', 'cluster_id', 'action', 'created_at',
'updated_at']
'updated_at', 'channel']
@memoized.memoized
@ -185,3 +185,8 @@ def receiver_create(request, params):
def receiver_delete(request, receiver):
"""Delete receiver."""
senlinclient(request).delete_receiver(receiver)
def receiver_get(request, receiver):
receiver = senlinclient(request).get_receiver(receiver)
return Receiver(receiver)

View File

@ -55,7 +55,8 @@ def get_updated_time(object):
class ReceiversTable(tables.DataTable):
name = tables.Column("name", verbose_name=_("Name"))
name = tables.Column("name", verbose_name=_("Name"),
link="horizon:cluster:receivers:detail")
type = tables.Column("type", verbose_name=_("Type"))
cluster_id = tables.Column("cluster_id", verbose_name=_("Cluster ID"))
action = tables.Column("action", verbose_name=_("Action"))

View File

@ -0,0 +1,29 @@
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from django.utils.translation import ugettext_lazy as _
from horizon import tabs
class OverviewTab(tabs.Tab):
name = _("Overview")
slug = "overview"
template_name = ("cluster/receivers/_detail_overview.html")
def get_context_data(self, request):
return {"receiver": self.tab_group.kwargs["receiver"]}
class ReceiverDetailTabs(tabs.TabGroup):
slug = "receiver_details"
tabs = (OverviewTab,)

View File

@ -0,0 +1,24 @@
{% load i18n parse_date %}
<div class="detail">
<h4>{% trans "Information" %}</h4>
<hr class="header_rule">
<dl class="dl-horizontal">
<dt>{% trans "Name" %}</dt>
<dd>{{ receiver.name }}</dd>
<dt>{% trans "ID" %}</dt>
<dd>{{ receiver.id }}</dd>
<dt>{% trans "Type" %}</dt>
<dd>{{ receiver.type }}</dd>
<dt>{% trans "Cluster ID" %}</dt>
<dd>{{ receiver.cluster_id }}</dd>
<dt>{% trans "Channel" %}</dt>
<dd>{{ receiver.channel }}</dd>
<dt>{% trans "Created" context "Created time" %}</dt>
<dd>{{ profile.created_at|parse_date }}</dd>
{% if profile.updated_at %}
<dt>{% trans "Updated" context "Updated time" %}</dt>
<dd>{{ profile.updated_at|parse_date }}</dd>
{% endif %}
</dl>
</div>

View File

@ -20,4 +20,6 @@ urlpatterns = patterns(
'',
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^create/$', views.CreateView.as_view(), name='create'),
url(r'^(?P<receiver_id>[^/]+)/$',
views.DetailView.as_view(), name='detail'),
)

View File

@ -13,13 +13,16 @@
from django.core.urlresolvers import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from senlin_dashboard.api import senlin
from senlin_dashboard.cluster.receivers import forms as receivers_forms
from senlin_dashboard.cluster.receivers.tables import ReceiversTable
from horizon import exceptions
from horizon import forms
from horizon import tables
from horizon import tabs
from horizon.utils import memoized
from senlin_dashboard.api import senlin
from senlin_dashboard.cluster.receivers import forms as receivers_forms
from senlin_dashboard.cluster.receivers.tables import ReceiversTable
from senlin_dashboard.cluster.receivers import tabs as receivers_tabs
class IndexView(tables.DataTableView):
@ -44,3 +47,34 @@ class CreateView(forms.ModalFormView):
form_class = receivers_forms.CreateReceiverForm
submit_url = reverse_lazy("horizon:cluster:receivers:create")
success_url = reverse_lazy("horizon:cluster:receivers:index")
class DetailView(tabs.TabView):
tab_group_class = receivers_tabs.ReceiverDetailTabs
template_name = 'horizon/common/_detail.html'
page_title = "{{ receiver.name }}"
@memoized.memoized_method
def get_object(self):
try:
# Get initial receiver information
receiver_id = self.kwargs["receiver_id"]
receiver = senlin.receiver_get(self.request, receiver_id)
except Exception:
msg = _("Unable to retrieve receiver.")
url = reverse_lazy("horizon:cluster:receivers:index")
exceptions.handle(self.request, msg, redirect=url)
return receiver
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
table = ReceiversTable(self.request)
receiver = self.get_object()
context["actions"] = table.render_row_actions(receiver)
context["receiver"] = receiver
context["url"] = reverse_lazy("horizon:cluster:receivers:index")
return context
def get_tabs(self, request, *args, **kwargs):
receiver = self.get_object()
return self.tab_group_class(request, receiver=receiver, **kwargs)