def create_user(): """ Create a new user if not exists. :return: Flask `Response` object with added JSON representation of `User` and `Content-Type: application/json` HTTP header. """ user_data = request.get_json() or {} if any(field not in user_data for field in ('username', 'password')): return bad_request('Username and password are mandatory fields') if User.query.filter_by(username=user_data['username']).first(): return bad_request( 'The user is already exist, please use a different username') user = User() user.from_dict(user_data, new_user=True) db.session.add(user) db.session.commit() response = jsonify(user.to_dict()) response.status_code = 201 response.headers['Location'] = url_for('api.get_user', id_=user.id_) return response