67223ea1f0
Before this commit murano used 'murano' as the name of it's dashboard. This is too specific and contradicts with general practice of naming dashboards after the names of the service. This also prevents us from re-using the same dashboard in murano-dashboard and app-catalog-ui Targets bp: catalog-dashboard-reorg Change-Id: I3df3865f6bf82626325e66120c408552260c7e2b
95 lines
3.3 KiB
Python
95 lines
3.3 KiB
Python
# Copyright (c) 2015 Mirantis, Inc.
|
|
#
|
|
# 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.
|
|
|
|
import itertools
|
|
|
|
from django.core.urlresolvers import reverse_lazy
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from horizon.forms import views
|
|
from horizon import tables as horizon_tables
|
|
from horizon.utils import functions as utils
|
|
|
|
from muranodashboard import api
|
|
from muranodashboard.categories import forms
|
|
from muranodashboard.categories import tables
|
|
|
|
|
|
class CategoriesView(horizon_tables.DataTableView):
|
|
table_class = tables.CategoriesTable
|
|
template_name = 'categories/index.html'
|
|
page_title = _("Application Categories")
|
|
|
|
def has_prev_data(self, table):
|
|
return self._prev
|
|
|
|
def has_more_data(self, table):
|
|
return self._more
|
|
|
|
def get_data(self):
|
|
prev_marker = self.request.GET.get(
|
|
tables.CategoriesTable._meta.prev_pagination_param, None)
|
|
|
|
if prev_marker is not None:
|
|
sort_dir = 'asc'
|
|
marker = prev_marker
|
|
else:
|
|
sort_dir = 'desc'
|
|
marker = self.request.GET.get(
|
|
tables.CategoriesTable._meta.pagination_param, None)
|
|
|
|
page_size = utils.get_page_size(self.request)
|
|
|
|
request_size = page_size + 1
|
|
kwargs = {'filters': {}}
|
|
if marker:
|
|
kwargs['marker'] = marker
|
|
kwargs['sort_dir'] = sort_dir
|
|
|
|
categories = []
|
|
self._prev = False
|
|
self._more = False
|
|
with api.handled_exceptions(self.request):
|
|
categories_iter = api.muranoclient(self.request).categories.list(
|
|
limit=request_size, **kwargs)
|
|
|
|
categories = list(itertools.islice(categories_iter, request_size))
|
|
# first and middle page condition
|
|
if len(categories) > page_size:
|
|
categories.pop(-1)
|
|
self._more = True
|
|
# middle page condition
|
|
if marker is not None:
|
|
self._prev = True
|
|
# first page condition when reached via prev back
|
|
elif sort_dir == 'asc' and marker is not None:
|
|
self._more = True
|
|
# last page condition
|
|
elif marker is not None:
|
|
self._prev = True
|
|
if prev_marker is not None:
|
|
categories.reverse()
|
|
return categories
|
|
|
|
|
|
class AddCategoryView(views.ModalFormView):
|
|
form_class = forms.AddCategoryForm
|
|
form_id = 'add_category_form'
|
|
modal_header = _('Add Category')
|
|
template_name = 'categories/add.html'
|
|
context_object_name = 'category'
|
|
page_title = _('Add Application Category')
|
|
success_url = reverse_lazy('horizon:app-catalog:categories:index')
|
|
submit_label = _('Add')
|
|
submit_url = reverse_lazy('horizon:app-catalog:categories:add')
|