Add a Singleton Model class and an AnonymousUserSingleton model to support adding permissions and access to anonymous users
This commit is contained in:
+41
-1
@@ -1,3 +1,43 @@
|
|||||||
from django.db import models
|
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')
|
||||||
|
|||||||
Reference in New Issue
Block a user