Example #1
0
    def put(self, id=None):
        """ Altering the contents of a bucketlist"""

        if not id:
            return {"message": "Bad request"}, 400
        self.reqparse.add_argument("name",
                                   type=str,
                                   required=True,
                                   help="Bucketlist Name is required")

        args = self.reqparse.parse_args()
        name = args["name"]

        # Validation of user inputs bucketlist changes
        if not is_not_empty(name):
            return {"message": "No blank fields allowed"}, 400
        if name.isspace():
            return {"message": "The name entered is invalid "}, 400
        bucketlist_info = Bucketlist.query.filter_by(id=id).first()
        if not bucketlist_info or (bucketlist_info.user_id != g.user.id):
            abort(404, "Bucktlist is not found")
        bucketlist_info.name = name
        save(bucketlist_info)
        msg = ("Bucketlist ID: " + str(bucketlist_info.id) + "Is Updated")
        return {"message": msg}, 200
Example #2
0
    def post(self, id=None):
        """ Function to make a new bucketlist"""
        if id:
            abort(400, "This is a bad request, try again")
        self.reqparse.add_argument("name",
                                   type=str,
                                   required=True,
                                   help="Bucketlist name is required")
        args = self.reqparse.parse_args()
        name = args["name"]

        # Validating the user inputs
        if not is_not_empty(name):
            return {"message": "no blank fields allowed"}, 400

        if name.isspace():
            return {
                "message": "The name you have entered is not relevant"
            }, 400

        # creating and saving an instance of a bucket
        bucket_instance = Bucketlist(name=name, user_id=g.user.id)
        save(bucket_instance)
        msg = (bucket_instance.name + "of ID" + str(bucket_instance.id) +
               " Has been \
                saved successfully")
        return {"message": msg}, 201
Example #3
0
def refresh_stored_tokens():
    # refresh stored QBO tokens
    callback_url = app.config.get('CALLBACK_URL')
    realm_id = fetch('realm_id')
    session_manager = Oauth2SessionManager(
        client_id=fetch('qb_id'),
        client_secret=fetch('qb_secret'),
        base_url=callback_url,
        access_token=fetch('access_token'),
        refresh_token=fetch('refresh_token'),
    )
    result = session_manager.refresh_access_tokens(return_result=True)
    save('access_token', session_manager.access_token)
    save('refresh_token', session_manager.refresh_token)
    session_manager = Oauth2SessionManager(
        client_id=realm_id,
        client_secret=fetch('qb_secret'),
        access_token=fetch('access_token'),
    )
    sandbox = fetch('qb_sandbox')
    qbclient = QuickBooks(sandbox=sandbox,
                          session_manager=session_manager,
                          company_id=realm_id)
    QuickBooks.enable_global()
    save('session_manager', session_manager)
    save('qbclient', qbclient)
    return str(result)
Example #4
0
 def post(self, id=None):
     """ make a new Item """
     self.reqparse.add_argument("name",
                                type=str,
                                required=True,
                                help="Item name required")
     args = self.reqparse.parse_args()
     name = args["name"]
     # validation of user inputs
     if not is_not_empty(name):
         return {"message": "no blank fields allowed"}, 400
     if name.isspace():
         return {"message": "name is invalid"}, 400
     bucketlist = Bucketlist.query.filter_by(id=id).first()
     if not bucketlist or (bucketlist.user_id != g.user.id):
         abort(404, "bucketlist not found, confirm the id")
     item = Item(name=name, bucket_id=id)
     save(item)
     msg = ("item has been added to the bucketlist")
     return {"message": msg}, 201
Example #5
0
def authbtc():
    # accepts BTCPay pairing code and calls pairing fn
    status = login(request.cookies)
    if status is not None:
        return redirect(status)
    form = BTCCodeForm()
    url = urljoin(str(os.getenv('BTCPAY_HOST')), 'api-tokens')
    if form.validate_on_submit():
        client = BTCPayClient.create_client(
                host=app.config.get('BTCPAY_HOST'),
                code=form.code.data,
        )
        save('btc_client', client)
        save('forward_url', form.forward_url.data)
        flash('Pairing to BTCPay Successful')
        return render_template('index.html')
    return render_template(
        'authbtc.html',
        title='Enter Code',
        form=form,
        url=url
    )
Example #6
0
	def post(self):

		args = self.reqparse.parse_args()
		email_address, password, gender = (args["email_address"].lower(), args["password"], args["gender"])

		if not re.match("\S+[@]\S+[.]\S", email_address):
			return{"message": "only numbers, letters,'-','-','.'allowed in email_address entry"}, 400

		if len(password) < 6:
			return{"message": "password must be at least 6 characters"}, 400

		user_info = User.query.filter_by(email_address=email_address).first()
		if user_info is not None:
			return{"message": "The email_address you have entered is not available,try a different one"}, 403
		user = User(email_address=email_address, password=password, gender= gender)

		save(user)
		msg = "You have been successfully added as " + user.email_address

		token = user.confirmation_token(expiry_time)

		return {"token": token.decode("ascii"),"email":user.email_address, "gender": user.gender}, 201
Example #7
0
    def post(self):
        """ Function to create a new user"""
        args = self.reqparse.parse_args()
        username, password, email = (args["username"].lower(),
                                     args["password"], args["email"])
        # Validating the user input using regular expressions
        if not re.match("^[a-zA-Z0-9_.-]+$", username):
            return {
                "message": ("only numbers, letters, '-','-','.' allowed"
                            "in username entry")
            }, 400
        # Validating email inputs with regular expressions
        if not re.match("\S+[@]\S+[.]\S", email):
            return {"message": "Enter a valid email"}, 400

        # Password validation by size

        if len(password) < 6:
            return {"message": "password must be at least 6 characters"}, 400

        user_info = User.query.filter_by(username=username).first()
        # Condition to check itf the username entered is available for a new
        # user

        if user_info is not None:
            return {
                "message":
                "The username you have entered is not available,\
                    try a different one"
            }, 403
        user = User(username=username, email=email, password=password)
        save(user)
        # Return a message id the user has been successfully added to the
        # system

        msg = "You have been successfully added as " + user.username
        return {"message": msg}, 201
Example #8
0
def set_global_vars(realmid, code):
    # stores Intuit tokens
    # stores QBO client object
    # stores session manager object for future token refreshes
    callback_url = app.config.get('CALLBACK_URL')
    session_manager = Oauth2SessionManager(
        client_id=fetch('qb_id'),
        client_secret=fetch('qb_secret'),
        base_url=callback_url,
    )
    realm_id = realmid
    data = session_manager.get_access_tokens(
        auth_code=code,
        return_result=True,
    )
    # sanity check: if no valid response from Intuit, abort fn
    if 'token_type' not in data:
        return None
    access_token = session_manager.access_token
    refresh_token = session_manager.refresh_token
    session_manager = Oauth2SessionManager(
        client_id=realm_id,
        client_secret=fetch('qb_secret'),
        access_token=access_token,
    )
    sandbox = fetch('qb_sandbox')
    qbclient = QuickBooks(sandbox=sandbox,
                          session_manager=session_manager,
                          company_id=realm_id)
    QuickBooks.enable_global()
    save('realm_id', realm_id)
    save('access_token', access_token)
    save('refresh_token', refresh_token)
    save('session_manager', session_manager)
    save('qbclient', qbclient)
    from app import tasks
Example #9
0
def set_keys():
    status = login(request.cookies)
    if status is not None:
        return redirect(status)
    form = KeysForm()
    if form.validate_on_submit():
        save('qb_id', form.qb_id.data)
        save('qb_secret', form.qb_secret.data)
        save('qb_sandbox', form.qb_sandbox.data)
        return redirect(url_for('authqbo'))
    return render_template(
        'setkeys.html',
        title='Set Intuit Keys',
        form=form
    )
Example #10
0
def setmail():
    # sets user email settings
    status = login(request.cookies)
    if status is not None:
        return redirect(status)
    form = MailForm()
    if form.validate_on_submit():
        save('mail_on', form.mail_on.data)
        save('mail_user', str(form.mail_user.data))
        save('mail_pswd', str(form.mail_pswd.data))
        save('mail_host', str(form.mail_host.data))
        save('mail_port', int(form.mail_port.data))
        save('mail_from', str(form.mail_from.data))
        save('merchant', str(form.merchant.data))
        save('mail_custom', form.mail_custom.data)
        if form.recipient.data is not None and str(form.recipient.data) != "":
            try:
                send(
                    dest=form.recipient.data,
                    qb_inv='test',
                    btcp_inv='test',
                    amt=0.00,
                )
            except Exception as e:
                app.logger.exception(e)
                flash('Connection to SMTP server failed.')
                return render_template('index.html')
            flash('Test email sent.')
        else:
            flash('Email settings updated.')
        return render_template('index.html')
    return render_template(
        'setmail.html',
        title='Email Settings',
        form=form,
    )