Restyled some menus and minor fixes.

Change-Id: Idd6cb9c8af0cd525c262229241aa8af5981bbb5f
This commit is contained in:
Carmelo Romeo 2018-12-11 21:54:43 +01:00
parent 748db492e9
commit 7321b63630
6 changed files with 61 additions and 159 deletions

View File

@ -217,7 +217,6 @@ class EnableServiceForm(forms.SelfHandlingForm):
exceptions.handle(request, _(message_text)) exceptions.handle(request, _(message_text))
"""
class DisableServiceForm(forms.SelfHandlingForm): class DisableServiceForm(forms.SelfHandlingForm):
uuid = forms.CharField(label=_("Board ID"), widget=forms.HiddenInput) uuid = forms.CharField(label=_("Board ID"), widget=forms.HiddenInput)
@ -259,7 +258,6 @@ class DisableServiceForm(forms.SelfHandlingForm):
except Exception: except Exception:
message_text = "Unable to disable service." message_text = "Unable to disable service."
exceptions.handle(request, _(message_text)) exceptions.handle(request, _(message_text))
"""
class AttachPortForm(forms.SelfHandlingForm): class AttachPortForm(forms.SelfHandlingForm):
@ -461,56 +459,3 @@ class RemovePluginsForm(forms.SelfHandlingForm):
exceptions.handle(request, _(message_text)) exceptions.handle(request, _(message_text))
break break
class RemoveServicesForm(forms.SelfHandlingForm):
uuid = forms.CharField(label=_("Board ID"), widget=forms.HiddenInput)
name = forms.CharField(
label=_('Board Name'),
widget=forms.TextInput(attrs={'readonly': 'readonly'})
)
service_list = forms.MultipleChoiceField(
label=_("Services List"),
widget=forms.SelectMultiple(
attrs={'class': 'switchable',
'data-slug': 'slug-remove-services'}),
help_text=_("Select services in this pool")
)
def __init__(self, *args, **kwargs):
super(RemoveServicesForm, self).__init__(*args, **kwargs)
# input=kwargs.get('initial',{})
self.fields["service_list"].choices = kwargs["initial"]["service_list"]
def handle(self, request, data):
counter = 0
for service in data["service_list"]:
for key, value in self.fields["service_list"].choices:
if key == service:
try:
disable = iotronic.service_action(request,
data["uuid"],
key,
"ServiceDisable")
message_text = disable
messages.success(request, _(message_text))
if counter != len(data["service_list"]) - 1:
counter += 1
else:
return True
except Exception:
message_text = "Unable to disable service " \
+ str(value) + "."
exceptions.handle(request, _(message_text))
break

View File

@ -51,11 +51,11 @@ class RestoreServices(tables.BatchAction):
@staticmethod @staticmethod
def action_present(count): def action_present(count):
return u"Restore Services" return u"Restore ALL Services"
@staticmethod @staticmethod
def action_past(count): def action_past(count):
return u"Restore Services" return u"Restored ALL Services"
def allowed(self, request, board=None): def allowed(self, request, board=None):
return True return True
@ -73,7 +73,6 @@ class EnableServiceLink(tables.LinkAction):
# policy_rules = (("iot", "iot:service_action"),) # policy_rules = (("iot", "iot:service_action"),)
"""
class DisableServiceLink(tables.LinkAction): class DisableServiceLink(tables.LinkAction):
name = "disableservice" name = "disableservice"
verbose_name = _("Disable Service(s)") verbose_name = _("Disable Service(s)")
@ -81,7 +80,6 @@ class DisableServiceLink(tables.LinkAction):
classes = ("ajax-modal",) classes = ("ajax-modal",)
# icon = "plus" # icon = "plus"
# policy_rules = (("iot", "iot:service_action"),) # policy_rules = (("iot", "iot:service_action"),)
"""
class RemovePluginsLink(tables.LinkAction): class RemovePluginsLink(tables.LinkAction):
@ -93,15 +91,6 @@ class RemovePluginsLink(tables.LinkAction):
# policy_rules = (("iot", "iot:remove_plugins"),) # policy_rules = (("iot", "iot:remove_plugins"),)
class RemoveServicesLink(tables.LinkAction):
name = "removeservices"
verbose_name = _("Remove Service(s)")
url = "horizon:iot:boards:removeservices"
classes = ("ajax-modal",)
icon = "plus"
# policy_rules = (("iot", "iot:remove_services"),)
class AttachPortLink(tables.LinkAction): class AttachPortLink(tables.LinkAction):
name = "attachport" name = "attachport"
verbose_name = _("Attach Port") verbose_name = _("Attach Port")
@ -120,7 +109,7 @@ class DetachPortLink(tables.LinkAction):
class EnableWebServiceLink(tables.LinkAction): class EnableWebServiceLink(tables.LinkAction):
name = "enablewebservice" name = "enablewebservice"
verbose_name = _("Enable Web Services") verbose_name = _("Enable Web Services Manager")
url = "horizon:iot:boards:enablewebservice" url = "horizon:iot:boards:enablewebservice"
classes = ("ajax-modal",) classes = ("ajax-modal",)
icon = "plus" icon = "plus"
@ -128,7 +117,7 @@ class EnableWebServiceLink(tables.LinkAction):
class DisableWebServiceLink(tables.LinkAction): class DisableWebServiceLink(tables.LinkAction):
name = "disablewebservice" name = "disablewebservice"
verbose_name = _("Disable Web Services") verbose_name = _("Disable Web Services Manager")
url = "horizon:iot:boards:disablewebservice" url = "horizon:iot:boards:disablewebservice"
classes = ("ajax-modal",) classes = ("ajax-modal",)
icon = "plus" icon = "plus"
@ -209,11 +198,9 @@ class BoardsTable(tables.DataTable):
class Meta(object): class Meta(object):
name = "boards" name = "boards"
verbose_name = _("boards") verbose_name = _("boards")
# row_actions = (EditBoardLink, EnableServiceLink, DisableServiceLink, row_actions = (EditBoardLink, EnableServiceLink, DisableServiceLink,
row_actions = (EditBoardLink, EnableServiceLink,
RestoreServices, AttachPortLink, DetachPortLink, RestoreServices, AttachPortLink, DetachPortLink,
EnableWebServiceLink, DisableWebServiceLink, EnableWebServiceLink, DisableWebServiceLink,
RemovePluginsLink, RemoveServicesLink, RemovePluginsLink, DeleteBoardsAction)
DeleteBoardsAction)
table_actions = (BoardFilterAction, CreateBoardLink, table_actions = (BoardFilterAction, CreateBoardLink,
DeleteBoardsAction) DeleteBoardsAction)

View File

@ -20,22 +20,20 @@ urlpatterns = [
url(r'^create/$', views.CreateView.as_view(), name='create'), url(r'^create/$', views.CreateView.as_view(), name='create'),
url(r'^(?P<board_id>[^/]+)/update/$', views.UpdateView.as_view(), url(r'^(?P<board_id>[^/]+)/update/$', views.UpdateView.as_view(),
name='update'), name='update'),
url(r'^(?P<board_id>[^/]+)/removeplugins/$',
views.RemovePluginsView.as_view(), name='removeplugins'),
url(r'^(?P<board_id>[^/]+)/removeservices/$',
views.RemoveServicesView.as_view(), name='removeservices'),
url(r'^(?P<board_id>[^/]+)/enableservice/$', url(r'^(?P<board_id>[^/]+)/enableservice/$',
views.EnableServiceView.as_view(), name='enableservice'), views.EnableServiceView.as_view(), name='enableservice'),
# url(r'^(?P<board_id>[^/]+)/disableservice/$', url(r'^(?P<board_id>[^/]+)/disableservice/$',
# views.DisableServiceView.as_view(), name='disableservice'), views.DisableServiceView.as_view(), name='disableservice'),
url(r'^(?P<board_id>[^/]+)/attachport/$', url(r'^(?P<board_id>[^/]+)/attachport/$',
views.EnableWebServiceView.as_view(), name='enablewebservice'),
url(r'^(?P<board_id>[^/]+)/enablewebservice/$',
views.DisableWebServiceView.as_view(), name='disablewebservice'),
url(r'^(?P<board_id>[^/]+)/disablewebservice/$',
views.AttachPortView.as_view(), name='attachport'), views.AttachPortView.as_view(), name='attachport'),
url(r'^(?P<board_id>[^/]+)/detachport/$', url(r'^(?P<board_id>[^/]+)/detachport/$',
views.DetachPortView.as_view(), name='detachport'), views.DetachPortView.as_view(), name='detachport'),
url(r'^(?P<board_id>[^/]+)/enablewebservice/$',
views.EnableWebServiceView.as_view(), name='enablewebservice'),
url(r'^(?P<board_id>[^/]+)/disablewebservice/$',
views.DisableWebServiceView.as_view(), name='disablewebservice'),
url(r'^(?P<board_id>[^/]+)/removeplugins/$',
views.RemovePluginsView.as_view(), name='removeplugins'),
url(r'^(?P<board_id>[^/]+)/detail/$', views.BoardDetailView.as_view(), url(r'^(?P<board_id>[^/]+)/detail/$', views.BoardDetailView.as_view(),
name='detail'), name='detail'),
] ]

View File

@ -99,6 +99,7 @@ class IndexView(tables.DataTableView):
else: else:
board.fleet_name = None board.fleet_name = None
boards.sort(key=lambda b: b.name)
return boards return boards
@ -193,14 +194,26 @@ class EnableServiceView(forms.ModalFormView):
board_services = api.iotronic.services_on_board(self.request, board_services = api.iotronic.services_on_board(self.request,
board.uuid, board.uuid,
True) True)
cloud_services.sort(key=lambda b: b.name)
service_list = [] service_list = []
# LOG.debug('CLOUD SERVICES: %s', cloud_services)
for cloud_service in cloud_services: for cloud_service in cloud_services:
uuid = cloud_service._info["uuid"]
name = cloud_service._info["name"]
if len(board_services) == 0: if len(board_services) == 0:
service_list.append((cloud_service._info["uuid"],
_(cloud_service._info["name"]))) # BEFORE filtering necessity
# service_list.append((cloud_service._info["uuid"],
# _(cloud_service._info["name"])))
# AFTER filtering necessity
# We are filtering the services that starts with "webservice"
if ((name != "webservice") and (name != "webservice_ssl")):
service_list.append((uuid, _(name)))
else: else:
counter = 0 counter = 0
for board_service in board_services: for board_service in board_services:
@ -209,15 +222,22 @@ class EnableServiceView(forms.ModalFormView):
elif counter != len(board_services) - 1: elif counter != len(board_services) - 1:
counter += 1 counter += 1
else: else:
service_list.append((cloud_service._info["uuid"], # BEFORE filtering necessity
_(cloud_service._info["name"]))) # service_list.append((uuid, _(name)))
# AFTER filtering necessity
# We are filtering the services that starts
# with "webservice"
if ((name != "webservice") and
("name" != "webservice_ssl")):
service_list.append((uuid, _(name)))
# LOG.debug('SERVICES: %s', service_list)
return {'uuid': board.uuid, return {'uuid': board.uuid,
'name': board.name, 'name': board.name,
'service_list': service_list} 'service_list': service_list}
"""
class DisableServiceView(forms.ModalFormView): class DisableServiceView(forms.ModalFormView):
template_name = 'iot/boards/disableservice.html' template_name = 'iot/boards/disableservice.html'
modal_header = _("Disable Service(s)") modal_header = _("Disable Service(s)")
@ -256,21 +276,21 @@ class DisableServiceView(forms.ModalFormView):
board_services = api.iotronic.services_on_board(self.request, board_services = api.iotronic.services_on_board(self.request,
board.uuid, board.uuid,
True) True)
cloud_services.sort(key=lambda b: b.name)
service_list = [] service_list = []
# BEFORE filtering necessity # BEFORE filtering necessity
# for cloud_service in cloud_services: """
# for board_service in board_services: for cloud_service in cloud_services:
# if board_service["uuid"] == cloud_service._info["uuid"]: for board_service in board_services:
# service_list.append((cloud_service._info["uuid"], if board_service["uuid"] == cloud_service._info["uuid"]:
# _(cloud_service._info["name"]))) service_list.append((cloud_service._info["uuid"],
_(cloud_service._info["name"])))
"""
# AFTER filtering necessity # AFTER filtering necessity
# We are filtering the services that starts with "webservice" # We are filtering the services that starts with "webservice"
# ------------------------------------------------------------ # ------------------------------------------------------------
for cloud_service in cloud_services: for cloud_service in cloud_services:
for board_service in board_services: for board_service in board_services:
if ((board_service["uuid"] == cloud_service._info["uuid"]) and if ((board_service["uuid"] == cloud_service._info["uuid"]) and
@ -283,7 +303,6 @@ class DisableServiceView(forms.ModalFormView):
return {'uuid': board.uuid, return {'uuid': board.uuid,
'name': board.name, 'name': board.name,
'service_list': service_list} 'service_list': service_list}
"""
class AttachPortView(forms.ModalFormView): class AttachPortView(forms.ModalFormView):
@ -322,6 +341,7 @@ class AttachPortView(forms.ModalFormView):
networks = api.neutron.network_list(self.request) networks = api.neutron.network_list(self.request)
net_choices = [] net_choices = []
networks.sort(key=lambda b: b.name)
for net in networks: for net in networks:
for subnet in net["subnets"]: for subnet in net["subnets"]:
net_choices.append((net["id"] + ':' + subnet["id"], net_choices.append((net["id"] + ':' + subnet["id"],
@ -371,6 +391,7 @@ class DetachPortView(forms.ModalFormView):
# ################################################################ # ################################################################
# LOG.debug("PORTS: %s", ports) # LOG.debug("PORTS: %s", ports)
ports.sort(key=lambda b: b.name)
filtered_ports = [] filtered_ports = []
for port in ports: for port in ports:
if port._info["board_uuid"] == board.uuid: if port._info["board_uuid"] == board.uuid:
@ -388,7 +409,7 @@ class DetachPortView(forms.ModalFormView):
class EnableWebServiceView(forms.ModalFormView): class EnableWebServiceView(forms.ModalFormView):
template_name = 'iot/boards/enablewebservice.html' template_name = 'iot/boards/enablewebservice.html'
modal_header = _("Enable Web Service(s)") modal_header = _("Enable Web Services Manager")
form_id = "webservice_enable_form" form_id = "webservice_enable_form"
form_class = project_forms.EnableWebServiceForm form_class = project_forms.EnableWebServiceForm
submit_label = _("Enable") submit_label = _("Enable")
@ -425,7 +446,7 @@ class EnableWebServiceView(forms.ModalFormView):
class DisableWebServiceView(forms.ModalFormView): class DisableWebServiceView(forms.ModalFormView):
template_name = 'iot/boards/disablewebservice.html' template_name = 'iot/boards/disablewebservice.html'
modal_header = _("Disable Web Service(s)") modal_header = _("Disable Web Services Manager")
form_id = "webservice_disable_form" form_id = "webservice_disable_form"
form_class = project_forms.DisableWebServiceForm form_class = project_forms.DisableWebServiceForm
submit_label = _("Disable") submit_label = _("Disable")
@ -508,61 +529,6 @@ class RemovePluginsView(forms.ModalFormView):
'plugin_list': plugin_list} 'plugin_list': plugin_list}
class RemoveServicesView(forms.ModalFormView):
template_name = 'iot/boards/removeservices.html'
modal_header = _("Remove Services from board")
form_id = "remove_boardservices_form"
form_class = project_forms.RemoveServicesForm
submit_label = _("Remove")
# submit_url = reverse_lazy("horizon:iot:boards:removeservices")
submit_url = "horizon:iot:boards:removeservices"
success_url = reverse_lazy('horizon:iot:boards:index')
page_title = _("Remove Services from board")
@memoized.memoized_method
def get_object(self):
try:
return api.iotronic.board_get(self.request,
self.kwargs['board_id'],
None)
except Exception:
redirect = reverse("horizon:iot:boards:index")
exceptions.handle(self.request,
_('Unable to get board information.'),
redirect=redirect)
def get_context_data(self, **kwargs):
context = super(RemoveServicesView, self).get_context_data(**kwargs)
args = (self.get_object().uuid,)
context['submit_url'] = reverse(self.submit_url, args=args)
return context
def get_initial(self):
board = self.get_object()
# Populate services
services = api.iotronic.services_on_board(self.request,
board.uuid,
True)
services.sort(key=lambda b: b["name"])
service_list = []
for service in services:
# service_list.append((service["uuid"], _(service["name"])))
# TO BE REMOVED
# ###########################################################
# We are filtering the services that starts with "webservice"
if ((service["name"] != "webservice") and
(service["name"] != "webservice_ssl")):
service_list.append((service["uuid"], _(service["name"])))
# ###########################################################
return {'uuid': board.uuid,
'name': board.name,
'service_list': service_list}
class DetailView(tabs.TabView): class DetailView(tabs.TabView):
tab_group_class = project_tabs.BoardDetailTabs tab_group_class = project_tabs.BoardDetailTabs
template_name = 'horizon/common/_detail.html' template_name = 'horizon/common/_detail.html'

View File

@ -33,11 +33,15 @@ class ExposeWebserviceForm(forms.SelfHandlingForm):
widget=forms.TextInput(attrs={'readonly': 'readonly'}) widget=forms.TextInput(attrs={'readonly': 'readonly'})
) )
zone = forms.CharField(label=_("Zone"),
widget=forms.TextInput(attrs={'readonly':
'readonly'}))
ws_name = forms.CharField(label=_("Web Service Name")) ws_name = forms.CharField(label=_("Web Service Name"))
port = forms.IntegerField( port = forms.IntegerField(
label=_("Port"), label=_("Port"),
help_text=_("The port used by the service") help_text=_("The local port used by the service")
) )
secure = forms.BooleanField(label=_("Secure"), initial=True) secure = forms.BooleanField(label=_("Secure"), initial=True)
@ -98,6 +102,5 @@ class UnexposeWebserviceForm(forms.SelfHandlingForm):
return True return True
except Exception: except Exception:
LOG.debug("HERE")
message_text = "Unable to unexpose web service." message_text = "Unable to unexpose web service."
exceptions.handle(request, _(message_text)) exceptions.handle(request, _(message_text))

View File

@ -129,8 +129,11 @@ class ExposeView(forms.ModalFormView):
def get_initial(self): def get_initial(self):
board = self.get_object() board = self.get_object()
board_exp_info = iotronic.webservice_get_enabled_info(self.request,
board.uuid)
zone = board_exp_info.dns + "." + board_exp_info.zone
return {'uuid': board.uuid, 'name': board.name} return {'uuid': board.uuid, 'name': board.name, 'zone': zone}
class UnexposeView(forms.ModalFormView): class UnexposeView(forms.ModalFormView):