combo/combo/profile/utils.py

47 lines
1.5 KiB
Python

# combo - content management system
# Copyright (C) 2014-2019 Entr'ouvert
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from django.conf import settings
from django.contrib.auth.models import User
if 'mellon' in settings.INSTALLED_APPS:
from mellon.models import UserSAMLIdentifier
else:
UserSAMLIdentifier = None
class ProxiedUser(object):
def __init__(self, name_id):
self.name_id = name_id
self.email = ''
def get_name_id(self):
return self.name_id
def get_user_from_name_id(name_id, raise_on_missing=False):
if not UserSAMLIdentifier:
if raise_on_missing:
raise User.DoesNotExist()
return None
try:
return UserSAMLIdentifier.objects.get(name_id=name_id).user
except UserSAMLIdentifier.DoesNotExist:
if raise_on_missing:
raise User.DoesNotExist()
return ProxiedUser(name_id=name_id)