models.py 745 B

123456789101112131415161718192021222324252627282930313233
  1. from django.db import models
  2. from django.utils.translation import gettext as _
  3. from .cache import clear_acl_cache
  4. def permissions_default():
  5. return {}
  6. class BaseRole(models.Model):
  7. name = models.CharField(max_length=255)
  8. special_role = models.CharField(max_length=255, null=True, blank=True)
  9. permissions = models.JSONField(default=permissions_default)
  10. class Meta:
  11. abstract = True
  12. def __str__(self):
  13. return _(self.name)
  14. def save(self, *args, **kwargs):
  15. if self.pk:
  16. clear_acl_cache()
  17. return super().save(*args, **kwargs)
  18. def delete(self, *args, **kwargs):
  19. clear_acl_cache()
  20. return super().delete(*args, **kwargs)
  21. class Role(BaseRole):
  22. pass