Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 19 additions & 36 deletions alexia/api/v1/methods/authorization.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,7 @@ def authorization_list(request, radius_username=None):
authorizations = Authorization.objects.filter(organization=request.organization)

if radius_username is not None:
try:
user = User.objects.get(authenticationdata__backend=SAML2_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exist')
user = get_user_by_username(radius_username)

authorizations = authorizations.filter(user=user)

Expand Down Expand Up @@ -88,15 +80,7 @@ def authorization_get(request, radius_username):
"""
result = []

try:
user = User.objects.get(authenticationdata__backend=SAML2_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exits')
user = get_user_by_username(radius_username)

authorizations = Authorization.objects.filter(user=user, organization=request.organization)

Expand Down Expand Up @@ -137,15 +121,7 @@ def authorization_add(request, radius_username, account):

Raises error -32602 (Invalid params) if the username does not exist.
"""
try:
user = User.objects.get(authenticationdata__backend=SAML2_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exits')
user = get_user_by_username(radius_username)

authorization = Authorization(user=user, organization=request.organization)
authorization.save()
Expand All @@ -171,15 +147,7 @@ def authorization_end(request, radius_username, authorization_id):
Raises error -32602 (Invalid params) if the username does not exist.
Raises error -32602 (Invalid params) if provided authorization cannot be found.
"""
try:
user = User.objects.get(authenticationdata__backend=SAML2_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exits')
user = get_user_by_username(radius_username)

try:
authorization = Authorization.objects.select_for_update().get(user=user,
Expand All @@ -194,3 +162,18 @@ def authorization_end(request, radius_username, authorization_id):
return True
else:
return False

def get_user_by_username(radius_username):
try:
user = User.objects.get(authenticationdata__backend=SAML2_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exits')
return user
5 changes: 4 additions & 1 deletion alexia/api/v1/methods/billing.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,10 @@ def order_list(request, radius_username=None):
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
return []
try:
user = User.objects.get(username=radius_username)
except User.DoesNotExist:
return []
orders = orders.filter(authorization__user=user)

orders = orders.select_related('event', 'authorization')
Expand Down
51 changes: 23 additions & 28 deletions alexia/api/v1/methods/rfid.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,10 @@ def rfid_list(request, radius_username=None):
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
return []
try:
user = User.objects.get(username=radius_username)
except User.DoesNotExist:
return []
rfidcards = rfidcards.filter(user=user)

rfidcards = rfidcards.select_related('user')
Expand Down Expand Up @@ -96,15 +99,7 @@ def rfid_get(request, radius_username):
Raises error -32602 (Invalid params) if the username does not exist.
"""
result = []
try:
user = User.objects.get(authenticationdata__backend=SAML2_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exits')
user = get_user_by_username(radius_username)

rfidcards = RfidCard.objects.filter(user=user, managed_by=request.organization)

Expand Down Expand Up @@ -140,15 +135,7 @@ def rfid_add(request, radius_username, identifier):
Raises error -32602 (Invalid params) if the RFID card is already registered by someone else.
"""

try:
user = User.objects.get(authenticationdata__backend=SAML2_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exits')
user = get_user_by_username(radius_username)

try:
rfidcard = RfidCard.objects.select_for_update().get(user=user, identifier=identifier)
Expand Down Expand Up @@ -182,15 +169,7 @@ def rfid_remove(request, radius_username, identifier):
Raises error -32602 (Invalid params) if the username does not exist.
Raises error -32602 (Invalid params) if the RFID card does not exist for this person/organization.
"""
try:
user = User.objects.get(authenticationdata__backend=SAML2_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exits')
user = get_user_by_username(radius_username)

try:
rfidcard = RfidCard.objects.select_for_update().get(user=user, identifier=identifier)
Expand All @@ -208,3 +187,19 @@ def rfid_remove(request, radius_username, identifier):
rfidcard.delete()
else:
rfidcard.managed_by.remove(request.organization)


def get_user_by_username(radius_username):
try:
user = User.objects.get(authenticationdata__backend=SAML2_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
try:
user = User.objects.get(username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exits')
return user
5 changes: 4 additions & 1 deletion alexia/api/v1/methods/scheduling.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,10 @@ def user_get_availabilities(request, radius_username):
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exits')
try:
user = User.objects.get(username=radius_username)
except User.DoesNotExist:
raise InvalidParamsError('User with provided username does not exits')

availabilities = BartenderAvailability.objects.filter(user=user, event__organizer=request.organization)

Expand Down
24 changes: 17 additions & 7 deletions alexia/api/v1/methods/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ def user_exists(request, radius_username):
return User.objects.filter(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username).exists() or \
User.objects.filter(authenticationdata__backend=SAML2_BACKEND_NAME,
authenticationdata__username=radius_username).exists()
authenticationdata__username=radius_username).exists() or \
User.objects.filter(username=radius_username).exists()


@jsonrpc_method('user.get(radius_username=String) -> Object', site=api_v1_site, authenticated=True, safe=True)
Expand Down Expand Up @@ -97,8 +98,11 @@ def user_get(request, radius_username):
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except:
raise ObjectNotFoundError
except User.DoesNotExist:
try:
user = User.objects.get(username=radius_username)
except:
raise ObjectNotFoundError

return format_user(user)

Expand Down Expand Up @@ -163,8 +167,11 @@ def user_get_membership(request, radius_username):
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except:
raise ObjectNotFoundError
except User.DoesNotExist:
try:
user = User.objects.get(username=radius_username)
except:
raise ObjectNotFoundError

try:
membership = Membership.objects.get(
Expand Down Expand Up @@ -215,8 +222,11 @@ def user_get_iva_certificate(request, radius_username):
try:
user = User.objects.get(authenticationdata__backend=RADIUS_BACKEND_NAME,
authenticationdata__username=radius_username)
except:
raise ObjectNotFoundError
except User.DoesNotExist:
try:
user = User.objects.get(username=radius_username)
except:
raise ObjectNotFoundError

try:
certificate = Certificate.objects.get(owner=user)
Expand Down