예제 #1
0
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")
예제 #4
0
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")
예제 #6
0
def create_new_merchant():
    name = request.form['name']

    merchant = Merchant(name)
    merchant_repository.save(merchant)

    return redirect("/merchants")
예제 #7
0
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'))
예제 #9
0
    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"])
예제 #10
0
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
예제 #12
0
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
예제 #13
0
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
예제 #14
0
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
예제 #17
0
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
예제 #18
0
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},
    }
예제 #19
0
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)
예제 #21
0
 def setUp(self):
     self.merchant_1 = Merchant("Tesco")
예제 #22
0
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)
예제 #23
0
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)
예제 #24
0
    def setUp(self):

        self.merchant = Merchant("Overlook Hotel")
예제 #25
0
    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")
예제 #27
0
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)
예제 #28
0
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")
예제 #29
0
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)
예제 #31
0
def load_user(userid):
    if userid:
        return Merchant.by_id(userid)