前面的文章已经完成了panel与panelgroup的自定义增加,这篇博文将对Dashboard(一级菜单)的增加进行一个简单总结。
首先进入/usr/share/openstack-dashbaord/openstack_dashboard/dashboards目录,会看到如下的目录结构:
1|--__init__.py 2|--admin 3|--project 4|--identity 5|--router 6|--settings
在以前的文章OpenStack(kilo)界面dashboard的二次开发(一)中已经说明,以上几个文件夹代表了openstack界面上的几个一级菜单(Dashboard)。对于Dashboard下的PanelGroup与Panel的自定义增加以及相关文件结构已经分别在OpenStack(kilo)界面dashboard的二次开发(一)与OpenStack(kilo)界面dashboard的二次开发(二)中简单总结了,这里就不总结文件结构了。现在增加一个Dashboard,首先在dashboards下创建一个文件夹如下:
1|--__init__.py 2|--admin 3|--project 4|--identity 5|--router 6|--settings 7|--myproject #自定义增加的
myproject的文件结构如下:
1myproject 2|--dashboard.py 3|--__init__.py 4|--mypanel #这是在前面博文中增加的Panel,现在放到这来
接下来分别看看每个文件的内容:
dashboard.py
1#-*- coding:utf-8 -*- 3from django.utils.translation import ugettext_lazy as _ 5import horizon 7'''上一篇博文中增加的PanelGroup''' 8class MyPanels(horizon.PanelGroup): slug = "mypanelgroup" name = "Mypanelgroup" panels = ('mypanel',) 13class Myproject(horizon.Dashboard): name = "扶艾的项目" slug = "myproject" panels = (MyPanels,) default_panel = 'mypanel' permissions = ('openstack.role.admin',) 21horizon.register(Myproject)
然后看看mypanel文件夹的结构:
1mypanel 2|--__init__.py 3|--panel.py 4|--tables.py 5|--templates |--mypanel |--index.html 8|--urls.py 9|--views.py
这些文件的作用已将在前面博文总结,这里就不再赘述了。下面分别看看它们里面的内容:
panel.py
1import horizon 3from openstack_dashboard.dashboards.myproject import dashboard 6class Mypanel(horizon.Panel): name = "mypanel" slug = 'mypanel' permissions = ('openstack.roles.admin', 'openstack.services.compute') 12dashboard.Myproject.register(Mypanel)
tables.py
1from horizon import tables 3class MypanelTable(tables.DataTable): column1 = tables.Column("column1", verbose_name="column1") class Meta(object): name = "mypaneltable" verbose_name = "mypaneltable"
index.html
1{% extends 'base.html' %} 2{% load i18n %} 3{% block title %}{% trans "mypanel" %}{% endblock %} 5{% block main %} {{ table.render }} 7{% endblock %}
urls.py
1from django.conf.urls import patterns 2from django.conf.urls import url 4from openstack_dashboard.dashboards.myproject.mypanel import views 7urlpatterns = patterns( 'openstack_dashboard.dashboards.myproject.mypanel.views', url(r'^$', views.MypanelIndexView.as_view(), name='index'), 10)
views.py
1from horizon import tables 3from openstack_dashboard.dashboards.myproject.mypanel \ import tables as project_tables 6class MypanelIndexView(tables.DataTableView): table_class = project_tables.MypanelTable template_name = 'myproject/mypanel/index.html' page_title = "mypanel" def get_data(self): data = [] return data
上面即是要增加Dashboard所需要的文件,并且把之前博文中自定义的 PanelGroup与Panel加了进来。现在有了这些文件重启httpd服务,界面上仍然不会显示自定义的Dashboard。因为开关没打开,这时候还需要增加一个文件来启用它。进入/usr/share/openstack-dashboard /openstack_dashboard / enabled/文件夹可以看到很多以下划线加数字开头的文件,这些都是启用那些Dashboard的文件,模仿一个增加:
_35_myproject.py
1DASHBOARD = 'myproject' 3ADD_INSTALLED_APPS = [ 'openstack_dashboard.dashboards.myproject', 5]
该文件夹的名称前面的数字大小代表的是Dashboard在菜单栏的顺序,数字越小越靠前,这里是35,目前是最大的,所以Dashboard会显示在最后。重启httpd服务,查看效果。