Ejemplo n.º 1
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,
        })
Ejemplo n.º 2
0
def farm_delete():
    print('farm/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,
            })
        farm = model.Farm.get_by_id(data['id'])
        model.delete(farm)
        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,
        })
Ejemplo n.º 3
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,
        })
Ejemplo n.º 4
0
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,
        })
Ejemplo n.º 5
0
def order_delete():
    print('order/delete')
    data = {}
    keys = ['token', 'orderid']
    try:
        for key in keys:
            data[key] = get_request(key, None)
        if data['orderid'] is None or data['orderid'] == '' or \
            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,
            })
        order = model.Order.get_by_id(int(data['orderid']))
        model.delete(order)
        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,
        })
Ejemplo n.º 6
0
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_delete():
    print('category/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,
            })
        category = model.PCategory.get_by_id(int(data['id']))
        model.delete(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,
        })
Ejemplo n.º 8
0
def basket_delete():
    print('basket/delete')
    data = {}
    keys = ['token','id']
    try:
        for key in keys:
            data[key] = get_request(key, None)
        if data['id'] is None or data['id'] == '' or \
            data['token'] is None or data['token'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        basket = model.Basket.get_by_id(int(data['id']))
        model.delete(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,
        })
Ejemplo n.º 9
0
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,
        })
Ejemplo n.º 10
0
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.',
        })
Ejemplo n.º 11
0
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,
        })
Ejemplo n.º 12
0
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,
        })
Ejemplo n.º 13
0
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
Ejemplo n.º 14
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,
        })
Ejemplo n.º 15
0
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,
        })
Ejemplo n.º 16
0
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,
        })
Ejemplo n.º 17
0
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,
        })
Ejemplo n.º 18
0
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,
        })
Ejemplo n.º 19
0
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,
        })
Ejemplo n.º 20
0
def card_delete():
    print('card/delete')
    data = {}
    try:
        data = get_request_dict()
        if not ('token' in data) or data['token'] == '' 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,
            })
        model.delete(card)
        model.commit()
        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,
        })
Ejemplo n.º 21
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,
        })
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,
        })
Ejemplo n.º 23
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,
        })
Ejemplo n.º 24
0
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,
        })
Ejemplo n.º 25
0
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,
        })
Ejemplo n.º 26
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,
        })