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
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
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)
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
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 )
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
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
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
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 )
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, )