0002-general-use-a-fake-proxy-object-for-unknown-local-Na.patch
combo/apps/lingo/views.py | ||
---|---|---|
121 | 121 | |
122 | 122 |
try: |
123 | 123 |
if request.GET.get('NameId'): |
124 |
user = get_user_from_name_id(request.GET.get('NameId')) |
|
125 |
if user is None: |
|
126 |
raise User.DoesNotExist() |
|
124 |
user = get_user_from_name_id(request.GET.get('NameId'), raise_on_missing=True) |
|
127 | 125 |
elif request.GET.get('email'): |
128 | 126 |
user = User.objects.get(email=request.GET.get('email')) |
129 | 127 |
else: |
... | ... | |
191 | 189 | |
192 | 190 |
try: |
193 | 191 |
if request.GET.get('NameId'): |
194 |
user = get_user_from_name_id(request.GET.get('NameId')) |
|
192 |
user = get_user_from_name_id(request.GET.get('NameId'), raise_on_missing=True)
|
|
195 | 193 |
if user is None: |
196 | 194 |
raise User.DoesNotExist() |
197 | 195 |
elif request.GET.get('email'): |
combo/profile/utils.py | ||
---|---|---|
15 | 15 |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
16 | 16 | |
17 | 17 |
from django.conf import settings |
18 |
from django.contrib.auth.models import User |
|
18 | 19 | |
19 | 20 | |
20 | 21 |
if 'mellon' in settings.INSTALLED_APPS: |
... | ... | |
23 | 24 |
UserSAMLIdentifier = None |
24 | 25 | |
25 | 26 | |
26 |
def get_user_from_name_id(name_id): |
|
27 |
class ProxiedUser(object): |
|
28 |
def __init__(self, name_id): |
|
29 |
self.name_id = name_id |
|
30 |
self.email = '' |
|
31 | ||
32 |
def get_name_id(self): |
|
33 |
return self.name_id |
|
34 | ||
35 | ||
36 |
def get_user_from_name_id(name_id, raise_on_missing=False): |
|
27 | 37 |
if not UserSAMLIdentifier: |
38 |
if raise_on_missing: |
|
39 |
raise User.DoesNotExist() |
|
28 | 40 |
return None |
29 | 41 |
try: |
30 | 42 |
return UserSAMLIdentifier.objects.get(name_id=name_id).user |
31 | 43 |
except UserSAMLIdentifier.DoesNotExist: |
32 |
return None |
|
44 |
if raise_on_missing: |
|
45 |
raise User.DoesNotExist() |
|
46 |
return ProxiedUser(name_id=name_id) |
|
33 |
- |