Added unique together for role name and org

This commit is contained in:
Viswamedha Nalabotu 2026-03-08 12:56:23 +00:00
parent 8bd9a3d803
commit 3dd147e1af
2 changed files with 4 additions and 2 deletions

View file

@ -81,7 +81,7 @@ class Migration(migrations.Migration):
('uuid', models.UUIDField(default=uuid.uuid4, editable=False, verbose_name='UUID')), ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, verbose_name='UUID')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
('name', models.CharField(max_length=100, unique=True, verbose_name='Name')), ('name', models.CharField(max_length=100, verbose_name='Name')),
('description', models.TextField(blank=True, default='', verbose_name='Description')), ('description', models.TextField(blank=True, default='', verbose_name='Description')),
('members', models.ManyToManyField(related_name='roles', to=settings.AUTH_USER_MODEL)), ('members', models.ManyToManyField(related_name='roles', to=settings.AUTH_USER_MODEL)),
('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='roles', to='accounts.organization')), ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='roles', to='accounts.organization')),
@ -89,6 +89,7 @@ class Migration(migrations.Migration):
options={ options={
'verbose_name': 'Role', 'verbose_name': 'Role',
'verbose_name_plural': 'Roles', 'verbose_name_plural': 'Roles',
'unique_together': {('organization', 'name')},
}, },
), ),
] ]

View file

@ -95,7 +95,7 @@ class Invite(IdentifierMixin, TimeStampMixin, Model):
class Role(IdentifierMixin, TimeStampMixin, Model): class Role(IdentifierMixin, TimeStampMixin, Model):
name = CharField(verbose_name = _("Name"), max_length = 100, unique = True) name = CharField(verbose_name = _("Name"), max_length = 100)
description = TextField(verbose_name = _("Description"), blank = True, default = '') description = TextField(verbose_name = _("Description"), blank = True, default = '')
organization = ForeignKey(Organization, on_delete = CASCADE, related_name = "roles") organization = ForeignKey(Organization, on_delete = CASCADE, related_name = "roles")
members = ManyToManyField(User, related_name = "roles") members = ManyToManyField(User, related_name = "roles")
@ -103,6 +103,7 @@ class Role(IdentifierMixin, TimeStampMixin, Model):
class Meta: class Meta:
verbose_name = _('Role') verbose_name = _('Role')
verbose_name_plural = _('Roles') verbose_name_plural = _('Roles')
unique_together = [('organization', 'name')]
def __str__(self) -> str: def __str__(self) -> str:
return f"{self.name} ({self.organization.name})" return f"{self.name} ({self.organization.name})"