Skip to content

Commit

Permalink
added support for buyers, sellers and deals
Browse files Browse the repository at this point in the history
  • Loading branch information
marsan02 committed Jan 15, 2024
1 parent afb7068 commit 9912b23
Show file tree
Hide file tree
Showing 12 changed files with 350 additions and 12 deletions.
Binary file modified __pycache__/main.cpython-311.pyc
Binary file not shown.
102 changes: 99 additions & 3 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
import services.campaign as campaigns
import services.creative as creatives
import services.advertiser as advertisers
import services.deal as deals
import services.buyer as buyers
import services.seller as sellers

load_dotenv() # This loads the environment variables from .env

Expand Down Expand Up @@ -82,14 +85,15 @@ def process_creative(creative_name):

@app.route('/submit-advertiser', methods=['POST','PUT'])
@requires_auth
def submit_advertiser():
def submit_advertiser(*args, **kwargs):
buyer_id = kwargs.get('buyer_id', None)
if request.method == 'POST':
#retrieve advertiser
return advertisers.post_advertiser(request,client)
return advertisers.post_advertiser(buyer_id,request,client)
elif request.method == 'PUT':
# Update a advertiser
advertiser_id=request.args.get('_id')
return advertisers.put_advertiser(advertiser_id,request,client)
return advertisers.put_advertiser(buyer_id,advertiser_id,request,client)
@app.route('/advertisers', methods=['GET'])
@requires_auth
def manage_advertiser():
Expand All @@ -109,6 +113,98 @@ def process_advertiser():
# Delete a advertiser
return advertisers.delete_advertiser(advertiser_name,client)

@app.route('/submit-buyer', methods=['POST','PUT'])
@requires_auth
def submit_buyer():
if request.method == 'POST':
#retrieve buyer
return buyers.post_buyer(request,client)
elif request.method == 'PUT':
# Update a buyer
buyer_id=request.args.get('_id')
return buyers.put_buyer(buyer_id,request,client)
@app.route('/buyers', methods=['GET'])
@requires_auth
def manage_buyer():
return buyers.list_all_buyers(client)

@app.route('/buyer', methods=['GET', 'PUT', 'DELETE'])
@requires_auth
def process_buyer():
if request.method == 'GET':
#retrieve buyer
return buyers.get_buyer(request.args['_id'],client)
elif request.method == 'PUT':
# Update a buyer
return buyers.put_buyer(request.args['_id'],request.json,client)

elif request.method == 'DELETE':
# Delete a buyer
return buyers.delete_buyer(buyer_name,client)

@app.route('/submit-deal', methods=['POST','PUT'])
@requires_auth
def submit_deal():
if request.method == 'POST':
#retrieve deal
return deals.post_deal(request,client)
elif request.method == 'PUT':
# Update a deal
deal_id=request.args.get('_id')
return deals.put_deal(deal_id,request,client)
@app.route('/deals', methods=['GET'])
@requires_auth
def manage_deal():
return deals.list_all_deals(client)

@app.route('/deal', methods=['GET', 'PUT', 'DELETE'])
@requires_auth
def process_deal():
if request.method == 'GET':
#retrieve deal
return deals.get_deal(request.args['_id'],client)
elif request.method == 'PUT':
# Update a deal
return deals.put_deal(request.args['_id'],request.json,client)

elif request.method == 'DELETE':
# Delete a deal
return deals.delete_deal(deal_name,client)


@app.route('/submit-seller', methods=['POST','PUT'])
@requires_auth
def submit_seller():
if request.method == 'POST':
#retrieve seller
return sellers.post_seller(request,client)
elif request.method == 'PUT':
# Update a seller
seller_id=request.args.get('_id')
return sellers.put_seller(seller_id,request,client)
@app.route('/sellers', methods=['GET'])
@requires_auth
def manage_seller():
return sellers.list_all_sellers(client)

@app.route('/seller', methods=['GET', 'PUT', 'DELETE'])
@requires_auth
def process_seller():
if request.method == 'GET':
#retrieve seller
return sellers.get_seller(request.args['_id'],client)
elif request.method == 'PUT':
# Update a seller
return sellers.put_seller(request.args['_id'],request.json,client)

elif request.method == 'DELETE':
# Delete a seller
return sellers.delete_seller(seller_name,client)





# Example of a protected route
@app.route('/')
def your_protected_route():
Expand Down
Binary file modified services/__pycache__/advertiser.cpython-311.pyc
Binary file not shown.
Binary file added services/__pycache__/buyer.cpython-311.pyc
Binary file not shown.
Binary file added services/__pycache__/deal.cpython-311.pyc
Binary file not shown.
Binary file added services/__pycache__/seller.cpython-311.pyc
Binary file not shown.
11 changes: 6 additions & 5 deletions services/advertiser.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ def get_advertiser(advertiser_id,client):
else:
return jsonify({"message": "advertiser not found" }), 404

def put_advertiser(advertiser_id,request,client):
def put_advertiser(buyer_id,advertiser_id,request,client):
db = client['advertisers']
advertisers = db.advertisers
advertiser_id=ObjectId(advertiser_id)
payload = prepare_data(request.get_json())[0]
result = advertisers.update_one({"_id": advertiser_id}, {"$set": payload})
result = advertisers.update_one({"_id": advertiser_id, "buyer_id":buyer_id}, {"$set": payload})
if result.matched_count:
print("updated")
return jsonify({"message": "advertiser updated"})
Expand All @@ -45,13 +45,13 @@ def list_all_advertisers(client):
item["_id"] = str(item["_id"])
return jsonify(all_advertisers_with_id)

def post_advertiser(request,client):
def post_advertiser(buyer_id,request,client):
db = client['advertisers']
advertisers = db.advertisers
print("Submitting advertiser")
try:

advertiser_data = prepare_data(request.get_json())
advertiser_data = prepare_data(buyer_id,request.get_json())
try:
advertisers.insert_one(advertiser_data[0])
return jsonify({"message": "advertiser added"}), 201
Expand All @@ -64,13 +64,14 @@ def post_advertiser(request,client):
print(e)
return str(e), 500

def prepare_data(data):
def prepare_data(buyer_id,data):
# Extract form data
name = data['name']
default_brand_url = data['default_brand_url']
# Create the data payload in the required format
payload = [{
"name": name,
"buyer_id":buyer_id,
"default_brand_url":default_brand_url
}]
return payload
74 changes: 74 additions & 0 deletions services/buyer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
from flask import Flask, request, jsonify, request, render_template, redirect,url_for
import requests
from bson import ObjectId

def get_buyer(buyer_id,client):
# Get a single buyer
# Select the database
db = client['buyers']
buyers = db.buyers
buyer_id = ObjectId(buyer_id)
buyer = buyers.find_one({"_id": buyer_id}, {'_id': 0})
if buyer:
return jsonify(buyer)
else:
return jsonify({"message": "buyer not found" }), 404

def put_buyer(buyer_id,request,client):
db = client['buyers']
buyers = db.buyers
buyer_id=ObjectId(buyer_id)
payload = prepare_data(request.get_json())[0]
result = buyers.update_one({"_id": buyer_id}, {"$set": payload})
if result.matched_count:
print("updated")
return jsonify({"message": "buyer updated"})
else:
print("error)")
return jsonify({"message": "buyer not found"}), 404

def delete_buyer(buyer_name,client):
db = client['buyers']
buyers = db.buyers
result = buyers.delete_one({"buyer_name": buyer_name})
if result.deleted_count:
return jsonify({"message": "buyer deleted"})
else:
return jsonify({"message": "buyer not found"}), 404

def list_all_buyers(client):
db = client['buyers']
buyers = db.buyers
all_buyers_with_id = list(buyers.find({}))
for item in all_buyers_with_id:
print(item)
item["_id"] = str(item["_id"])
return jsonify(all_buyers_with_id)

def post_buyer(request,client):
db = client['buyers']
buyers = db.buyers
print("Submitting buyer")
try:

buyer_data = prepare_data(request.get_json())
try:
buyers.insert_one(buyer_data[0])
return jsonify({"message": "buyer added"}), 201
except Exception as e:
# If an error occurs, print the error and return an appropriate response
print("Error occurred:", e)
return jsonify({"error": str(e)}), 500
except Exception as e:
# Handle exceptions
print(e)
return str(e), 500

def prepare_data(data):
# Extract form data
name = data['name']
# Create the data payload in the required format
payload = [{
"name": name,
}]
return payload
87 changes: 87 additions & 0 deletions services/deal.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
from flask import Flask, request, jsonify, request, render_template, redirect,url_for
import requests
from bson import ObjectId

def get_deal(deal_id,client):
# Get a single deal
# Select the database
db = client['deals']
deals = db.deals
deal_id = ObjectId(deal_id)
deal = deals.find_one({"_id": deal_id}, {'_id': 0})
if deal:
return jsonify(deal)
else:
return jsonify({"message": "deal not found" }), 404

def put_deal(deal_id,request,client):
db = client['deals']
deals = db.deals
deal_id=ObjectId(deal_id)
payload = prepare_data(request.get_json())[0]
result = deals.update_one({"_id": deal_id}, {"$set": payload})
if result.matched_count:
print("updated")
return jsonify({"message": "deal updated"})
else:
print("error)")
return jsonify({"message": "deal not found"}), 404

def delete_deal(deal_name,client):
db = client['deals']
deals = db.deals
result = deals.delete_one({"deal_name": deal_name})
if result.deleted_count:
return jsonify({"message": "deal deleted"})
else:
return jsonify({"message": "deal not found"}), 404

def list_all_deals(client):
db = client['deals']
deals = db.deals
all_deals_with_id = list(deals.find({}))
for item in all_deals_with_id:
print(item)
item["_id"] = str(item["_id"])
return jsonify(all_deals_with_id)

def post_deal(request,client):
db = client['deals']
deals = db.deals
print("Submitting deal")
try:

deal_data = prepare_data(request.get_json())
try:
deals.insert_one(deal_data[0])
return jsonify({"message": "deal added"}), 201
except Exception as e:
# If an error occurs, print the error and return an appropriate response
print("Error occurred:", e)
return jsonify({"error": str(e)}), 500
except Exception as e:
# Handle exceptions
print(e)
return str(e), 500

def prepare_data(data):
# Extract form data
name = data['name']
seller_id = data['seller_id']
buyer_id = data['buyer_id']
deal_floor = data['deal_floor']
deal_floor_curr = data['deal_floor_curr']
price_type=data['price_type']
code = data['code']

# Create the data payload in the required format
payload = [{
"name": name,
"seller_id": seller_id,
"code": code,
"buyer_id": buyer_id,
"deal_floor": deal_floor,
"prive_type": price_type,
"deal_floor_curr": deal_floor_curr
}]
return payload
Loading

0 comments on commit 9912b23

Please sign in to comment.