diff --git a/smaug_dashboard/templates/triggers/_detail.html b/smaug_dashboard/templates/triggers/_detail.html
new file mode 100644
index 0000000..dd6998d
--- /dev/null
+++ b/smaug_dashboard/templates/triggers/_detail.html
@@ -0,0 +1,26 @@
+{% load i18n %}
+
+
+
+ - {% trans "Trigger Name" %}
+ - {{ trigger.name }}
+ - {% trans "Trigger Type" %}
+ - {{ trigger.type }}
+ {% if trigger.frequence %}
+ - {% trans "Frequence" %}
+ - {{ trigger.frequence }}
+ {% endif %}
+ {% if trigger.day %}
+ - {% trans "Day" %}
+ - {{ trigger.day }}
+ {% endif %}
+ {% if trigger.date %}
+ - {% trans "Date" %}
+ - {{ trigger.date }}
+ {% endif %}
+ {% if trigger.time %}
+ - {% trans "Execution Time (HH:MM)" %}
+ - {{ trigger.time }}
+ {% endif %}
+
+
diff --git a/smaug_dashboard/templates/triggers/detail.html b/smaug_dashboard/templates/triggers/detail.html
new file mode 100644
index 0000000..b0f6181
--- /dev/null
+++ b/smaug_dashboard/templates/triggers/detail.html
@@ -0,0 +1,19 @@
+{% extends 'base.html' %}
+{% load i18n %}
+{% load breadcrumb_nav %}
+
+{% block title %}{% trans "Trigger Details" %}{% endblock %}
+
+{% block page_header %}
+
+{% endblock %}
+
+{% block main %}
+
+
+ {% include "triggers/_detail.html" %}
+
+
+{% endblock %}
diff --git a/smaug_dashboard/triggers/tables.py b/smaug_dashboard/triggers/tables.py
index 8c5a828..0d3379c 100644
--- a/smaug_dashboard/triggers/tables.py
+++ b/smaug_dashboard/triggers/tables.py
@@ -61,6 +61,7 @@ class TriggerFilterAction(tables.FilterAction):
class TriggersTable(tables.DataTable):
name = tables.Column('name',
+ link="horizon:smaug:triggers:detail",
verbose_name=_('Name'))
type = tables.Column('type',
verbose_name=_('Type'))
diff --git a/smaug_dashboard/triggers/urls.py b/smaug_dashboard/triggers/urls.py
index 2a52768..2f4e496 100644
--- a/smaug_dashboard/triggers/urls.py
+++ b/smaug_dashboard/triggers/urls.py
@@ -19,4 +19,6 @@ from smaug_dashboard.triggers import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^create/$', views.CreateView.as_view(), name='create'),
+ url(r'^(?P[^/]+)/detail/$',
+ views.DetailView.as_view(), name='detail'),
]
diff --git a/smaug_dashboard/triggers/views.py b/smaug_dashboard/triggers/views.py
index fbe2f82..7b59938 100644
--- a/smaug_dashboard/triggers/views.py
+++ b/smaug_dashboard/triggers/views.py
@@ -12,16 +12,20 @@
# License for the specific language governing permissions and limitations
# under the License.
+from django.core.urlresolvers import reverse
from django.core.urlresolvers import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from horizon import exceptions
from horizon import forms as horizon_forms
from horizon import tables as horizon_tables
+from horizon.utils import memoized
+from horizon import views as horizon_views
from smaug_dashboard.api import smaug as smaugclient
from smaug_dashboard.triggers import forms
from smaug_dashboard.triggers import tables
+from smaug_dashboard.triggers import utils
class IndexView(horizon_tables.DataTableView):
@@ -72,3 +76,38 @@ class CreateView(horizon_forms.ModalFormView):
submit_url = reverse_lazy("horizon:smaug:triggers:create")
success_url = reverse_lazy('horizon:smaug:triggers:index')
page_title = _("Create Trigger")
+
+
+class DetailView(horizon_views.HorizonTemplateView):
+ template_name = 'triggers/detail.html'
+ page_title = "{{ trigger.name }}"
+
+ def get_context_data(self, **kwargs):
+ context = super(DetailView, self).get_context_data(**kwargs)
+ trigger = self.get_data()
+ table = tables.TriggersTable(self.request)
+
+ if trigger is not None and trigger.properties is not None:
+ if trigger.properties["format"] == utils.CRONTAB:
+ data = utils.CrontabUtil\
+ .convert_from_crontab(trigger.properties)
+ if data:
+ for key, value in data.items():
+ setattr(trigger, key, value)
+
+ context["trigger"] = trigger
+ context["url"] = reverse("horizon:smaug:triggers:index")
+ context["actions"] = table.render_row_actions(trigger)
+ return context
+
+ @memoized.memoized_method
+ def get_data(self):
+ try:
+ trigger_id = self.kwargs['trigger_id']
+ trigger = smaugclient.trigger_get(self.request, trigger_id)
+ except Exception:
+ exceptions.handle(
+ self.request,
+ _('Unable to retrieve trigger details.'),
+ redirect=reverse("horizon:smaug:triggers:index"))
+ return trigger