models.py 873 B

1234567891011121314151617181920212223242526272829303132333435
  1. from django.contrib.postgres.fields import JSONField
  2. from django.db import models
  3. from django.utils.encoding import python_2_unicode_compatible
  4. from . import version as acl_version
  5. def permissions_default():
  6. return {}
  7. @python_2_unicode_compatible
  8. class BaseRole(models.Model):
  9. name = models.CharField(max_length=255)
  10. special_role = models.CharField(max_length=255, null=True, blank=True)
  11. permissions = JSONField(default=permissions_default)
  12. class Meta:
  13. abstract = True
  14. def __str__(self):
  15. return self.name
  16. def save(self, *args, **kwargs):
  17. if self.pk:
  18. acl_version.invalidate()
  19. return super(BaseRole, self).save(*args, **kwargs)
  20. def delete(self, *args, **kwargs):
  21. acl_version.invalidate()
  22. return super(BaseRole, self).delete(*args, **kwargs)
  23. class Role(BaseRole):
  24. pass