models.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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 super(GlobalPermissionManager, self).\
  26. get_query_set().filter(content_type__name='global_permission')
  27. class GlobalPermission(Permission):
  28. """A global permission, not attached to a model"""
  29. objects = GlobalPermissionManager()
  30. class Meta:
  31. proxy = True
  32. def save(self, *args, **kwargs):
  33. ct, created = ContentType.objects.get_or_create(
  34. name="global_permission", app_label=self._meta.app_label
  35. )
  36. self.content_type = ct
  37. super(GlobalPermission, self).save(*args, **kwargs)