MaxKB/apps/setting/models/team_management.py

74 lines
2.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# coding=utf-8
"""
@project: maxkb
@Author
@file team_management.py
@date2023/9/25 15:04
@desc:
"""
import uuid
from django.contrib.postgres.fields import ArrayField
from django.db import models
from common.constants.permission_constants import Group, Operate
from common.mixins.app_model_mixin import AppModelMixin
from users.models import User
class AuthTargetType(models.TextChoices):
"""授权目标"""
DATASET = Group.DATASET.value, '数据集'
APPLICATION = Group.APPLICATION.value, '应用'
class AuthOperate(models.TextChoices):
"""授权权限"""
MANAGE = Operate.MANAGE.value, '管理'
USE = Operate.USE.value, "使用"
class Team(AppModelMixin):
"""
团队表
"""
user = models.OneToOneField(User, primary_key=True, on_delete=models.DO_NOTHING, verbose_name="团队所有者")
name = models.CharField(max_length=128, verbose_name="团队名称")
class Meta:
db_table = "team"
class TeamMember(AppModelMixin):
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid1, editable=False, verbose_name="主键id")
team = models.ForeignKey(Team, on_delete=models.DO_NOTHING, verbose_name="团队id")
user = models.ForeignKey(User, on_delete=models.DO_NOTHING, verbose_name="成员用户id")
class Meta:
db_table = "team_member"
class TeamMemberPermission(AppModelMixin):
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid1, editable=False, verbose_name="主键id")
"""
团队成员权限
"""
member = models.ForeignKey(TeamMember, on_delete=models.DO_NOTHING, verbose_name="团队成员")
auth_target_type = models.CharField(verbose_name='授权目标', max_length=128, choices=AuthTargetType.choices,
default=AuthTargetType.DATASET)
target = models.UUIDField(max_length=128, verbose_name="数据集/应用id")
operate = ArrayField(verbose_name="权限操作列表",
base_field=models.CharField(max_length=256,
blank=True,
choices=AuthOperate.choices,
default=AuthOperate.USE),
)
class Meta:
db_table = "team_member_permission"