def create_user(self, uname, name, password=None): """ Creates a user """ if not uname: return _('Must provide username') if not name: return _('Must provide full name') msg = u'' if not password: return _('Password must be supplied') email = uname if '@' not in email: msg += _('email address required (not username)') return msg new_password = password user = User(username=uname, email=email, is_active=True) user.set_password(new_password) try: user.save() except IntegrityError: msg += _(u'Oops, failed to create user {user}, {error}').format( user=user, error="IntegrityError" ) return msg reg = Registration() reg.register(user) profile = UserProfile(user=user) profile.name = name profile.save() msg += _(u'User {user} created successfully!').format(user=user) return msg
def create_user_through_db_models(data): """ It Registers User through database models Arguments: data (dict) - User account details Returns: context (dict) - context to be passed to templates having information about success and failure of account creation """ context = {} try: if not User.objects.filter(email=data["email"]).exists(): user = User(username=data["username"], email=data["email"], is_active=True) password = normalize_password(data["password"]) user.set_password(password) user.save() profile = UserProfile(user=user) profile.name = data.get("name") profile.save() context[ "success_message"] = f"{_('A new account has been registered for user')}: {data['username']}" else: context[ "error_message"] = f"{_('An account already exists with email')}: {data['email']}" return context except Exception as err: # pylint: disable=broad-except context[ "error_message"] = f"{_('Account could not be created due to following error')}: {err}" return context