models.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from django.contrib.auth.models import User, Permission
  2. from django.db import models
  3. from django.utils.translation import ugettext_lazy as _
  4. from .fields import AutoCreatedField, AutoLastModifiedField
  5. from django.contrib.contenttypes.models import ContentType
  6. class OperationalTable(models.Model):
  7. created = models.DateTimeField(auto_now_add=True)
  8. created_by = models.ForeignKey(User, related_name="+")
  9. last_updated = models.DateTimeField(auto_now_add=True, auto_now=True)
  10. last_updated_by = models.ForeignKey(User, related_name="+")
  11. is_active = models.BooleanField(default=True)
  12. class Meta:
  13. abstract = True
  14. class TimeStampedModel(models.Model):
  15. """
  16. An abstract base class model that provides self-updating
  17. ``created`` and ``modified`` fields.
  18. """
  19. created = AutoCreatedField(_("created"))
  20. modified = AutoLastModifiedField(_("modified"))
  21. class Meta:
  22. abstract = True
  23. class GlobalPermissionManager(models.Manager):
  24. def get_query_set(self):
  25. return (
  26. super(GlobalPermissionManager, self)
  27. .get_query_set()
  28. .filter(content_type__name="global_permission")
  29. )
  30. class GlobalPermission(Permission):
  31. """A global permission, not attached to a model"""
  32. objects = GlobalPermissionManager()
  33. class Meta:
  34. proxy = True
  35. def save(self, *args, **kwargs):
  36. ct, created = ContentType.objects.get_or_create(
  37. name="global_permission", app_label=self._meta.app_label
  38. )
  39. self.content_type = ct
  40. super(GlobalPermission, self).save(*args, **kwargs)