Merge branch 'master' of github.com:MongoEngine/mongoengine

This commit is contained in:
Ross Lawley 2013-07-31 09:44:50 +00:00
commit 7ce34ca019

View File

@ -6,10 +6,29 @@ from django.utils.importlib import import_module
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
__all__ = (
'get_user_document',
)
MONGOENGINE_USER_DOCUMENT = getattr( MONGOENGINE_USER_DOCUMENT = getattr(
settings, 'MONGOENGINE_USER_DOCUMENT', 'mongoengine.django.auth.User') settings, 'MONGOENGINE_USER_DOCUMENT', 'mongoengine.django.auth.User')
def get_user_document(self):
"""Get the user docuemnt class user for authentcation.
This is the class defined in settings.MONGOENGINE_USER_DOCUMENT, which
defaults to `mongoengine.django.auth.User`.
"""
name = MONGOENGINE_USER_DOCUMENT
dot = name.rindex('.')
module = import_module(name[:dot])
return getattr(module, name[dot + 1:])
class MongoUserManager(UserManager): class MongoUserManager(UserManager):
"""A User manager wich allows the use of MongoEngine documents in Django. """A User manager wich allows the use of MongoEngine documents in Django.
@ -44,7 +63,7 @@ class MongoUserManager(UserManager):
def contribute_to_class(self, model, name): def contribute_to_class(self, model, name):
super(MongoUserManager, self).contribute_to_class(model, name) super(MongoUserManager, self).contribute_to_class(model, name)
self.dj_model = self.model self.dj_model = self.model
self.model = self._get_user_document() self.model = get_user_document()
self.dj_model.USERNAME_FIELD = self.model.USERNAME_FIELD self.dj_model.USERNAME_FIELD = self.model.USERNAME_FIELD
username = models.CharField(_('username'), max_length=30, unique=True) username = models.CharField(_('username'), max_length=30, unique=True)
@ -55,16 +74,6 @@ class MongoUserManager(UserManager):
field = models.CharField(_(name), max_length=30) field = models.CharField(_(name), max_length=30)
field.contribute_to_class(self.dj_model, name) field.contribute_to_class(self.dj_model, name)
def _get_user_document(self):
try:
name = MONGOENGINE_USER_DOCUMENT
dot = name.rindex('.')
module = import_module(name[:dot])
return getattr(module, name[dot + 1:])
except ImportError:
raise ImproperlyConfigured("Error importing %s, please check "
"settings.MONGOENGINE_USER_DOCUMENT"
% name)
def get(self, *args, **kwargs): def get(self, *args, **kwargs):
try: try:
@ -85,5 +94,14 @@ class MongoUserManager(UserManager):
class MongoUser(models.Model): class MongoUser(models.Model):
objects = MongoUserManager() """"Dummy user model for Django.
MongoUser is used to replace Django's UserManager with MongoUserManager.
The actual user document class is mongoengine.django.auth.User or any
other document class specified in MONGOENGINE_USER_DOCUMENT.
To get the user document class, use `get_user_document()`.
"""
objects = MongoUserManager()