예제 #1
0
    def get(self):
        current_user = jwt.decode(request.headers['Authorization'],
                                  environ.get('JWT_SECRET_KEY'),
                                  options={'verify_exp': False})

        if Roles().enum_to_name(current_user['sub']['role']) == 'admin':
            if 'id' in request.args:
                item = PurchaseModel.get(request.args['id'])
                item = serialize_model(item)
                item['cashback'] = calculate_unit_cashback(item['value'])
                return item
            elif 'cpf' in request.args:
                itens = PurchaseModel.get_by_reseller(request.args['cpf'])
                itens = serialize_model_list(itens)
                for item in itens:
                    item['cashback'] = calculate_unit_cashback(item['value'])
                return itens
            list = PurchaseModel.list()
            list = serialize_model_list(list)
            for item in list:
                item['cashback'] = calculate_unit_cashback(item['value'])
            return list
        else:
            if 'id' in request.args:
                item = PurchaseModel.get_by_reseller(current_user['sub']['id'])
                item = serialize_model(item)
                if item['id'] == request.args['id']:
                    return item
                else:
                    return
            list = PurchaseModel.get_by_reseller(current_user['sub']['id'])
            return list
예제 #2
0
    def test_get_by_reseller(self):
        purchase = PurchaseModel.get(1)
        assert purchase != None

        purchase = PurchaseModel.get_by_reseller('74936635057')

        assert purchase != None
예제 #3
0
    def get(self):
        current_user = jwt.decode(request.headers['Authorization'], environ.get('JWT_SECRET_KEY'), options={'verify_exp': False})

        if Roles().enum_to_name(current_user['sub']['role']) == 'admin':
            if 'cpf' in request.args and 'month' in request.args and 'year' in request.args:
                user = UserModel.get_by_cpf(request.args['cpf'])
                if user == None:
                    return "Revendedor não encontrado"
                itens = PurchaseModel.get_by_reseller(user.id)
                itens = serialize_model_list(itens)
                itens = list(filter(lambda item: datetime.strptime(item['created_at'], "%Y-%m-%d %H:%M:%S.%f").month == int(request.args['month']) and datetime.strptime(item['created_at'], "%Y-%m-%d %H:%M:%S.%f").year == int(request.args['year']) and item['status'] == "Aprovado", itens))
                return {"purchases": itens, "cashback_by_month": calculate_multi_cashback(itens)}
        else:
            if 'month' in request.args and 'year' in request.args:
                itens = PurchaseModel.get_by_reseller(int(current_user['sub']['id']))
                itens = serialize_model_list(itens)
                itens = list(filter(lambda item: datetime.strptime(item['created_at'], "%Y-%m-%d %H:%M:%S.%f").month == int(request.args['month']) and datetime.strptime(item['created_at'], "%Y-%m-%d %H:%M:%S.%f").year == int(request.args['year']) and item['status'] == "Aprovado", itens))
                return {"purchases": itens, "cashback_by_month": calculate_multi_cashback(itens)}

        return "Parâmetros incorretos", 401
예제 #4
0
    def test_post_purchase_endpoint(self, client):
        auth = client.post(
            '/api/authentication',
            json={
                'email': '*****@*****.**',
                'password': '******'})
        access_decode = json.loads(auth.data.decode())

        purchases = len(PurchaseModel.get_by_reseller(2))

        res = client.post(
            '/api/purchase',
            json={
                'value': 1000,
                'code': 30},
            headers={
                'Authorization': access_decode['token']})

        assert res.status_code == 201
        assert json.loads(res.data) == 'success'

        assert len(PurchaseModel.get_by_reseller(2)) == purchases + 1
예제 #5
0
def first_purchase():
    if UserModel.get_by_cpf("74936635057") == None:
        first_reseller_user()

    if PurchaseModel.get_by_reseller(2) != None:
        return

    new_purchase = PurchaseModel()
    new_purchase.code = 1
    new_purchase.value = 1000
    new_purchase.id_reseller = 1
    new_purchase.status = "Em validação"
    new_purchase.save()
    return