80 lines
3.1 KiB
Python
80 lines
3.1 KiB
Python
# coding=utf-8
|
|
from django.db import models
|
|
from django.contrib.auth.models import User
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from common import const
|
|
from common import generic
|
|
|
|
|
|
class Site(models.Model):
|
|
"""
|
|
站点,一个站点下可有多个公司,处于同一个站点下的用户逻辑上位于同一个组织
|
|
"""
|
|
index_weight = 1
|
|
begin = models.DateField(_('begin date'), blank=True,null=True)
|
|
end = models.DateField(_('end date'), blank=True,null=True)
|
|
name = models.CharField(_('site name'), max_length=const.DB_CHAR_NAME_40)
|
|
description = models.TextField(_('site description'),blank=True,null=True)
|
|
user = models.ManyToManyField(User,verbose_name=_('administrator'))
|
|
|
|
def __unicode__(self):
|
|
return u'%s'%self.name
|
|
|
|
class Meta:
|
|
verbose_name = _('Site')
|
|
verbose_name_plural = _('Site')
|
|
|
|
|
|
class Module(generic.BO):
|
|
"""
|
|
模块管理
|
|
"""
|
|
index_weight = 2
|
|
code = models.CharField(_("module code"),max_length=const.DB_CHAR_CODE_6,blank=True,null=True)
|
|
name = models.CharField(_("module name"),max_length=const.DB_CHAR_NAME_40)
|
|
url = models.URLField(_("module url"),blank=True,null=True,max_length=const.DB_CHAR_NAME_80)
|
|
weight = models.IntegerField(_("weight"),blank=True,null=True,default=99)
|
|
icon = models.CharField(_("style class"),blank=True,null=True,max_length=const.DB_CHAR_NAME_40)
|
|
parent = models.ForeignKey('self',blank=True,null=True,verbose_name=_("parent"))
|
|
status = models.BooleanField(_("in use"),default=True)
|
|
|
|
class Meta:
|
|
verbose_name = _("module")
|
|
verbose_name_plural = _("module")
|
|
|
|
|
|
class Menu(generic.BO):
|
|
"""
|
|
菜单管理
|
|
"""
|
|
index_weight = 3
|
|
module = models.ForeignKey(Module,verbose_name=_("module"))
|
|
code = models.CharField(_("menu code"),max_length=const.DB_CHAR_CODE_6,blank=True,null=True)
|
|
name = models.CharField(_("menu name"),max_length=const.DB_CHAR_NAME_40)
|
|
url = models.URLField(_("menu url"),blank=True,null=True,max_length=const.DB_CHAR_NAME_80)
|
|
weight = models.IntegerField(_("weight"),blank=True,null=True,default=99)
|
|
icon = models.CharField(_("style class"),blank=True,null=True,max_length=const.DB_CHAR_NAME_40)
|
|
status = models.BooleanField(_("in use"),default=True)
|
|
|
|
class Meta:
|
|
verbose_name = _("menu")
|
|
verbose_name_plural = _("menu")
|
|
|
|
|
|
class Role(generic.BO):
|
|
"""
|
|
角色管理,分配用户所拥有的菜单
|
|
"""
|
|
index_weight = 4
|
|
code = models.CharField(_("role code"),max_length=const.DB_CHAR_CODE_6,blank=True,null=True)
|
|
name = models.CharField(_("role name"),max_length=const.DB_CHAR_NAME_40)
|
|
description = models.CharField(_("description"),max_length=const.DB_CHAR_NAME_80,blank=True,null=True)
|
|
status = models.BooleanField(_("in use"),default=True)
|
|
parent = models.ForeignKey('self',blank=True,null=True,verbose_name=_("parent"))
|
|
users = models.ManyToManyField(User,verbose_name=_("role users"),blank=True)
|
|
menus = models.ManyToManyField(Menu,verbose_name=_("role menus"),blank=True)
|
|
|
|
class Meta:
|
|
verbose_name = _("role")
|
|
verbose_name_plural = _("role")
|