Example #1
0
def farm_update():
    print('farm/update')
    data = {}
    try:
        data = get_request_dict()
        if not ('id' in data) or data['id'] == '' or \
            not ('token' in data) or data['token'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        user = model.User.find_by_token(data['token'])
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })
        farm = model.Farm.get_by_id(data['id'])
        if ('name' in data) and data['name'] != '':
            farm.name = data['name']
        if ('ownerid' in data) and data['ownerid'] != '':
            farm.ownerid = data['ownerid']
        if ('photo' in data) and data['photo'] != '':
            farm.photo = data['photo']
        if ('address' in data) and data['address'] != '':
            farm.address = data['address']
        if ('city' in data) and data['city'] != '':
            farm.city = data['city']
        if ('state' in data) and data['state'] != '':
            farm.state = data['state']
        if ('zipcode' in data) and data['zipcode'] != '':
            farm.zipcode = data['zipcode']
        if ('lat' in data) and data['lat'] != '':
            farm.lat = data['lat']
        if ('lon' in data) and data['lon'] != '':
            farm.lon = data['lon']
        if ('link_url' in data) and data['link_url'] != '':
            farm.link_url = data['link_url']
        if ('link_phone' in data) and data['link_phone'] != '':
            farm.link_phone = data['link_phone']
        if ('status' in data) and data['status'] != '':
            farm.status = data['status']
        if ('employees' in data) and data['employees'] != '':
            farm.employees = data['employees']

        model.add(farm)
        model.commit()
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': farm.to_dict()
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
def unit_getbyid():
    print('unit/getbyid')
    data = {}
    try:
        data = get_request_dict()
        if not ('token' in data) or data['token'] == '' or \
            not ('unitid' in data) or data['unitid'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        user = model.User.find_by_token(data['token'])
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })

        unit = model.Unit.get_by_id(data['unitid'])
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': unit.to_dict()
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
Example #3
0
def order_search():
    print('order/search')
    data = get_request_dict()
    try:
        if not ('token' in data) or data['token'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        user = model.User.find_by_token(data['token'])
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })
        if not ('keyword' in data) or data['keyword'] == '':
            data['keyword'] = ''
        results = [
            order.to_dict() for order in model.Order.search(data['keyword'])
        ]
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': results
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
def card_getall():
    print('card/getall')
    data = {}
    try:
        data = get_request_dict()
        if not ('token' in data) or data['token'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        user = model.User.find_by_token(data['token'])
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })

        results = [card.to_dict() for card in model.Card.get_all()]
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': results
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
Example #5
0
def introduction_update():
    print('introduction/update')
    data = {}
    try:
        data = get_request_dict()
        if data['id'] is None or data['id'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        introduction = model.Introduction.get_by_id(int(data['id']))
        if ('title' in data) and data['title'] != '':
            introduction.title = data['title']
        if ('subtitle' in data) and data['subtitle'] != '':
            introduction.subtitle = data['subtitle']
        if ('price' in data) and data['price'] != '':
            introduction.price = data['price']
        if ('description' in data) and data['description'] != '':
            introduction.description = data['description']
        if ('image' in data) and data['image'] != '':
            introduction.image = data['image']
        model.add(introduction)
        model.commit()
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
Example #6
0
def product_getbyparam():
    print('admin/getbyparam')
    data = get_request_dict()
    try:
        if not ('ids' in data) or data['ids'] == '' or \
            not ('lower_price' in data) or data['lower_price'] == '' or \
            not ('upper_price' in data) or data['upper_price'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        if not ('keyword' in data) or data['keyword'] == '':
            data['keyword'] = ''
        results = [
            product.to_dict() for product in model.Product.getbyparam(
                data['ids'], data['lower_price'], data['upper_price'],
                data['keyword'])
        ]
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': results
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
def card_update():
    print('card/update')
    data = {}
    try:
        data = get_request_dict()
        if not ('token' in data) or data['token'] == '' or \
            not ('stripetoken' in data) or data['stripetoken'] == '' or \
            not ('cardid' in data) or data['cardid'] == '':             \
                        return json_response({
                            'success': False,
                            'errcode': model.ResponseCode.bad_param,
                            'message': model.ResponseText.bad_param,
                        })
        user = model.User.find_by_token(data['token'])
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })
        card = model.Card.get_by_id(data['cardid'])
        if not card:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })
        try:
            customer = stripe.Customer.create(email=user.email,
                                              source=data['stripetoken'])
            card.customerid = customer.id
        except stripe.error.StripeError:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.pay_error,
                'message': model.ResponseText.pay_error,
            })

        if ('branch' in data) and data['branch'] != '':
            card.branch = data['branch']
        if ('number' in data) and data['number'] != '':
            card.number = data['number']
        if ('funding' in data) and data['funding'] != '':
            card.funding = data['funding']

        model.add(card)
        model.commit()
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': card.to_dict()
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
Example #8
0
def product_getall():
    print('product/getall')
    data = get_request_dict()
    try:
        results = [product.to_dict() for product in model.Product.get_all()]
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': results
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
Example #9
0
def profile_update():
    print('profile/update')
    data = {}
    try:
        data = get_request_dict()
        if not ('token' in data) or data['token'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        user = model.User.find_by_token(data['token'])
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })
        if ('fname' in data) and data['fname'] != '':
            user.fname = data['fname']
        if ('lname' in data) and data['lname'] != '':
            user.lname = data['lname']
        if ('avatar' in data) and data['avatar'] != '':
            user.avatar = data['avatar']
        if ('address' in data) and data['address'] != '':
            user.address = data['address']
        if ('city' in data) and data['city'] != '':
            user.city = data['city']
        if ('state' in data) and data['state'] != '':
            user.state = data['state']
        if ('zipcode' in data) and data['zipcode'] != '':
            user.zipcode = data['zipcode']
        if ('phone' in data) and data['phone'] != '':
            user.phone = data['phone']
        model.add(user)
        model.commit()
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results' : user.to_dict()
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
def unit_update():
    print('unit/update')
    data = {}
    try:
        data = get_request_dict()
        if not ('token' in data) or data['token'] == '' or \
            not ('unitid' in data) or data['unitid'] == '' or \
            not ('name' in data) or data['name'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        user = model.User.find_by_token(data['token'])
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })
        unit = model.Unit.get_by_id(data['unitid'])
        if not unit:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })
        if model.Unit.find_by_name(data['name']):
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.exist_error,
                'message': model.ResponseText.exist_error,
            })
        unit.name = data['name']
        model.add(unit)
        model.commit()
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': unit.to_dict()
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
Example #11
0
def product_update():
    print('product/update')
    data = {}
    try:
        data = get_request_dict()
        if data['id'] is None or data['id'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        product = model.Product.get_by_id(data['id'])
        if ('name' in data) and data['name'] != '':
            product.name = data['name']
        if ('unit' in data) and data['unit'] != '':
            product.unit = data['unit']
        if ('price' in data) and data['price'] != '':
            product.price = data['price']
        if ('description' in data) and data['description'] != '':
            product.description = data['description']
        if ('count' in data) and data['count'] != '':
            product.count = data['count']
        if ('farmid' in data) and data['farmid'] != '':
            product.farmid = data['farmid']
        if ('categoryid' in data) and data['categoryid'] != '':
            product.categoryid = data['categoryid']
        if ('images' in data) and data['images'] != '':
            product.images = str(data['images'])
        model.add(product)
        model.commit()
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
Example #12
0
def s_address():
    print('profile/s_address')
    data = {}
    try:
        data = get_request_dict()
        if not ('token' in data) or data['token'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        user = model.User.find_by_token(data['token'])
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })
        if ('s_address' in data) and data['s_address'] != '':
            user.s_address = data['s_address']
        if ('s_city' in data) and data['s_city'] != '':
            user.s_city = data['s_city']
        if ('s_state' in data) and data['s_state'] != '':
            user.s_state = data['s_state']
        if ('s_zipcode' in data) and data['s_zipcode'] != '':
            user.s_zipcode = data['s_zipcode']
        model.add(user)
        model.commit()
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results' : user.to_dict()
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
Example #13
0
def farm_getbyid():
    print('farm/getbyid')
    data = {}
    try:
        data = get_request_dict()
        if not ('token' in data) or data['token'] == '' or \
            not ('farmid' in data) or data['farmid'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        farm = model.Farm.get_by_id(data['farmid'])
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': farm.to_dict()
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
Example #14
0
def order_add():
    print('order/add')
    data = {}
    try:
        data = get_request_dict()

        if not ('token' in data) or data['token'] == '' or \
            not ('basketids' in data) or data['basketids'] == '' or \
            not ('customerid' in data) or data['customerid'] == '' or \
            not ('fname' in data) or data['fname'] == '' or \
            not ('lname' in data) or data['lname'] == '' or \
            not ('email' in data) or data['email'] == '' or \
            not ('phone' in data) or data['phone'] == '' or \
            not ('address' in data) or data['address'] == '' or \
            not ('city' in data) or data['city'] == '' or \
            not ('state' in data) or data['state'] == '' or \
            not ('zipcode' in data) or data['zipcode'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        user = model.User.find_by_token(data['token'])
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })
        farmids = []
        totalprice = 0

        baskets = model.Basket.get_by_ids(data['basketids'])
        for basket in baskets:
            if not basket.productinfo.farmid in farmids:
                farmids.append(basket.productinfo.farmid)
        for farmid in farmids:
            basketids = []
            productcost = 0
            shipmentcost = 0
            paymentcost = 0
            order = model.Order()
            order.userid = user.id
            order.farmid = farmid
            order.fname = data['fname']
            order.lname = data['lname']
            order.address = data['address']
            order.city = data['city']
            order.state = data['state']
            order.zipcode = data['zipcode']
            order.email = data['email']
            order.phone = data['phone']
            order.status = 0
            for basket in baskets:
                if farmid == basket.productinfo.farmid:
                    basketids.append(basket.id)
                    productcost += int(basket.count) * float(
                        basket.productinfo.price)

            paymentcost = productcost + shipmentcost
            # totalprice += paymentcost
            order.basketids = str(basketids)
            order.productcost = productcost
            order.shipmentcost = shipmentcost
            order.paymentcost = paymentcost
            try:
                stripe.Charge.create(customer=data['customerid'],
                                     amount=int(paymentcost * 100),
                                     currency='usd',
                                     description='Flask Charge')
                for basket in baskets:
                    if farmid == basket.productinfo.farmid:
                        basket.buyunit = basket.productinfo.unit
                        basket.buyprice = basket.productinfo.price
                        basket.status = 1
                        model.add(basket)
                        model.commit()
                        product = model.Product.get_by_id(
                            basket.productinfo.id)
                        product.count -= basket.count
                        model.add(product)
                        model.commit()
            except stripe.error.StripeError:
                return json_response({
                    'success': False,
                    'errcode': model.ResponseCode.pay_error,
                    'message': model.ResponseText.pay_error,
                })
            model.add(order)
            model.commit()
            model.refresh(order)

            farm = model.Farm.get_by_id(farmid)

            transaction = model.Transaction()
            transaction.userid = user.id
            transaction.orderid = order.id
            transaction.farmid = farmid
            transaction.farmname = farm.name
            transaction.basketids = str(basketids)
            transaction.amount = paymentcost
            transaction.customerid = data['customerid']
            transaction.customername = data['fname'] + ' ' + data['lname']
            transaction.currency = 'usd'
            model.add(transaction)
            model.commit()

        return json_response({
            'success': True,
            'message': model.ResponseText.success,
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
def signup():
    print('auth/signup')
    data = {}
    # keys = ['email', 'password', 'role', 'address', 'avatar', 'city', 'fname', 'lat', 'lname', 'lon', 'membership', 'phone', 'state', 'username', 'zipcode',
    #         # driver
    #         'license_id', 'license_image', 'license_number', 'vehicle_type', 'vehicle_image', 'vehicle_number', 'issued_date', 'expired_date']
    try:
        data = get_request_dict()

        if not ('role' in data) or data['role'] == '' or \
            not ('email' in data) or data['email'] == '' or \
            not ('password' in data) or data['password'] == '' or \
            not ('fname' in data) or data['fname'] == '' or \
            not ('lname' in data) or data['lname'] == '' or \
            not ('address' in data) or data['address'] == '' or \
            not ('city' in data) or data['city'] == '' or \
            not ('state' in data) or data['state'] == '' or \
            not ('zipcode' in data) or data['zipcode'] == '' or \
            not ('baseurl' in data) or data['baseurl'] == '' or \
            not ('phone' in data) or data['phone'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        if model.User.check_exist_by_email(data['email']):
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.exist_email,
                'message': model.ResponseText.exist_email,
            })
        role = int(data['role'])
        baseurl = data['baseurl']
        password = hashlib.md5(data['password'].encode()).hexdigest()
        user = model.User(data['email'], password, role, data['fname'],
                          data['lname'])
        # 0:admin, 1: customer, 2: farmer-admin, 3: farmer, 4: driver
        if role == 2:  # farm owner
            print('Farm Owner')
            if not ('farm_name' in data) or data['farm_name'] == '' or \
                not ('farm_address' in data) or data['farm_address'] == '' or \
                not ('farm_city' in data) or data['farm_city'] == '' or \
                not ('farm_state' in data) or data['farm_state'] == '' or \
                not ('farm_zipcode' in data) or data['farm_zipcode'] == '' or \
                not ('farm_link_phone' in data) or data['farm_link_phone'] == '':
                return json_response({
                    'success': False,
                    'errcode': model.ResponseCode.bad_param,
                    'message': model.ResponseText.bad_param,
                })
            farm = model.Farm(data['farm_name'])
            farm.address = data['farm_address']
            farm.city = data['farm_city']
            farm.state = data['farm_state']
            farm.zipcode = data['farm_zipcode']
            farm.link_phone = data['farm_link_phone']
            if ('farm_photo' in data) and data['farm_photo'] != '':
                farm.photo = data['farm_photo']
            if ('farm_lat' in data) and data['farm_lat'] != '':
                farm.lat = data['farm_lat']
            if ('farm_lon' in data) and data['farm_lon'] != '':
                farm.lon = data['farm_lon']
            if ('farm_link_url' in data) and data['farm_link_url'] != '':
                farm.link_url = data['farm_link_url']
            if ('farm_status' in data) and data['farm_status'] != '':
                farm.status = data['farm_status']
            if ('farm_employees' in data) and data['farm_employees'] != '':
                farm.employees = data['farm_employees']
            model.add(farm)
            model.commit()
            model.refresh(farm)
            user.farmid = farm.id
        if role == 4:  # driver
            print('Driver Sign up')
            if not ('license_id' in data) or data['license_id'] == '' or \
                not ('license_number' in data) or data['license_number'] == '' or \
                not ('issued_date' in data) or data['issued_date'] == '' or \
                not ('expired_date' in data) or data['expired_date'] == '' or \
                not ('driver_address' in data) or data['driver_address'] == '' or \
                not ('driver_city' in data) or data['driver_city'] == '' or \
                not ('driver_state' in data) or data['driver_state'] == '' or \
                not ('driver_zipcode' in data) or data['driver_zipcode'] == '':
                return json_response({
                    'success': False,
                    'errcode': model.ResponseCode.bad_param,
                    'message': model.ResponseText.bad_param,
                })
            driver = model.Driver()
            driver.license_id = data['license_id']
            driver.license_number = data['license_number']
            driver.issued_date = data['issued_date']
            driver.expired_date = data['expired_date']
            driver.address = data['driver_address']
            driver.city = data['driver_city']
            driver.state = data['driver_state']
            driver.zipcode = data['driver_zipcode']
            driver.status = 0
            if ('license_image' in data) and data['license_image'] != '':
                driver.license_image = data['license_image']
            if ('vehicle_type' in data) and data['vehicle_type'] != '':
                driver.vehicle_type = data['vehicle_type']
            if ('vehicle_image' in data) and data['vehicle_image'] != '':
                driver.vehicle_image = data['vehicle_image']
            if ('vehicle_number' in data) and data['vehicle_number'] != '':
                driver.vehicle_number = data['vehicle_number']
            model.add(driver)
            model.commit()
            model.refresh(driver)
            user.driverid = driver.id
        user.phone = data['phone']
        user.address = data['address']
        user.city = data['city']
        user.state = data['state']
        user.zipcode = data['zipcode']
        model.add(user)
        model.commit()
        model.refresh(user)
        if role == 2:
            farm = model.Farm.get_by_id(user.farmid)
            farm.ownerid = user.id
            model.add(farm)
            model.commit()
        isSend = send_mail('Email Confirm',
                           user.email,
                           html=render_template('user_confirm.html',
                                                username=user.fname + ' ' +
                                                user.lname,
                                                server=baseurl,
                                                token=user.token))
        if not isSend:
            print('Send email failed.')
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': user.to_dict()
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })