def delete_user(): """Controller for handling deletion of user profile by profile owner. :return: json object with success message or message with error """ data = request.get_json() valid = validator.hash_check(data['hash_sum']) if valid['status']: user_id = db.get_user_id_by_hash(data['hash_sum']) logger.warning(user_id) tuple_of_problems = db.get_problem_id_for_del(user_id) problem_list = [] for tuple_with_problem_id in tuple_of_problems: problem_list.append(tuple_with_problem_id[0]) if db.get_user_comments_count(user_id)[0]: db.change_comments_to_anon(user_id) if problem_list: for problem_id in problem_list: db.change_problem_to_anon(problem_id) db.change_activity_to_anon(problem_id) db.delete_user(user_id[0]) logger.info('User with id %s has been deleted' % user_id[0]) response = jsonify(msg='success', deleted_user=user_id[0]) else: db.delete_user(user_id[0]) logger.info('User with id %s has been deleted' % user_id[0]) response = jsonify(msg='success', deleted_user=user_id[0]) else: response = Response(json.dumps(valid), mimetype='application/json'), 400 return response
def post_problem(): """Function which adds data from problem form to DB. :return: If request data is invalid: {'status': False, 'error': [list of errors]}, 400 If all ok: {'added_problem': 'problem_title' 'problem_id': 'problem_id'} """ if request.method == 'POST' and request.form: data = request.form logger.warning(json.dumps(request.form)) logger.info(data) valid = validator.problem_post(data) if valid['status']: logger.debug('Checks problem post validation. %s', valid) user_id = current_user.uid posted_date = int(time.time()) last_id = db.problem_post(data['title'], data['content'], data['proposal'], data['latitude'], data['longitude'], data['type'], posted_date, user_id) if last_id: db.problem_activity_post(last_id, posted_date, user_id) logger.debug('New problem post was created with id %s', last_id) response = jsonify(added_problem=data['title'], problem_id=last_id) else: response = Response(json.dumps(valid), mimetype='application/json'), 400 return response
def login(): """Login processes handler. Log user in or shows error messages. :rtype: JSON :request args: `{'email': '*****@*****.**', 'password': '******'}` :return: - if credentials are ok and log in successful: ``{"email": "*****@*****.**", "iat": "???", "id": 6, "name": "oleg", "role": "admin", "surname": "lyashko", "token": "hashed_auth_token"}`` - if user with entered email isn't exists or password was invalid: ``{'error':'message'}`` :statuscode 401: user doesn't exist or password is invalid :statuscode 400: login data has invalid format: :statuscode 200: credentials are ok """ response = jsonify(), 401 if request.method == 'POST' and request.get_json(): data = request.get_json() valid = validator.user_login(data) if valid['status']: user = ecomap_user.get_user_by_email(data['email']) if user and user.verify_password(data['password']): login_user(user, remember=True) response = jsonify(id=user.uid, name=user.first_name, surname=user.last_name, role=user.role, iat="???", token=user.get_auth_token(), email=user.email) response.set_cookie('id', bytes(user.uid), max_age=COOKIE_MAX_AGE) response.set_cookie('role', bytes(user.role), max_age=COOKIE_MAX_AGE) if not user: logger.warning('if not user') response = jsonify(error='There is no user with given email.', logined=0, ), 401 elif not user.verify_password(data['password']): logger.warning('if not user verify') response = jsonify(error='Invalid password, try again.', logined=0), 401 else: response = Response(json.dumps(valid), mimetype='application/json'), 400 return response
def login(): """Login processes handler. Log user in or shows error messages. :return: - if log in succeed: json with user data from db. Status 200 - OK - if user with entered email isn't exists or password was invalid: json with error message {'error':'message'} Status 401 - Unauthorized - if login data has invalid format: Status 400 - Bad Request """ response = jsonify(), 401 if request.method == 'POST' and request.get_json(): data = request.get_json() valid = validator.user_login(data) if valid['status']: user = ecomap_user.get_user_by_email(data['email']) if user and user.verify_password(data['password']): login_user(user, remember=True) response = jsonify(id=user.uid, name=user.first_name, surname=user.last_name, role=user.role, iat="???", token=user.get_auth_token(), email=user.email) if not user: logger.warning('if not user') response = jsonify( error='There is no user with given email.', logined=0, ), 401 elif not user.verify_password(data['password']): logger.warning('if not user verify') response = jsonify(error='Invalid password, try again.', logined=0), 401 else: response = Response(json.dumps(valid), mimetype='application/json'), 400 return response
def post_problem(): """Function which adds data about created problem into DB. :content-type: multipart/form-data :fparam title: Title of problem ('problem with rivers') :fparam type: id of problem type (2) :fparam lat: lat coordinates (49.8256101) :fparam longitude: lon coordinates (24.0600542) :fparam content: description of problem ('some text') :fparam proposal: proposition for solving problem ('text') :rtype: JSON :return: - If request data is invalid: ``{'status': False, 'error': [list of errors]}`` - If all ok: ``{"added_problem": "problem title", "problem_id": 83}`` :statuscode 400: request is invalid :statuscode 200: problem was successfully posted """ if request.method == 'POST' and request.form: data = request.form logger.warning(json.dumps(request.form)) logger.info(data) valid = validator.problem_post(data) if valid['status']: logger.debug('Checks problem post validation. %s', valid) user_id = current_user.uid posted_date = int(time.time()) last_id = db.problem_post(data['title'], data['content'], data['proposal'], data['latitude'], data['longitude'], data['type'], posted_date, user_id) if last_id: db.problem_activity_post(last_id, posted_date, user_id, 'Added') logger.debug('New problem post was created with id %s', last_id) response = jsonify(added_problem=data['title'], problem_id=last_id) else: response = Response(json.dumps(valid), mimetype='application/json'), 400 return response
def subscription_post(): """Function adds data about subscription into DB. :param problem_id: id of problem (int) :param user_id: id of user (int) :param subscr date: date when user subscribed to a problem :return: response :type: JSON """ if request.method == 'POST': data = request.get_json() logger.warning(request.get_json()) logger.info(data) user_id = current_user.uid subscr_date = int(time.time()) last_id = db.subscription_post(data['problem_id'], user_id, subscr_date) logger.debug('New subscription post was created with id %s', last_id) response = jsonify(subscription_id=last_id) return response
def login(): """Login processes handler. Log user in or shows error messages. :return: - if log in succeed: json with user data from db. Status 200 - OK - if user with entered email isn't exists or password was invalid: json with error message {'error':'message'} Status 401 - Unauthorized - if login data has invalid format: Status 400 - Bad Request """ response = jsonify(), 401 if request.method == 'POST' and request.get_json(): data = request.get_json() valid = validator.user_login(data) if valid['status']: user = ecomap_user.get_user_by_email(data['email']) if user and user.verify_password(data['password']): login_user(user, remember=True) response = jsonify(id=user.uid, name=user.first_name, surname=user.last_name, role=user.role, iat="???", token=user.get_auth_token(), email=user.email) if not user: logger.warning('if not user') response = jsonify(error='There is no user with given email.', logined=0, ), 401 elif not user.verify_password(data['password']): logger.warning('if not user verify') response = jsonify(error='Invalid password, try again.', logined=0), 401 else: response = Response(json.dumps(valid), mimetype='application/json'), 400 return response
def login(): """Login processes handler. Log user in or shows error messages. :rtype: JSON :request args: `{'email': '*****@*****.**', 'password': '******'}` :return: - if credentials are ok and log in successful: ``{"email": "*****@*****.**", "iat": "???", "id": 6, "name": "oleg", "role": "admin", "surname": "lyashko", "token": "hashed_auth_token"}`` - if user with entered email isn't exists or password was invalid: ``{'error':'message'}`` :statuscode 401: user doesn't exist or password is invalid :statuscode 400: login data has invalid format: :statuscode 200: credentials are ok """ response = jsonify(), 401 if request.method == 'POST' and request.get_json(): data = request.get_json() valid = validator.user_login(data) if valid['status']: user = ecomap_user.get_user_by_email(data['email']) if user and user.verify_password(data['password']): login_user(user, remember=True) response = jsonify(id=user.uid, name=user.first_name, surname=user.last_name, role=user.role, iat="???", token=user.get_auth_token(), email=user.email) response.set_cookie('id', bytes(user.uid), max_age=COOKIE_MAX_AGE) response.set_cookie('role', bytes(user.role), max_age=COOKIE_MAX_AGE) if not user: logger.warning('if not user') response = jsonify( error='There is no user with given email.', logined=0, ), 401 elif not user.verify_password(data['password']): logger.warning('if not user verify') response = jsonify(error='Invalid password, try again.', logined=0), 401 else: response = Response(json.dumps(valid), mimetype='application/json'), 400 return response