Added check for duplicate email and username
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
"""Python API for user accounts.
|
||||
|
||||
|
||||
Account information includes a student's username, password, and email
|
||||
address, but does NOT include user profile information (i.e., demographic
|
||||
information and preferences).
|
||||
|
||||
"""
|
||||
from django.db import transaction, IntegrityError
|
||||
from django.db.models import Q
|
||||
from django.core.validators import validate_email, validate_slug, ValidationError
|
||||
from user_api.models import User, UserProfile, Registration, PendingEmailChange
|
||||
from user_api.helpers import intercept_errors
|
||||
@@ -138,6 +140,34 @@ def create_account(username, password, email):
|
||||
return registration.activation_key
|
||||
|
||||
|
||||
def check_account_exists(username=None, email=None):
|
||||
"""Check whether an account with a particular username or email already exists.
|
||||
|
||||
Keyword Arguments:
|
||||
username (unicode)
|
||||
email (unicode)
|
||||
|
||||
Returns:
|
||||
list of conflicting fields
|
||||
|
||||
Example Usage:
|
||||
>>> account_api.check_account_exists(username="bob")
|
||||
[]
|
||||
>>> account_api.check_account_exists(username="ted", email="ted@example.com")
|
||||
["email", "username"]
|
||||
|
||||
"""
|
||||
conflicts = []
|
||||
|
||||
if email is not None and User.objects.filter(email=email).exists():
|
||||
conflicts.append("email")
|
||||
|
||||
if username is not None and User.objects.filter(username=username).exists():
|
||||
conflicts.append("username")
|
||||
|
||||
return conflicts
|
||||
|
||||
|
||||
@intercept_errors(AccountInternalError, ignore_errors=[AccountRequestError])
|
||||
def account_info(username):
|
||||
"""Retrieve information about a user's account.
|
||||
|
||||
Reference in New Issue
Block a user