from django.db import models class Permission(models.Model): name = models.CharField(max_length=255, verbose_name="权限名称") description = models.TextField(blank=True, verbose_name="权限描述") primary_page = models.CharField(max_length=255, verbose_name="主页面") page = models.CharField(max_length=255, verbose_name="页面路径") component = models.CharField(max_length=255, verbose_name="组件标识", blank=True, null=True) enabled = models.BooleanField(default=True, verbose_name="是否启用") class Meta: verbose_name = "权限配置" verbose_name_plural = "权限配置" unique_together = ('page', 'component') class Role(models.Model): name = models.CharField(max_length=100, unique=True, verbose_name="角色名称") permissions = models.ManyToManyField(Permission, verbose_name="权限集合") description = models.TextField(blank=True, verbose_name="角色描述") class Meta: verbose_name = "角色" verbose_name_plural = "角色" class ListModel(models.Model): staff_name = models.CharField(max_length=255, verbose_name="Staff Name") staff_type = models.CharField(max_length=255, verbose_name="Staff Type") role = models.ForeignKey(Role, on_delete=models.SET_NULL, null=True, blank=True, verbose_name="关联角色") check_code = models.IntegerField(default=8888, verbose_name="Check Code") openid = models.CharField(max_length=255, verbose_name="Openid") appid = models.CharField(max_length=100, verbose_name='APPID') is_delete = models.BooleanField(default=False, verbose_name='Delete Label') create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") error_check_code_counter = models.IntegerField(default=0,verbose_name='check_code error counter') is_lock = models.BooleanField(default=False,verbose_name='Whether the lock') is_look = models.BooleanField(default=False,verbose_name='Whether the look') is_edit = models.BooleanField(default=False,verbose_name='Whether the edit') class Meta: db_table = 'staff' verbose_name = 'Staff' verbose_name_plural = "Staff" ordering = ['staff_name'] def has_permission(self, page, component=None): """检查用户是否有特定页面或组件的权限""" if not self.role: return False if component: return self.role.permissions.filter(page=page, component=component, enabled=True).exists() else: return self.role.permissions.filter(page=page, enabled=True).exists() class TypeListModel(models.Model): staff_type = models.CharField(max_length=255, verbose_name="Staff Type") openid = models.CharField(max_length=255, verbose_name="Openid") creater = models.CharField(max_length=255, verbose_name="Creater") create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time") update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time") class Meta: db_table = 'stafftype' verbose_name = 'Staff Type' verbose_name_plural = "Staff Type" ordering = ['staff_type']