Guest User

Untitled

a guest
Jul 26th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. from django.db import models
  2.  
  3.  
  4. class User(models.Model):
  5. """
  6. 用户表
  7. """
  8. username = models.CharField(verbose_name='用户名', max_length=32)
  9. password = models.CharField(verbose_name='密码', max_length=64)
  10. email = models.EmailField(verbose_name='邮箱')
  11.  
  12. def __str__(self):
  13. return self.username
  14.  
  15.  
  16. class Role(models.Model):
  17. """
  18. 角色表
  19. """
  20. caption = models.CharField(verbose_name='角色', max_length=32)
  21.  
  22. def __str__(self):
  23. return self.caption
  24.  
  25.  
  26. class User2Role(models.Model):
  27. """
  28. 用户角色关系表
  29. """
  30. user = models.ForeignKey(User, verbose_name='用户', related_name='roles', on_delete=models.CASCADE)
  31. role = models.ForeignKey(Role, verbose_name='角色', related_name='users', on_delete=models.CASCADE)
  32.  
  33. def __str__(self):
  34. return '%s-%s' % (self.user.username, self.role.caption,)
  35.  
  36.  
  37. class Menu(models.Model):
  38. """
  39. 菜单表
  40. """
  41. caption = models.CharField(verbose_name='菜单名称', max_length=32)
  42. parent = models.ForeignKey('self', verbose_name='父菜单', related_name='p', null=True, blank=True, on_delete=models.CASCADE)
  43.  
  44. def __str__(self):
  45. prev = ""
  46. parent = self.parent
  47. while True:
  48. if parent:
  49. prev = prev + '-' + str(parent.caption)
  50. parent = parent.parent
  51. else:
  52. break
  53. return '%s-%s' % (prev, self.caption,)
  54.  
  55.  
  56. class Permission(models.Model):
  57. """
  58. 权限
  59. """
  60. caption = models.CharField(verbose_name='权限', max_length=32)
  61. url = models.CharField(verbose_name='URL正则', max_length=128)
  62. menu = models.ForeignKey(Menu, verbose_name='所属菜单', related_name='permissions',null=True,blank=True, on_delete=models.CASCADE)
  63.  
  64. def __str__(self):
  65. return "%s-%s" % (self.caption, self.url,)
  66.  
  67.  
  68. class Action(models.Model):
  69. """
  70. 操作:增删改查
  71. """
  72. caption = models.CharField(verbose_name='操作标题', max_length=32)
  73. code = models.CharField(verbose_name='方法', max_length=32)
  74.  
  75. def __str__(self):
  76. return self.caption
  77.  
  78.  
  79. class Permission2Action2Role(models.Model):
  80. """
  81. 权限操作关系表
  82. """
  83. permission = models.ForeignKey(Permission, verbose_name='权限URL', related_name='actions', on_delete=models.CASCADE)
  84. action = models.ForeignKey(Action, verbose_name='操作', related_name='permissions', on_delete=models.CASCADE)
  85. role = models.ForeignKey(Role, verbose_name='角色', related_name='p2as', on_delete=models.CASCADE)
  86.  
  87. class Meta:
  88. unique_together = (
  89. ('permission', 'action', 'role'),
  90. )
  91.  
  92. def __str__(self):
  93. return "%s-%s-%s" % (self.permission, self.action, self.role,)
Add Comment
Please, Sign In to add comment