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