From 26e2e8f9044a3d72cdc66be32cbf62aed118b146 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Aleksander=20=C5=81ukasz?= Date: Mon, 9 Jun 2014 14:27:34 +0200 Subject: [PATCH] AttrCASBackend: Save user instance only when necessary --- fnpdjango/auth_backends.py | 8 ++++++-- setup.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/fnpdjango/auth_backends.py b/fnpdjango/auth_backends.py index 3cd60a7..7a89c1a 100644 --- a/fnpdjango/auth_backends.py +++ b/fnpdjango/auth_backends.py @@ -10,13 +10,17 @@ attr_map = getattr(settings, 'CAS_USER_ATTRS_MAP', { class AttrCASBackend(CASBackend): def authenticate(self, ticket, service, request): user = super(AttrCASBackend, self).authenticate(ticket, service, request) + dirty = False for attr, value in request.session.get('attributes', {}).items(): try: local_attr = attr_map[attr] except KeyError: pass else: - setattr(user, local_attr, value) - user.save() + if getattr(user, local_attr, None) != value: + setattr(user, local_attr, value) + dirty = True + if dirty: + user.save() return user diff --git a/setup.py b/setup.py index 080b75b..8f1806b 100755 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ def whole_trees(package_dir, paths): setup( name='fnpdjango', - version='0.1.18', + version='0.1.19', author='Radek Czajka', author_email='radekczajka@nowoczesnapolska.org.pl', url = '', -- 2.20.1