Add a Singleton Model class and an AnonymousUserSingleton model to support adding permissions and access to anonymous users

This commit is contained in:
Roberto Rosario
2012-01-07 23:18:42 -04:00
parent 018ab3d7ca
commit eb267cae10

View File

@@ -1,3 +1,43 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import AnonymousUser
# Create your models here.
SINGLETON_LOCK_ID = 1
class SingletonManager(models.Manager):
def get(self, **kwargs):
instance, created = self.model.objects.get_or_create(lock_id=SINGLETON_LOCK_ID, **kwargs)
return instance
class Singleton(models.Model):
lock_id = models.CharField(max_length=1, default=SINGLETON_LOCK_ID, editable=False, verbose_name=_(u'lock field'), unique=True)
objects = SingletonManager()
def save(self, *args, **kwargs):
self.id = 1
super(Singleton, self).save(*args, **kwargs)
def delete(self):
pass
class Meta:
abstract = True
class AnonymousUserSingletonManager(SingletonManager):
def passthru_check(self, user):
if isinstance(user, AnonymousUser):
return self.model.objects.get()
else:
return user
class AnonymousUserSingleton(Singleton):
objects = AnonymousUserSingletonManager()
class Meta:
verbose_name = _(u'anonymous user')
verbose_name_plural = _(u'anonymous user')