From ef1f011cd5b57946b58fbb94318a270e0165a10e Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 21 Sep 2018 00:07:08 -0400 Subject: [PATCH] Improve natural key support in the UserOptions model. Signed-off-by: Roberto Rosario --- HISTORY.rst | 2 ++ mayan/apps/user_management/managers.py | 15 +++++++++++++++ mayan/apps/user_management/models.py | 4 ++++ 3 files changed, 21 insertions(+) create mode 100644 mayan/apps/user_management/managers.py diff --git a/HISTORY.rst b/HISTORY.rst index f7d613c9ec..15bb56c0dd 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -2,6 +2,8 @@ ================== * Database access in data migrations defaults to the 'default' database. Force it to the user selected database instead. * Don't use a hardcoded database alias for the destination of the database conversion. +* Improve natural key support in the UserOptions model. + 3.1.1 (2018-09-18) ================== diff --git a/mayan/apps/user_management/managers.py b/mayan/apps/user_management/managers.py new file mode 100644 index 0000000000..39f27dcf98 --- /dev/null +++ b/mayan/apps/user_management/managers.py @@ -0,0 +1,15 @@ +from __future__ import unicode_literals + +from django.contrib.auth import get_user_model +from django.db import models + + +class UserOptionsManager(models.Manager): + def get_by_natural_key(self, user_natural_key): + User = get_user_model() + try: + user = User.objects.get_by_natural_key(user_natural_key) + except User.DoesNotExist: + raise self.model.DoesNotExist + + return self.get(user__pk=user.pk) diff --git a/mayan/apps/user_management/models.py b/mayan/apps/user_management/models.py index 0542fce604..1950332835 100644 --- a/mayan/apps/user_management/models.py +++ b/mayan/apps/user_management/models.py @@ -4,6 +4,8 @@ from django.conf import settings from django.db import models from django.utils.translation import ugettext_lazy as _ +from .managers import UserOptionsManager + class UserOptions(models.Model): user = models.OneToOneField( @@ -15,6 +17,8 @@ class UserOptions(models.Model): verbose_name=_('Forbid this user from changing their password.') ) + objects = UserOptionsManager() + class Meta: verbose_name = _('User settings') verbose_name_plural = _('Users settings')