def select(id): sql = "SELECT * FROM merchants WHERE id = %s" values = [id] result = run_sql(sql, values)[0] merchant = Merchant(result["name"], result["street"], result["city"], result["id"]) return merchant
def update_merchant(id): name = request.form['name'] location = request.form['location'] activated = request.form['activated'] merchant = Merchant(name, location, activated, id) merchant_repository.update(merchant) return redirect("/merchants")
def update_merchant(id): name = request.form["name"] street = request.form["street"] city = request.form["city"] merchant = Merchant(name, street, city, id) merchant_repository.update(merchant) return redirect("/merchants")
def create_user_visit_helper(sess, request_id, user_obj_id, merchant_data): """ A helper function that takes in the following params and creates a new visit object by communicating with the DB :param sess: Session object for access to the DB :param request_id: Request ID to track every request helps debugging :param user_obj_id: user_id to get the User object :param merchant_data: Merchant data from the given input :return: Visit object """ merchant = Merchant.get_and_check_else_new( sess, merchant_data["merchantId"], merchant_data["merchantName"] ) user = User.get_and_check_else_new(sess, user_obj_id) visit_id = uuid.uuid4() timestamp = int(time.time()) Visit.new(sess, visit_id, timestamp, user.pk, merchant.pk) log.info("[{}] New visit created for user: {}".format(request_id, user.pk)) return { "visitId": visit_id, "timestamp": timestamp, "merchant": { "merchantId": merchant.merchant_id, "merchantName": merchant.merchant_name, }, "user": {"userId": user.user_obj_id}, }
def create_merchant(): name = request.form["name"] street = request.form["street"] city = request.form["city"] new_merchant = Merchant(name, street, city) merchant_repository.save(new_merchant) return redirect("/merchants")
def create_new_merchant(): name = request.form['name'] merchant = Merchant(name) merchant_repository.save(merchant) return redirect("/merchants")
def get_matching_merchants(sess, request_id, user_id, visits, search_string): """ A util function that uses the threshold to return the list of merchants that match the fuzzy ratio set by the environment or default :param sess: Session object for the DB :param request_id: Request ID tracking for debugging :param user_id: User id to get the User Object :param visits: list of visits by the user without the matching :param search_string: given search string to narrow down search :return: list of objects with narrowed down list based on search string """ result = [] log.debug("[{}] Fuzzy matching for search string {} user_id: {}".format( request_id, search_string, user_id)) for visit in visits: merchant = Merchant.get_by_pk(sess, request_id, visit.merchant_pk) if (fuzz.ratio(merchant.merchant_name, search_string) > Threshold.FUZZY_MATCH_THRESHOLD): result.append({ "visitId": visit.visit_id, "timestamp": visit.timestamp, "merchant": { "merchantId": merchant.merchant_id, "merchantName": merchant.merchant_name, }, "user": { "userId": user_id }, }) return result
def add_merchant(): codeis_unique = False code = '' random_string_generator = RandomString() while codeis_unique is False: code = random_string_generator.generate(8) codeis_unique = Merchant.query.filter_by(code=code).first() if codeis_unique is None: codeis_unique = True print request.form business_name = request.form['business_name'] registration_number = request.form['business_regno'] date_of_reg = request.form['date_of_reg'] email = request.form['email'] physical_address = request.form['physical_address'] box_number = request.form['box_number'] new_merchant = Merchant(business_name, registration_number, date_of_reg, email, physical_address, box_number, code=code) db.session.add(new_merchant) db.session.commit() # save used code to db merchant_code = MerchantCode(code, datetime.utcnow(), datetime.utcnow()) db.session.add(merchant_code) db.session.commit() return redirect(url_for('index_merchant'))
def test_create_user_visit_helper( self, mock_user_get_and_check_else_new, mock_merchant_get_and_check_else_new, mock_time, ): test_merchant = Merchant() test_user = User() test_merchant.pk = 50 test_merchant.merchant_id = 50 test_merchant.merchant_name = "test1" test_user.user_obj_id = 50 test_request_id = "test1" mock_merchant_get_and_check_else_new.return_value = test_merchant mock_user_get_and_check_else_new.return_value = test_user sess_mock = MagicMock() test_merchant_data = { "merchantId": test_merchant.merchant_id, "merchantName": test_merchant.merchant_name, } test_output = { "merchant": test_merchant_data, "timestamp": 1591122440, "user": { "userId": test_user.user_obj_id }, "visitId": "23642023-7307-45cc-9ce6-b7edf02dd5fe", } output = create_user_visit_helper(sess_mock, test_request_id, test_user.user_obj_id, test_merchant_data) mock_user_get_and_check_else_new.assert_called_once_with( sess_mock, test_user.user_obj_id) mock_merchant_get_and_check_else_new.assert_called_once_with( sess_mock, test_merchant_data["merchantId"], test_merchant_data["merchantName"], ) self.assertEqual(test_output["merchant"]["merchantId"], output["merchant"]["merchantId"]) self.assertEqual(test_output["merchant"]["merchantName"], output["merchant"]["merchantName"]) self.assertEqual(test_output["user"]["userId"], output["user"]["userId"]) self.assertEqual(type(uuid.uuid4()), type(output["visitId"])) self.assertEqual(500, output["timestamp"])
def select_all(): merchants = [] sql = "SELECT * FROM merchants ORDER BY name ASC" results = run_sql(sql) for row in results: merchant = Merchant(row["name"], row["street"], row["city"], row["id"]) merchants.append(merchant) return merchants
def select_all(): merchants = [] sql = "SELECT * FROM merchants" results = run_sql(sql) for row in results: merchant = Merchant(row["name"], row["description"], row["id"]) merchants.append(merchant) return merchants
def select_all(): merchants = [] sql = "SELECT * FROM merchants" results = run_sql(sql) for result in results: merchant = Merchant(result["name"], result["id"]) merchants.append(merchant) return merchants
def select_all(): merchants = [] sql = "SELECT * FROM merchants" results = run_sql(sql) for row in results: merchant = Merchant(row['name'], row['id']) merchants.append(merchant) return merchants
def select(id): merchant = None sql = "SELECT * FROM merchants WHERE id = %s" values = [id] result = run_sql(sql, values)[0] if result is not None: merchant = Merchant(result['name'], result['id']) return merchant
def select(id): merchant = None sql = "SELECT * FROM merchants WHERE id = %s" values = [id] result = run_sql(sql, values)[0] if result is not None: merchant = Merchant(result["name"], result["description"], result["id"]) return merchant
def select_all(): merchants = [] sql = "SELECT * FROM merchants ORDER BY name ASC" results = run_sql(sql) for row in results: merchant = Merchant(row['name'], row['location'], row['activated'], row['id']) merchants.append(merchant) return merchants
def select_transactions(user): transactions = [] sql = "SELECT T.id, T.amount, T.tag_id, T.merchant_id, T.user_id, TA.name, M.name FROM transactions as T LEFT JOIN tags as TA on T.tag_id = TA.id LEFT JOIN merchants as M on T.merchant_id = M.id WHERE T.user_id = %s;" values = [user.id] results = run_sql(sql, values) for row in results: merchant = Merchant(row['name'], row['merchant_id']) tag = tag_repository.select(row['tag_id']) user = user_repository.select(row['user_id']) transaction = Transaction(row['amount'], user, merchant, tag, row['id']) transactions.append(transaction) return transactions
def get_visit_by_id_helper(sess, request_id, visit_id): visit = Visit.get_by_id(sess, request_id, visit_id) merchant = Merchant.get_by_pk(sess, request_id, visit.merchant_pk) user = User.get_by_pk(sess, request_id, visit.user_obj_pk) log.info("[{}] Found visit by user: {}".format(request_id, user.pk)) return { "visitId": visit_id, "timestamp": visit.timestamp, "merchant": { "merchantId": merchant.merchant_id, "merchantName": merchant.merchant_name, }, "user": {"userId": user.user_obj_id}, }
from models.account import Account import repositories.account_repository as account_repository from models.merchant import Merchant import repositories.merchant_repository as merchant_repository from models.tag import Tag import repositories.tag_repository as tag_repository from models.transaction import Transaction import repositories.transaction_repository as transaction_repository account_1 = Account("Adam", 450) account_repository.save_account(account_1) merchant_1 = Merchant("Morrisons", "Edinburgh") merchant_repository.save_merchant(merchant_1) merchant_2 = Merchant("Scotrail", "Glasgow") merchant_repository.save_merchant(merchant_2) merchant_3 = Merchant("PINK", "Glasgow") merchant_repository.save_merchant(merchant_3) tag_1 = Tag("Groceries") tag_repository.save_tag(tag_1) tag_2 = Tag("Travel") tag_repository.save_tag(tag_2) tag_3 = Tag("Clothes") tag_repository.save_tag(tag_3) transaction_1 = Transaction(account_1, merchant_1, 14.95, "2020-02-02", tag_1) transaction_repository.save_transaction(transaction_1)
def setUp(self): self.user = User("Ben", "Chang", "*****@*****.**", 145.60) self.merchant = Merchant("Scotmid", "General grocieries and provider of snax") self.tag = Tag("Snacks") self.transaction = Transaction(self.user, "11/05/20", "19:40", self.merchant, 6.50, self.tag)
def setUp(self): self.merchant_1 = Merchant("Tesco")
import pdb from models.merchant import Merchant from models.tag import Tag from models.transaction import Transaction import repositories.merchant_repository as merchant_repository import repositories.tag_repository as tag_repository import repositories.transaction_repository as transaction_repository merchant1 = Merchant("Overlook Hotel") merchant_repository.save(merchant1) merchant2 = Merchant("Stars Hollow Library") merchant_repository.save(merchant2) merchant3 = Merchant("Luke's Diner") merchant_repository.save(merchant3) tag1 = Tag("Holidays") tag_repository.save(tag1) tag2 = Tag("Self-development") tag_repository.save(tag2) tag3 = Tag("Eating out") tag_repository.save(tag3) transaction1 = Transaction(tag1, merchant1, 1313) transaction_repository.save(transaction1)
import repositories.merchant_repository as merchant_repository from models.tag import Tag import repositories.tag_repository as tag_repository transaction_repository.delete_all() tag_repository.delete_all() merchant_repository.delete_all() user_repository.delete_all() user_1 = User('Mary Berry', 0) user_repository.save(user_1) user_2 = User('Paul Hollywood', 0) user_repository.save(user_2) merchant_1 = Merchant('Tesco') merchant_repository.save(merchant_1) merchant_2 = Merchant('ASDA') merchant_repository.save(merchant_2) tag_1 = Tag('Groceries') tag_repository.save(tag_1) tag_2 = Tag('Transport') tag_repository.save(tag_2) transaction_1 = Transaction(15, user_1, merchant_1, tag_1) transaction_repository.save(transaction_1) transaction_2 = Transaction(10, user_2, merchant_2, tag_2)
def setUp(self): self.merchant = Merchant("Overlook Hotel")
def test_get_visit_by_id_helper( self, mock_visit_get_by_id, mock_user_get_by_pk, mock_merchant_get_by_pk, mock_time, ): test_merchant = Merchant() test_user = User() test_visit = Visit() sess_mock = MagicMock() test_merchant.pk = 40 test_merchant.merchant_id = 4 test_merchant.merchant_name = "test2" test_visit.visit_id = uuid.uuid4() test_visit.timestamp = self.timestamp test_visit.merchant_pk = 40 test_visit.user_obj_pk = 4 test_request_id = "test2" test_user.user_obj_id = "20" test_user.pk = 4 mock_merchant_get_by_pk.return_value = test_merchant mock_user_get_by_pk.return_value = test_user mock_visit_get_by_id.return_value = test_visit test_output = { "visitId": test_visit.visit_id, "timestamp": test_visit.timestamp, "merchant": { "merchantId": test_merchant.merchant_id, "merchantName": test_merchant.merchant_name, }, "user": { "userId": test_user.user_obj_id }, } output = get_visit_by_id_helper(sess_mock, test_request_id, test_visit.visit_id) mock_visit_get_by_id.assert_called_once_with(sess_mock, test_request_id, test_visit.visit_id) mock_merchant_get_by_pk.assert_called_once_with( sess_mock, test_request_id, test_visit.merchant_pk) mock_user_get_by_pk.assert_called_once_with(sess_mock, test_request_id, test_visit.user_obj_pk) mock_time.assert_called_once_with() self.assertEqual(test_output["merchant"]["merchantId"], output["merchant"]["merchantId"]) self.assertEqual(test_output["merchant"]["merchantName"], output["merchant"]["merchantName"]) self.assertEqual(test_output["user"]["userId"], output["user"]["userId"]) self.assertEqual(type(uuid.uuid4()), type(output["visitId"])) self.assertEqual(500, output["timestamp"])
def setUp(self): self.merchant = Merchant("Netflix", "An online streaming service and pandemic ditraction")
from models.merchant import Merchant import repositories.merchant_repository as merchant_repository from models.tag import Tag import repositories.tag_repository as tag_repository from models.transaction import Transaction import repositories.transaction_repository as transaction_repository merchant_repository.delete_all() tag_repository.delete_all() transaction_repository.delete_all() merchant_1 = Merchant("Asda") merchant_repository.save(merchant_1) merchant_2 = Merchant("Vodafone") merchant_repository.save(merchant_2) merchant_3 = Merchant("Adidas") merchant_repository.save(merchant_3) tag_1 = Tag("Finances") tag_repository.save(tag_1) tag_2 = Tag("Groceries") tag_repository.save(tag_2) tag_3 = Tag("Shopping") tag_repository.save(tag_3) transaction_1 = Transaction(50, merchant_1, tag_2) transaction_repository.save(transaction_1) transaction_2 = Transaction(65, merchant_3, tag_3) transaction_repository.save(transaction_2)
def create_merchant(): name = request.form['name'] disable = True if 'disable' in request.form else False new_merchant = Merchant(name, disable) merchant_repository.save(new_merchant) return redirect("/merchants")
def update_merchant(id): name = request.form['name'] disable = True if 'disable' in request.form else False merchant = Merchant(name, disable, id) merchant_repository.update(merchant) return redirect("/merchants")
def setUp(self): self.merchant = Merchant("Amazon", 3)
def load_user(userid): if userid: return Merchant.by_id(userid)