def create_user(cls, user_info): result = None try: sql, args = data_adaptor.create_insert(table_name="users", row=user_info) res, data = data_adaptor.run_q(sql, args) msg = {"customers_email": user_info['email']} notification.publish_it(msg) if res != 1: result = None else: result = user_info['id'] except pymysql.err.IntegrityError as ie: if ie.args[0] == 1062: raise (DataException(DataException.duplicate_key)) else: raise DataException() except Exception as e: raise DataException() return result
def user_registration(): inputs = log_and_extract_input(demo) rsp_data = None rsp_status = None rsp_txt = None try: r_svc = _get_registration_service() if inputs["method"] == "POST": #Get the user's information from the POST request user_data = inputs["body"] #Set default status to pending and generate random id user_data['status'] = "PENDING" user_data['id'] = str(uuid.uuid4()) rsp = r_svc.register(user_data) if rsp is not None: #Send user verification email notification.publish_it({"user_email": user_data['email']}) rsp_data = rsp rsp_status = 201 rsp_txt = "OK" link = rsp[0] auth = rsp[1] else: rsp_data = None rsp_status = 404 rsp_txt = "COULD NOT CREATE" else: rsp_data = None rsp_status = 501 rsp_txt = "Only POST Method Allowed" if rsp_data is not None: headers = {"Location": "/api/users/" + link} headers["Authorization"] = auth full_rsp = Response(json.dumps(rsp_data), status=rsp_status, headers=headers, content_type="application/json") else: full_rsp = Response(rsp_txt, status=rsp_status, content_type="text/plain") except Exception as e: log_msg = "/registrations: Exception = " + str(e) logger.error(log_msg) rsp_status = 500 rsp_txt = "INTERNAL SERVER ERROR. Please take COMSE6156 -- Cloud Native Applications." full_rsp = Response(rsp_txt, status=rsp_status, content_type="text/plain") log_response("/registrations", rsp_status, rsp_data, rsp_txt) return full_rsp
def create_user(cls, user_info): for f in UsersService.required_create_fields: v = user_info.get(f, None) if v is None: raise ServiceException(ServiceException.missing_field, "Missing field = " + f) if f == 'email': if v.find('@') == -1: raise ServiceException(ServiceException.bad_data, "Email looks invalid: " + v) if "id" not in user_info: id1 = str(uuid.uuid1()) user_info['id'] = id1 result = UsersRDB.create_user(user_info=user_info) print("RESULT FOR CREATE USER") print(result) if result is not None: # publish email to the SNS topic # sns = boto3.client('sns', region_name='us-east-1') # resp = sns.publish( # TopicArn = 'arn:aws:sns:us-east-1:211747076064:tse-email-notif', # Message=user_info['email'] # ) resp = publish_it(user_info['email']) print(resp) return result
def create_user(cls, user_info): for f in UsersService.required_create_fields: v = user_info.get(f, None) if v is None: raise ServiceException(ServiceException.missing_field, "Missing field = " + f) if f == 'email': if v.find('@') == -1: raise ServiceException(ServiceException.bad_data, "Email looks invalid: " + v) result = UsersRDB.create_user(user_info=user_info) # Publish a simple message to the specified SNS topic email = {'customers_email': user_info.get('email')} publish_it(json.dumps(email)) return result
def create_user(cls, user_info): for f in UsersService.required_create_fields: v = user_info.get(f, None) if v is None: raise ServiceException(ServiceException.missing_field, "Missing field = " + f) if f == 'email': if v.find('@') == -1: raise ServiceException(ServiceException.bad_data, "Email looks invalid: " + v) result = UsersRDB.create_user(user_info=user_info) email = user_info.get("email", None) msg = {"email": email} notification.publish_it(msg) return result
def register(): last_name = request.args.get("last_name") first_name = request.args.get("first_name") email = request.args.get("email") password = request.args.get("password") valid = all([last_name, first_name, email, password]) user_info = { "last_name": last_name, "first_name": first_name, "email": email, "password": password, "id": str(uuid4()), "status": "PENDING" } inputs = log_and_extract_input( register, { "last_name": last_name, "first_name": first_name, "email": email, "password": password }) # http://127.0.0.1:5000/api/registrations?last_name=asd&first_name=dsa&email=fdsafdsgf&password=1123 # If invalid argument if not valid: rsp = Response( "Some columns are empty. last_name, first_name, email, password are required", status=200, content_type="test/plain") return rsp user_data = UsersRDB.get_by_email(user_info["email"], include_deleted=True) if user_data: if user_data.get("status", None) != "PENDING": rsp = Response("User already exist", status=400, content_type="test/plain") return rsp else: notification.publish_it(email) rsp = Response("User " + user_data.get("id", "") + " already exist, resent activation email.", status=200, content_type="test/plain") return rsp try: # result = UsersRDB.create_user(user_info) result = UserService.create_user(user_info) rsp = Response("User created, user ID is:" + (result if result else "") + " please verify your email", status=200, content_type="test/plain") except Exception as e: rsp = Response("Invalid argument", status=400, content_type="test/plain") logger.debug(str(e)) return rsp