def introduction_add(): print('introduction/add') data = {} keys = ['title', 'subtitle', 'description', 'image'] try: for key in keys: data[key] = get_request(key, None) if data['title'] is None or data['title'] == '': return json_response({ 'success': False, 'errcode': model.ResponseCode.bad_param, 'message': model.ResponseText.bad_param, }) introduction = model.Introduction(data['title']) if data['subtitle'] and data['subtitle'] != '': introduction.subtitle = data['subtitle'] if data['description'] and data['description'] != '': introduction.description = data['description'] if data['image'] 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, })
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 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, })
def signup(): print('admin/signup') data = {} keys = ['email', 'password'] try: for key in keys: data[key] = get_request(key, None) if model.User.check_exist_by_email(data['email']): return json_response({ "success": False, "message": 'This email is alread used by another person.' }) password = hashlib.md5(data['password'].encode()).hexdigest() user = model.User(data['email'], password, 1) model.add(user) model.commit() return json_response({ 'success': True, 'message': 'Sign up success.', }) except: return json_response({ 'success': False, 'message': 'Error occurs. Please try again later.', })
def product_delete(): print('product/delete') data = {} keys = ['id'] try: for key in keys: data[key] = get_request(key, None) 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']) product.status = 1 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, })
def confirm_email(): print('auth/confirm_email') data = {} keys = ['token'] try: for key in keys: data[key] = get_request(key, None) if data['token'] is None 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, }) user.email_verify = True model.add(user) 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 pcategory_update(): print('category/update') data = {} keys = ['id', 'name', 'image'] try: for key in keys: data[key] = get_request(key, None) if data['id'] is None or data['id'] == '': return json_response({ 'success': False, 'errcode': model.ResponseCode.bad_param, 'message': model.ResponseText.bad_param, }) category = model.PCategory.get_by_id(int(data['id'])) if data['name'] and data['name'] != '': category.name = data['name'] if data['image'] and data['image'] != '': category.image = data['image'] model.add(category) 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 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, })
def basket_add(): print('basket/add') data = {} keys = ['token', 'productid', 'count'] try: for key in keys: data[key] = get_request(key, None) if data['token'] is None or data['token'] == '' or \ data['productid'] is None or data['productid'] == '' or \ data['count'] is None or data['count'] == '': return json_response({ 'success': False, 'errcode': model.ResponseCode.bad_param, 'message': model.ResponseText.bad_param, }) user = model.Basket.user_by_token(data['token']) if not user: return json_response({ 'success': False, 'errcode': model.ResponseCode.no_exist, 'message': model.ResponseText.no_exist, }) product = model.Basket.get_by_id_status(data['productid'], 0) if product: product.count += int(data['count']) model.add(product) model.commit() return json_response({ 'success': True, 'message': model.ResponseText.success, }) basket = model.Basket() basket.userid = user.id basket.productid = data['productid'] basket.count = data['count'] basket.status = 0 model.add(basket) 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 createAdmin(): try: email = _config['admin']['email'] password = _config['admin']['password'] if not model.User.check_exist_by_email(email): password = hashlib.md5(password.encode()).hexdigest() user = model.User(email=email, password=password, role=1) model.add(user) model.commit() else: print('Admin already exist.') except: print('Create admin failed.') pass
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, })
def profile_changepass(): print('profile/changepass') data = {} keys = ['token', 'oldpass', 'newpass'] try: for key in keys: data[key] = get_request(key, None) if data['token'] is None or data['token'] == '' or \ data['oldpass'] is None or data['oldpass'] == '' or \ data['newpass'] is None or data['newpass'] == '': 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, }) oldpass = hashlib.md5(data['oldpass'].encode()).hexdigest() if not oldpass == user.password: return json_response({ 'success': False, 'errcode': model.ResponseCode.no_match, 'message': model.ResponseText.no_match, }) user.password = hashlib.md5(data['newpass'].encode()).hexdigest() user.token = b64encode(bytearray(user.email + ":" + user.password, 'utf-8')).decode('ascii') 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 basket_update(): print('basket/update') data = {} keys = ['token', 'id', 'count'] try: for key in keys: data[key] = get_request(key, None) if data['token'] is None or data['token'] == '' or \ data['id'] is None or data['id'] == '' or \ data['count'] is None or data['count'] == '': return json_response({ 'success': False, 'errcode': model.ResponseCode.bad_param, 'message': model.ResponseText.bad_param, }) basket = model.Basket.get_by_id(data['id']) if not basket: return json_response({ 'success': False, 'errcode': model.ResponseCode.no_exist, 'message': model.ResponseText.no_exist, }) if (int(data['count']) > int(basket.productinfo.count)): return json_response({ 'success': False, 'errcode': model.ResponseCode.beyond, 'message': model.ResponseText.beyond, }) basket.count = data['count'] model.add(basket) model.commit() return json_response({ 'success': True, 'message': model.ResponseText.success, 'result': basket.to_dict() }) except: return json_response({ 'success': False, 'errcode': model.ResponseCode.server_error, 'message': model.ResponseText.server_error, })
def admin_setstatus(): print('admin/setstatus') data = {} keys = ['token', 'userid', 'status'] try: for key in keys: data[key] = get_request(key, None) if data['token'] is None or data['token'] == '' or \ data['userid'] is None or data['userid'] == '': return json_response({ 'success': False, 'errcode': model.ResponseCode.bad_param, 'message': model.ResponseText.bad_param, }) # admin = model.User.find_by_token(data['token']) # if not admin or admin.role != 0: # return json_response({ # 'success': False, # 'errcode': model.ResponseCode.no_exist, # 'message': model.ResponseText.no_exist, # }) user = model.User.find_by_id(data['userid']) if not user: return json_response({ 'success': False, 'errcode': model.ResponseCode.no_exist, 'message': model.ResponseText.no_exist, }) user.status = data['status'] 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 product_add(): print('product/add') data = {} keys = [ 'name', 'unit', 'price', 'description', 'count', 'farmid', 'categoryid', 'images' ] try: for key in keys: data[key] = get_request(key, None) if data['name'] is None or data['name'] == '': return json_response({ 'success': False, 'errcode': model.ResponseCode.bad_param, 'message': model.ResponseText.bad_param, }) # if model.Product.find_by_name(data['name']): # return json_response({ # 'success': False, # 'errcode': model.ResponseCode.exist_error, # 'message': model.ResponseText.exist_error, # }) product = model.Product(data['name'], data['unit'], float(data['price']), int(data['count']), data['description']) product.images = str(data['images']) product.categoryid = data['categoryid'] product.farmid = data['farmid'] model.add(product) model.commit() return json_response({ 'success': True, 'message': model.ResponseText.success, 'results': product.to_dict() }) except: return json_response({ 'success': False, 'errcode': model.ResponseCode.server_error, 'message': model.ResponseText.server_error, })
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, })
def pcategory_add(): print('category/add') data = {} keys = ['name', 'image'] try: for key in keys: data[key] = get_request(key, None) if data['name'] is None or data['name'] == '': return json_response({ 'success': False, 'errcode': model.ResponseCode.bad_param, 'message': model.ResponseText.bad_param, }) if data['image'] is None or data['image'] == '': return json_response({ 'success': False, 'errcode': model.ResponseCode.bad_param, 'message': model.ResponseText.bad_param, }) if model.PCategory.find_by_name(data['name']): return json_response({ 'success': False, 'errcode': model.ResponseCode.exist_error, 'message': model.ResponseText.exist_error, }) category = model.PCategory(data['name']) category.image = data['image'] model.add(category) 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 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, })
def resetpass(): print('auth/resetpass') data = {} keys = ['token', 'password'] try: for key in keys: data[key] = get_request(key, None) if data['token'] is None or data['token'] == '' or \ data['password'] is None or data['password'] == '': return json_response({ 'success': False, 'errcode': model.ResponseCode.bad_email, 'message': model.ResponseText.bad_email, }) 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, }) user.password = hashlib.md5(data['password'].encode()).hexdigest() user.token = b64encode( bytearray(user.email + ":" + user.password, 'utf-8')).decode('ascii') model.add(user) 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, })
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, })