Welcome to django-dynamic-cabinetmaps’s documentation!

A lightweight dynamic create cabinet graph with django

Introduction

尽管绘制机柜图的需求是非常普遍的,尤其是在构建CMDB平台。但在其机柜设计与开发中,还是有不少的坑需要大家注意和解决;因此这个小项目或许可以多多少少解决大家在实际开发中遇到的痛点和麻烦。

对于机柜图的处理,先前已经有很多主流的做法,那么‘Django-Dynamic-Cabinet Maps’到底有什么优势呢?

  • 轻量级
    • Don’t XML / YML !
    • Don’t TinyXML !
    • Don’t Config Template !
    • Don’t Repeat Yourself !
  • 动态性
    • 可动态调整机柜排版
    • 机柜的个数和机柜中导轨的个数可被不同的需求动态改变。
  • 扩展性
    • 可定制的机柜编号
    • 可定制的机柜样式
    • 兼容和支持Bootstrap进行页面美化
    • 默认可支持100个机柜(通过定制可以更大0_0)

Warning

开发版本暂时不支持ie内核, Chrome/Firefox/Safair都支持.

未来版本可定制效果图的例子

http://i12.tietuku.com/cda41482624415f4.png

Versions

  • 0.1.dev2

Table Of Contents

Installation

Requirements

  • Python2, Python2.7
  • Django 1.6, 1.7, 1.8
  • sass 3.4+ (不是必须)

Setup

  1. 通过pip进行安装
pip install django-dynamic-cabinetmaps
  1. 在settings.py进行添加
INSTALLED_APPS = (
 ......

 'cabinet_structure',

 ......
)
  1. 安装好之后,需要通过一些配置,详情请看 Usage 章节.

Usage

API

首先你需要在你APP的views中,继承CabinetViews类,该类提供三个API。

template_name

用于指定渲染机柜的模版

cabinet_cells

提供总共需要多少个机柜

rack_rows

default:42

提供每个机柜总共有多少个导轨

example

from cabinet_structure.views import CabinetViews

class MyViews(CabinetViews):

   template_name = 'MyAPP/MyAPP.html'
   cabinet_cells = 8
   # rack_rows = 42

Note

cabinet_cells可以手工填写;但更推荐从数据库中进行计算.

CSS

需要引入bootstrap框架以及本项目有关的样式套件cabinet_style.css

example

{% load staticfiles %}
......
<head>
......
  <link href="{% static '....bootstrap.min.css' %}" rel="stylesheet">
  <link rel="stylesheet" href="{% static 'cabinetmaps/css/cabinet_style.css' %}">
......
</head>

Templates

example

....

<div ....>

       {{ cabinet_data }}
</div>

....

{{ cabinet_data }}

在模版中指定一下标签变量{{ cabinet_data }}, 该标签涵盖了所有生成后的机柜HTML信息

查看机柜编号

生成后的机柜图,通过HTML可以查看,如下所示

  1. 机柜编号

下面html示例中,假设类 rack-title 下的 <p> 里标注的A1......即为 机柜编号

<tr><td class="rack" ......>
        <font class="rack-title"><p>A1</p></font></td>
</tr>
......

<tr><td class="rack" ......>
        <font class="rack-title"><p>A9</p></font></td>
</tr>
  1. 机柜上的的导轨编号

下面html示例中,假设类 rack 下的 <id> 里标注的信息,如 id=4 , id=12 即为 机柜的导轨编号

.......
<tr><td class='rack' align='center' valign='bottom' id='4'></td></tr>
.......
<tr><td class='rack' align='center' valign='bottom' id='12'></td></tr>

Note

在之后的版本中,对于机柜编号的定制会得到加强,并提供数据填充的API.

Settings

django.conf.settings.MAX_CABINET_ROWS_NUM
Default:6

用于指定页面每行中显示多少个机柜

example

假设指定页面每行显示7个机柜

   # in settings.py

   MAX_CABINET_ROWS_NUM = 7


.. warning::

   目前'开发测试版'中,试图设置该参数,会导致前端样式的显示问题,在之后的版本中会修复,请多关注!

Demo

  1. 从git上克隆 https://github.com/boylegu/django-dynamic-cabinetmaps.git
  2. 然后进入 demoapp
  3. python manage.py runserver
  4. 通过浏览器访问 http://127.0.0.1:8000/cabinetmaps/

Note

目前demo是需要django 1.6运行

Stylesheet

这个项目的前端主要是通过Sass进行编写, 所以如果你需要进行样式自定义,首先需要安装并熟悉 Sass

Warning

目前’开发测试版’中,项目本身暂时不支持自定义扩展,但鼓励你可以自己尝试修改;在之后的版本中,我将彻底以Sass代码进行部分重构来方便大家扩展

Comming Soon

Future

  • 支持Python 3.
  • 将会在正式版中修正样式显示的问题.
  • 完善样式可定制的功能.
  • 机柜编号可支持反转.
  • 增加服务器数据渲染的API
  • 支持机柜分页

技术支持

如果你有任何意见和交流可以直接通过GitHub或者加QQ讨论群: 315308272 与我交流。 如果你感兴趣可以和我一起来完善该项目.

作者介绍

  • Boyle

    上海土著.

    长期浸淫在互联网行业中, 花了不少青春岁月在知名网游公司NCsoft, 及搜狐畅游等从事一线Coding;

    后来受国家号召辗转电商行业,目前在某世界五百强企业担任’高级Python开发’;

    业余时间也会经常刷刷豆瓣``http://www.douban.com/people/130165068/``

    想一起交流的可以给我发邮件``gubaoer@hotmail.com``

Changelog

0.1.dev2

  1. 修正html部分不符合规范的tag
  2. 调整部分sass代码,为日后重构做准备

0.1.dev1

  1. 项目初始化
  2. 基本支持导轨和机柜可动态调整
  3. 增加前端样式
  4. 增加文档信息
  5. 简化Template的Tag标签
  6. 增加Demo

Indices and tables