def post(cls):
        user_json = request.get_json()
        try:
            user_data = user_schema.load(user_json)
        except ValidationError as err:
            return err.messages, 400

        if UserModel.find_by_username(user_data.username):
            return {
                "Message":
                USERNAME_ALREADY_EXIST_INFO.format(user_data.username)
            }, 401

        if UserModel.find_by_email(user_data.email):
            return {
                "Message": EMAIL_ALREADY_EXIST_INFO.format(user_data.email)
            }, 401

        try:
            user_data.insert_in_db()
            confirmation = ConfirmationModel(user_data.id)
            confirmation.insert_in_db()
            user_data.send_confirmation_mail()
            return {"Message": USER_REGISTRATION_SUCCESSFUL_INFO}, 201

        except MailGunException as me:
            user_data.delete_from_db()
            return {"message": str(me)}

        except:
            traceback.print_exc()
            return {"Message": FAILED_TO_CREATE}, 500
예제 #2
0
    def post(cls, user_id: int):
        user = UserModel.find_by_id(user_id)
        if not user:
            return {"Message": USER_NOT_FOUND}
        try:
            confirmation = user.most_recent_confirmation
            if confirmation:
                if confirmation.is_confirmed:
                    return {"Message": ALREADY_CONFIRMED_INFO}
                confirmation.force_to_expire()

            new_confirmation = ConfirmationModel(user_id)
            new_confirmation.insert_in_db()
            user.send_confirmation_mail()
            return {"Message": RESEND_SUCCESSFUL}, 201

        except MailGunException as me:
            return {"Message": str(me)}, 501

        except:
            traceback.print_exc()
            return {"Message": RESEND_FAIL}
예제 #3
0
    def post(cls, user_id: int):
        user = UserModel.find_by_id(user_id)
        if not user:
            return {"Message": gettext("confirmation_user_not_found").format(user_id)}, 401
        try:
            confirmation = user.most_recent_confirmation
            if confirmation:
                if confirmation.is_confirmed:
                    return {"Message": gettext("confirmation_already_confirmed")}, 401
                confirmation.force_to_expire()

            new_confirmation = ConfirmationModel(user_id)
            new_confirmation.insert_in_db()
            user.send_confirmation_mail()
            return {"Message": gettext("confirmation_mail_resend_successful")}, 201

        except MailGunException as me:
            return {"Message": str(me)}, 501

        except:
            traceback.print_exc()
            return {"Message": gettext("confirmation_mail_resend_failed")}, 401
    def post(cls):
        user_json = request.get_json()
        try:
            user_data = user_schema.load(user_json)
            user_data.password = generate_password_hash(user_data.password)
            print(user_data.password)
        except ValidationError as err:
            return err.messages, 401

        if UserModel.find_by_username(user_data.username):
            return {
                "Message":
                gettext("user_username_already_exist").format(
                    user_data.username)
            }, 401

        if UserModel.find_by_email(user_data.email):
            return {
                "Message":
                gettext("user_email_already_exist").format(user_data.email)
            }, 401

        try:
            user_data.insert_in_db()
            confirmation = ConfirmationModel(user_data.id)
            confirmation.insert_in_db()
            user_data.send_confirmation_mail()
            return {"Message": gettext("user_registration_successful")}, 201

        except MailGunException as me:
            user_data.delete_from_db()
            return {"Message": gettext("user_email_sending_failed")}, 501

        except:
            traceback.print_exc()
            return {"Message": gettext("user_internal_server_error")}, 501