域账号密码自助-相关表结构设计

用户表
# coding:utf8
from __future__ import unicode_literals

from django.db import models
from datetime import datetime
from django.contrib.auth.models import AbstractUser

# Create your models here.


class UserProfile(AbstractUser):
company = (
('suzhou', u'苏州'),
('beijing', u'北京'),
('tianjing', u"天津"),
('guangzhou', u'广州'),
('nanjing', u"南京"),
('usa', u"美国"),
('lizhi', u"离职")
)
uid = models.CharField(max_length=100, verbose_name=u'用户UID', null=True, blank=True)
sid = models.CharField(max_length=100, verbose_name=u'用户SID', null=True, blank=True)
dn = models.CharField(max_length=100, verbose_name=u'DN名称', null=True, blank=True,)
email = models.EmailField(max_length=50, verbose_name=u"邮箱", null=True, blank=True)
rescue_email = models.EmailField(max_length=50, null=True, blank=True, verbose_name=u"救援邮箱")
is_enabled = models.BooleanField(default=True, verbose_name=u'帐号启用')
is_lockedout = models.BooleanField(default=False, verbose_name=u'帐号锁定')
is_dial_in = models.BooleanField(default=False, verbose_name=u'VPN权限')
gender = models.CharField(max_length=10, choices=(("male", "男"), ("female", "女")), default="male", verbose_name=u'性别')
mobile = models.CharField(max_length=11, null=True, blank=True, verbose_name=u'联系方式')
department = models.CharField(max_length=100, null=True, blank=True, verbose_name=u'部门')
company = models.CharField(choices=company, max_length=50, null=True,blank=True, help_text=u'所属公司', verbose_name=u'所属公司')
birday = models.DateField(null=True, blank=True, verbose_name=u"生日")
image = models.ImageField(upload_to="image/%Y/%m/%m", blank=True, default=u"image/default.png", max_length=100)
check = models.URLField(max_length=100, null=True, blank=True, verbose_name=u'在线检查')
quit_time = models.DateField(max_length=100, null=True, blank=True, verbose_name=u'离职时间')
created_time = models.CharField(max_length=100,verbose_name=u"创建时间",null=True, blank=True,)
pwd_last_set_time = models.CharField(max_length=100,verbose_name=u"密码最后一次设置时间",null=True, blank=True,)
add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")

def list_groups(self):
return self.usergroup_set.all()
list_groups.short_description = u'属组信息'

class Meta:
verbose_name = "用户信息"
verbose_name_plural = verbose_name

def __unicode__(self):
       return self.username
用户组
class UserGroup(models.Model):
username = models.CharField(max_length=100, verbose_name=u'组名', null=True, blank=True)
uid = models.CharField(max_length=100, verbose_name=u'组UID', null=True, blank=True)
sid = models.CharField(max_length=100, verbose_name=u'组SID', null=True, blank=True)
gc = models.CharField(max_length=100, verbose_name=u'GC', null=True, blank=True)
gs = models.CharField(max_length=100, verbose_name=u'GS', null=True, blank=True)
dn = models.CharField(max_length=100, verbose_name=u'DN', null=True, blank=True)
members = models.ManyToManyField(UserProfile)
add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")

class Meta:
verbose_name = "用户组信息"
verbose_name_plural = verbose_name

def __unicode__(self):
return self.dn
邮箱验证码
class EmailVerifyRecord(models.Model):
action_type = (
("user_reset_pwd_code", u"重置密码"),
("email_modify", u"修改邮箱"),
('user_reset_email_code', u'重置邮箱')
)
user = models.ForeignKey(UserProfile, verbose_name=u"用户", default='')
code = models.CharField(max_length=20, verbose_name=u"验证码")
email = models.EmailField(max_length=50, verbose_name=u"邮箱")
is_used= models.BooleanField(default=False, verbose_name=u"是否使用")
send_type = models.CharField(choices=action_type, max_length=100, verbose_name=u"验证码类型")
send_time = models.DateTimeField(default=datetime.now, verbose_name=u"发送时间")
# datetime.now() model编译时间生成默认时间
# datetime.now classs实例化时生成的时间

class Meta:
verbose_name = u"邮箱验证码"
verbose_name_plural = verbose_name

def __unicode__(self):
       return '{0}({1})'.format(self.code, self.email)
用户日志
# coding:utf8
from __future__ import unicode_literals

from django.db import models
from datetime import datetime

# Create your models here.


class UserActionLog(models.Model):
user_type = (
("user_modify_pwd", u"修改密码"),
("user_reset_pwd", u"重置密码"),
("user_unlock", u"账号解锁"),
("user_bind_email", u"绑定外部邮箱"),
("user_modify_email", u"修改外部邮箱"),
('user_reset_pwd_code', u'密码重置码'),
('user_reset_email_code', u'邮箱重置码')
)
status = models.BooleanField(verbose_name=u'状态', default=True)
user_type = models.CharField(verbose_name=u'类型', max_length=100, choices=user_type)
client_ip = models.CharField(verbose_name='客户端IP',max_length=128,null=True, blank=True)
username = models.CharField(verbose_name='用户',max_length=128, null=True, blank=True)
comment = models.CharField(verbose_name='备注',max_length=1000, null=True, blank=True)
add_time = models.DateTimeField(verbose_name=u"添加时间", default=datetime.now)

class Meta:
verbose_name = u"用户操作日志"
verbose_name_plural = verbose_name

def __unicode__(self):
return self.username


class PwdModifySuccess(UserActionLog):
class Meta:
verbose_name = u"密码修改成功"
verbose_name_plural = verbose_name
proxy = True


class PwdResetSuccess(UserActionLog):
class Meta:
verbose_name = u"密码重置成功"
verbose_name_plural = verbose_name
proxy = True


class UserUnlockSuccess(UserActionLog):
class Meta:
verbose_name = u"账号解锁成功"
verbose_name_plural = verbose_name
proxy = True


class AdmActionLog(models.Model):
adm_type = (
("adm_update", u"更新信息"),
("adm_disable", u"禁用帐号"),
("adm_disable_lizhi", u"禁用帐号[离职]"),
("adm_enable", u"启用帐号"),
("adm_unlock", u"解锁帐号"),
("adm_reset_pwd", u"重置密码"),
("adm_enable_vpn", u"启用VPN"),
("adm_disable_vpn", u"禁用VPN")
)
status = models.BooleanField(verbose_name=u'状态', default=True)
adm_type= models.CharField(verbose_name=u'类型', max_length=100, choices=adm_type)
client_ip = models.CharField(verbose_name='客户端IP', max_length=128, null=True, blank=True)
username = models.CharField(verbose_name='用户',max_length=128, null=True, blank=True)
comment = models.CharField(verbose_name='备注',max_length=128, null=True, blank=True)
sa = models.CharField(verbose_name='操作用户', max_length=128, null=True, blank=True)
add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")

class Meta:
verbose_name = u"管理员操作日志"
verbose_name_plural = verbose_name

def __unicode__(self):
return self.username
0%