Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/users/migrations/0002_v3_upgrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class Migration(migrations.Migration):
verbose_name="主键id",
),
),
("name", models.CharField(db_index=True, max_length=150, unique=True, verbose_name="名称")),
("name", models.CharField(db_index=True, max_length=150, verbose_name="名称")),
(
"workspace_id",
models.CharField(db_index=True, default="default", max_length=64, verbose_name="工作空间id"),
Expand Down
15 changes: 5 additions & 10 deletions apps/users/models/user_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

class SystemUserGroup(models.Model):
id = models.CharField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
name = models.CharField(max_length=150, verbose_name="名称", unique=True, db_index=True)
name = models.CharField(max_length=150, verbose_name="名称", db_index=True)
workspace_id = models.CharField(max_length=64, verbose_name="工作空间id", default="default", db_index=True)
create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True, null=True, db_index=True)
update_time = models.DateTimeField(verbose_name="修改时间", auto_now=True, null=True, db_index=True)
Expand All @@ -21,15 +21,10 @@ class Meta:
class SystemUserGroupRelation(models.Model):
id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="用户")
group = models.ForeignKey(SystemUserGroup, on_delete=models.CASCADE, verbose_name="用户组",
related_name="user_relations")
group = models.ForeignKey(
SystemUserGroup, on_delete=models.CASCADE, verbose_name="用户组", related_name="user_relations"
)

class Meta:
db_table = "system_user_group_relation"
constraints = [
models.UniqueConstraint(
fields=["user", "group"],
name="uniq_user_group_relation"
)
]

constraints = [models.UniqueConstraint(fields=["user", "group"], name="uniq_user_group_relation")]
19 changes: 19 additions & 0 deletions apps/users/tests/test_user_group.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# coding=utf-8
import uuid_utils.compat as uuid

from django.test import TestCase

from users.models.user_group import SystemUserGroup


class SystemUserGroupWorkspaceIsolationTests(TestCase):
def test_same_group_name_allowed_in_different_workspaces(self):
SystemUserGroup.objects.create(id=uuid.uuid7(), name="test", workspace_id="default")
group = SystemUserGroup.objects.create(id=uuid.uuid7(), name="test", workspace_id="jin-feixue")
self.assertEqual(SystemUserGroup.objects.filter(name="test").count(), 2)
self.assertEqual(group.workspace_id, "jin-feixue")

def test_same_group_name_rejected_in_same_workspace(self):
SystemUserGroup.objects.create(id=uuid.uuid7(), name="test", workspace_id="default")
with self.assertRaises(Exception):
SystemUserGroup.objects.create(id=uuid.uuid7(), name="test", workspace_id="default")
Loading