from django.contrib.auth.models import User, Permission from django.db import models from django.utils.translation import ugettext_lazy as _ from .fields import AutoCreatedField, AutoLastModifiedField from django.contrib.contenttypes.models import ContentType class OperationalTable(models.Model): created = models.DateTimeField(auto_now_add=True) created_by = models.ForeignKey(User, related_name='+') last_updated = models.DateTimeField(auto_now_add=True, auto_now=True) last_updated_by = models.ForeignKey(User, related_name='+') is_active = models.BooleanField(default=True) class Meta: abstract = True class TimeStampedModel(models.Model): """ An abstract base class model that provides self-updating ``created`` and ``modified`` fields. """ created = AutoCreatedField(_('created')) modified = AutoLastModifiedField(_('modified')) class Meta: abstract = True class GlobalPermissionManager(models.Manager): def get_query_set(self): return super(GlobalPermissionManager, self).\ get_query_set().filter(content_type__name='global_permission') class GlobalPermission(Permission): """A global permission, not attached to a model""" objects = GlobalPermissionManager() class Meta: proxy = True def save(self, *args, **kwargs): ct, created = ContentType.objects.get_or_create( name="global_permission", app_label=self._meta.app_label ) self.content_type = ct super(GlobalPermission, self).save(*args, **kwargs)