コード例 #1
0
ファイル: app.py プロジェクト: doduneves/invoice-api
def deactivate_invoice(invoice_id):
    try:
        conn, cur = connect_db()

        actual_date = datetime.now().strftime("%Y-%m-%dT%H:%M:%S")


        if request.get_json() and 'force_delete' in request.get_json() and request.get_json()['force_delete']:
            delete_sql = ("DELETE FROM invoices " +
                "WHERE id = '" + invoice_id + "';")
            
            deleted_info = "Invoice Removed Succesfully"

        
        else:
            delete_sql = ("UPDATE invoices " +
                    " SET isactive = False, deactiveAt = '" + actual_date +
                    "' WHERE id = '" + invoice_id + "';")
        
            deleted_info = "Invoice Deactivated Succesfully"

        print(delete_sql)
        cur.execute(delete_sql)
        conn.commit()

    except (Exception, psycopg2.DatabaseError) as error:
        print(error)
        return jsonify({'error': 'Invoice to remove was not found'}), 503
    finally:
        close_db(conn, cur)
    
    return jsonify({"message": deleted_info}), 200
コード例 #2
0
ファイル: app.py プロジェクト: doduneves/invoice-api
def update_invoice(invoice_id):
    
    if request.get_json():

        try:
            conn, cur = connect_db()
                
            set_string = ""
            for k in request.get_json().keys():
                set_string += str(k) + " = '" + str(request.get_json()[k]) + "', "

            set_string = set_string[:-2]
            
            
            update_sql = ("UPDATE invoices " +
                    " SET " + set_string +
                    " WHERE id = '" + invoice_id + "';")

            cur.execute(update_sql)
            conn.commit()

        except (Exception, psycopg2.DatabaseError) as error:
            print(error)
            return jsonify({'error': 'Invoice to update was not found'}), 503

        finally:
            close_db(conn, cur)

        
        return jsonify({"message":"Updated Succesfully"}), 200
    else:
        return jsonify({'error': 'No requested body found'}), 400
コード例 #3
0
ファイル: app.py プロジェクト: doduneves/invoice-api
def get_invoices_by_id(invoice_id):
    try:
        conn, cur = connect_db()

        cur.execute("SELECT id, document, description, amount, referenceMonth, referenceYear, createdAt, isActive, deactiveAt "
        + "FROM invoices WHERE id = '" + invoice_id + "';")
        row = cur.fetchone()

        if row:
            invoice = Invoice.generate_from_row(row)  
        else:
            return jsonify({'error': 'Invoice not found'}), 503
          
    except (Exception, psycopg2.DatabaseError) as error:
        print(error)
        return jsonify({"error":"Could not connect to Database"}), 503
    finally:
        close_db(conn, cur)

        
    return jsonify(invoice.__dict__), 200
コード例 #4
0
ファイル: app.py プロジェクト: doduneves/invoice-api
def create_invoice():

    if request.get_json():
        
        try:
            conn, cur = connect_db()

            if 'id' in request.get_json():
                invoice = Invoice(request.get_json(), request.get_json()['id'])
            else:
                invoice = Invoice(request.get_json())


            insert_string = ("INSERT INTO invoices VALUES('" 
                    + str(invoice.id) + "', '"
                    + invoice.document + "', '"
                    + invoice.description + "', "
                    + str(invoice.amount) + ", '"
                    + str(invoice.referenceMonth) + "', '"
                    + str(invoice.referenceYear) + "', '"
                    + str(invoice.createdAt) + "', "
                    + str(invoice.isActive) + ");")

            cur.execute(insert_string)

            conn.commit()

        except (Exception, psycopg2.DatabaseError) as error:
            print(error)
            return jsonify({'error': 'Some error inserting data'}), 503
        finally:
            close_db(conn, cur)


        return jsonify(invoice.__dict__), 201

    else:
        return jsonify({'error': 'No requested body found'}), 400
コード例 #5
0
ファイル: app.py プロジェクト: doduneves/invoice-api
def list_invoices():

    try:
        
        # Obtendo o valor da query para ordenacao
        order_query = request.args.get('order')
        
        order_string = order_invoices(order_query)

        
    except:
        print("Error generating order query")
        return jsonify({"error":"Something went wrong. Please, Contact the admin"}), 503

    try:
       
        # Obtendo valores de filtro
        filter_string = filter_invoices(request.args)


    except:
        print("Error generating filter query")
        return jsonify({"error":"Something went wrong. Please, Contact the admin"}), 400
    try:
        (conn, cur) = connect_db()

        psql_query_string = """
            SELECT id, document, description, amount, referenceMonth, referenceYear, createdAt, isActive, deactiveAt
            FROM invoices
        """

        psql_query_string += filter_string + order_string

        cur.execute(psql_query_string)
        rows = cur.fetchall()

        print("The number of parts: ", cur.rowcount)
        
        list_invoices = []
        for row in rows:
            invoice = Invoice.generate_from_row(row)
            list_invoices.append(invoice.__dict__)
        
        

    except (Exception, psycopg2.DatabaseError) as error:
        print(error)
        return jsonify({"error":"Could not connect to Database"}), 503

    finally:
        close_db(conn, cur)

    try:
        # Tratando o valor das paginas
        page = int(request.args.get('page')) if request.args.get('page') else 1
        page = page if page > 1 else 1
    
        limit = 5 # Itens por pagina
        
        links_json = generate_links_json(page, limit, list_invoices)    


        invoices = separate_result_per_page(list_invoices, limit, page)

        result = create_list_result(links_json, limit, cur.rowcount, invoices)

        return jsonify(result), 200
    except:
        print("Error while separeting itens per page")
        return jsonify({"error":"Something went wrong. Please, Contact the admin"}), 400