예제 #1
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,
        })
예제 #2
0
def signin():
    print('auth/siginin')
    data = {}
    keys = ['email', 'password']
    try:
        for key in keys:
            data[key] = get_request(key, None)
        password = hashlib.md5(data['password'].encode()).hexdigest()
        user = model.User.find_by_email_and_password(data['email'], password)
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.auth_error,
                'message': model.ResponseText.auth_error,
            })
        # if not user.email_verify:
        #     return json_response({
        #     'success': False,
        #     'errcode': model.ResponseCode.require_email_verify,
        #     'message': model.ResponseText.require_email_verify,
        # })
        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,
        })
예제 #3
0
def admin_getuserbyrole():
    print('admin/getuserbyrole')
    data = {}
    keys = ['token', 'role']
    try:
        for key in keys:
            data[key] = get_request(key, None)
        if data['token'] is None or data['token'] == '' or \
            data['role'] is None or data['role'] == '':
            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 = [
            person.to_dict() for person in model.User.get_by_role(data['role'])
        ]
        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,
        })
예제 #4
0
def basket_getbyuserid():
    print('basket/getbyuserid')
    data = {}
    keys = ['token', 'userid']
    try:
        for key in keys:
            data[key] = get_request(key, None)
        if data['userid'] is None or data['userid'] == '' 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.Basket.user_by_token(data['token'])
        # if not user:
        #     return json_response({
        #         'success': False,
        #         'errcode': model.ResponseCode.no_exist,
        #         'message': model.ResponseText.no_exist,
        #     })
        cart = model.Basket.get_by_userid(data['userid'])
        # cart = model.Basket.get_by_status(0)
        results = [order.to_dict() for order in cart]
        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,
        })
예제 #5
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,
        })
예제 #6
0
def basket_getbyids():
    print('basket/getbyids')
    data = {}
    keys = ['token','ids']
    try:
        for key in keys:
            data[key] = get_request(key, None)
        if data['ids'] is None or data['ids'] == '' 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_ids(data['ids'])
        results = [item.to_dict() for item in basket]
        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,
        })
예제 #7
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.',
        })
예제 #8
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,
        })
예제 #9
0
def profile_getbyuserid():
    print('profile/getuser')
    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,
            })
        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 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,
        })
예제 #11
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,
        })
예제 #12
0
def basket_getall():
    print('basket/getall')
    try:
        data = {}
        keys = ['token']
        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,
            })
        results = [basket.to_dict() for basket in model.Basket.get_by_status(0)]
        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,
        })
예제 #13
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,
        })
예제 #14
0
def product_getbyid():
    print('product/getbyid')
    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,
            })
        results = model.Product.get_by_id(int(data['id'])).to_dict()
        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,
        })
예제 #15
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,
        })
예제 #16
0
def order_getbyfarmid():
    print('order/getbyfarmid')
    data = {}
    keys = ['token', 'farmid', 'offset', 'limit', 'keyword']
    try:
        for key in keys:
            data[key] = get_request(key, None)
        if data['farmid'] is None or data['farmid'] == '' 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,
            })
        offset = 0
        limit = 50000
        keyword = ''

        if ('offset' in data) and data['offset'] != '':
            offset = int(data['offset'])
        if ('limit' in data) and data['limit'] != '':
            limit = int(data['limit'])
        if ('keyword' in data) and data['keyword'] != '':
            keyword = data['keyword']
        print(keyword)
        orders = model.Order.get_by_farmid(data['farmid'], offset, limit,
                                           keyword)['data']
        results = []
        no = 1
        for order in orders:
            result = order.to_dict()
            result['no'] = no
            results.append(result)
            no += 1
        # results = [order.to_dict() for order in orders]
        allcount = model.Order.get_by_farmid(data['farmid'], offset, limit,
                                             keyword)['count']
        return json_response({
            'success': True,
            'message': model.ResponseText.success,
            'results': results,
            'allcount': allcount
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
예제 #17
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,
        })
예제 #18
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,
        })
예제 #19
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,
        })
예제 #20
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,
        })
예제 #21
0
def forgotpass():
    print('auth/forgotpass')
    data = {}
    keys = ['email', 'baseurl']
    try:
        for key in keys:
            data[key] = get_request(key, None)
        if data['email'] is None or data['email'] == '' or \
            data['baseurl'] is None or data['baseurl'] == '':
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.bad_param,
                'message': model.ResponseText.bad_param,
            })
        email = data['email']
        baseurl = data['baseurl']
        user = model.User.find_by_email(data['email'])
        if not user:
            return json_response({
                'success': False,
                'errcode': model.ResponseCode.no_exist,
                'message': model.ResponseText.no_exist,
            })
        isSend = send_mail('Forgot Password',
                           user.email,
                           html=render_template('user_forgotpass.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,
        })
    except:
        return json_response({
            'success': False,
            'errcode': model.ResponseCode.server_error,
            'message': model.ResponseText.server_error,
        })
예제 #22
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,
        })
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,
        })
예제 #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,
        })