models.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from django.db import models
  2. class Permission(models.Model):
  3. name = models.CharField(max_length=255, verbose_name="权限名称")
  4. description = models.TextField(blank=True, verbose_name="权限描述")
  5. primary_page = models.CharField(max_length=255, verbose_name="主页面")
  6. page = models.CharField(max_length=255, verbose_name="页面路径")
  7. component = models.CharField(max_length=255, verbose_name="组件标识", blank=True, null=True)
  8. enabled = models.BooleanField(default=True, verbose_name="是否启用")
  9. class Meta:
  10. verbose_name = "权限配置"
  11. verbose_name_plural = "权限配置"
  12. unique_together = ('page', 'component')
  13. class Role(models.Model):
  14. name = models.CharField(max_length=100, unique=True, verbose_name="角色名称")
  15. permissions = models.ManyToManyField(Permission, verbose_name="权限集合")
  16. description = models.TextField(blank=True, verbose_name="角色描述")
  17. class Meta:
  18. verbose_name = "角色"
  19. verbose_name_plural = "角色"
  20. class ListModel(models.Model):
  21. staff_name = models.CharField(max_length=255, verbose_name="Staff Name")
  22. staff_type = models.CharField(max_length=255, verbose_name="Staff Type")
  23. role = models.ForeignKey(Role, on_delete=models.SET_NULL, null=True, blank=True, verbose_name="关联角色")
  24. check_code = models.IntegerField(default=8888, verbose_name="Check Code")
  25. openid = models.CharField(max_length=255, verbose_name="Openid")
  26. appid = models.CharField(max_length=100, verbose_name='APPID')
  27. is_delete = models.BooleanField(default=False, verbose_name='Delete Label')
  28. create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time")
  29. update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time")
  30. error_check_code_counter = models.IntegerField(default=0,verbose_name='check_code error counter')
  31. is_lock = models.BooleanField(default=False,verbose_name='Whether the lock')
  32. is_look = models.BooleanField(default=False,verbose_name='Whether the look')
  33. is_edit = models.BooleanField(default=False,verbose_name='Whether the edit')
  34. class Meta:
  35. db_table = 'staff'
  36. verbose_name = 'Staff'
  37. verbose_name_plural = "Staff"
  38. ordering = ['staff_name']
  39. def has_permission(self, page, component=None):
  40. """检查用户是否有特定页面或组件的权限"""
  41. if not self.role:
  42. return False
  43. if component:
  44. return self.role.permissions.filter(page=page, component=component, enabled=True).exists()
  45. else:
  46. return self.role.permissions.filter(page=page, enabled=True).exists()
  47. class TypeListModel(models.Model):
  48. staff_type = models.CharField(max_length=255, verbose_name="Staff Type")
  49. openid = models.CharField(max_length=255, verbose_name="Openid")
  50. creater = models.CharField(max_length=255, verbose_name="Creater")
  51. create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time")
  52. update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time")
  53. class Meta:
  54. db_table = 'stafftype'
  55. verbose_name = 'Staff Type'
  56. verbose_name_plural = "Staff Type"
  57. ordering = ['staff_type']