Skip to content

Commit

Permalink
updated the user fav api and import statemets in the files to resolve…
Browse files Browse the repository at this point in the history
… the issues
  • Loading branch information
la3679 committed Apr 18, 2024
1 parent 9ad4abc commit fad0c3e
Show file tree
Hide file tree
Showing 21 changed files with 194 additions and 242 deletions.
20 changes: 9 additions & 11 deletions PCP/server/src/api/categories_api.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
from flask import make_response
from flask_restful import Resource
from flask import jsonify
from flask_restful import request
from flask_restful import reqparse
import json
from flask import Flask, jsonify, make_response, request
from flask_restful import Api, Resource

# Import only necessary functions from the database utility and category modules
try:
from src.utilities.swen_344_db_utils import *
from src.db.categories import *
except:
from utilities.swen_344_db_utils import *
from db.categories import *
from src.utilities.swen_344_db_utils import exec_get_all, exec_get_one
from src.db.categories import get_all_categories, get_category_by_id, search_categories
except ImportError:
from utilities.swen_344_db_utils import exec_get_all, exec_get_one
from db.categories import get_all_categories, get_category_by_id, search_categories


class ProductCategories(Resource):
def get(self):
Expand Down
22 changes: 10 additions & 12 deletions PCP/server/src/api/login_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,17 @@
These endpoints handle user registration and login functionality.
"""
from flask import make_response
from flask_restful import Resource
from flask import jsonify
from flask_restful import request
from flask_restful import reqparse
import json
import hashlib # Importing hashlib module for password hashing
from flask import Flask, jsonify, make_response
from flask_restful import Api, Resource, reqparse
import hashlib # Used for password hashing

# Try to import the necessary functions and classes explicitly
try:
from src.utilities.swen_344_db_utils import *
from src.db.login import *
except:
from db.login import *
from utilities.swen_344_db_utils import *
from src.utilities.swen_344_db_utils import exec_get_all # Assuming this function is used within check_user_credentials
from src.db.login import check_user_credentials # Ensure this is the correct function used for login logic
except ImportError:
from utilities.swen_344_db_utils import exec_get_all
from db.login import check_user_credentials

class LoginAPI(Resource):
"""
Expand Down
20 changes: 9 additions & 11 deletions PCP/server/src/api/logout_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,16 @@
These endpoints handle user registration and login functionality.
"""
from flask import make_response
from flask_restful import Resource
from flask import jsonify
from flask_restful import request
from flask_restful import reqparse
import json
from flask import Flask, jsonify, make_response, request
from flask_restful import Api, Resource, reqparse

# Import only the necessary functions from utilities and logout db module
try:
from src.utilities.swen_344_db_utils import *
from src.db.logout import *
except:
from utilities.swen_344_db_utils import *
from db.logout import *
from src.utilities.swen_344_db_utils import exec_commit
from src.db.logout import user_logout # Assuming user_logout function handles the logout process
except ImportError:
from utilities.swen_344_db_utils import exec_commit
from db.logout import user_logout


class LogoutAPI(Resource):
Expand Down
19 changes: 8 additions & 11 deletions PCP/server/src/api/prices_api.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
from flask import make_response
from flask_restful import Resource
from flask import jsonify
from flask_restful import request
from flask_restful import reqparse
import json
from flask import Flask, jsonify, make_response
from flask_restful import Api, Resource, reqparse

# Import only necessary functions from the utilities and price database module
try:
from src.utilities.swen_344_db_utils import *
from src.db.prices import *
except:
from utilities.swen_344_db_utils import *
from db.prices import *
from src.utilities.swen_344_db_utils import exec_get_all
from src.db.prices import get_prices_by_product, get_all_prices
except ImportError:
from utilities.swen_344_db_utils import exec_get_all
from db.prices import get_prices_by_product, get_all_prices


class PricesByProduct(Resource):
Expand Down
19 changes: 8 additions & 11 deletions PCP/server/src/api/products_api.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
from flask import make_response
from flask_restful import Resource
from flask import jsonify
from flask_restful import request
from flask_restful import reqparse
import json
from flask import Flask, jsonify, make_response, request
from flask_restful import Api, Resource

# Import only the necessary functions from the utilities and products database module
try:
from src.utilities.swen_344_db_utils import *
from src.db.products import get_all_products,get_product_by_id,search_products
except:
from utilities.swen_344_db_utils import *
from db.products import get_all_products,get_product_by_id,search_products
from src.utilities.swen_344_db_utils import exec_get_all # Assuming exec_get_all is used within your product functions
from src.db.products import get_all_products, get_product_by_id, search_products
except ImportError:
from utilities.swen_344_db_utils import exec_get_all
from db.products import get_all_products, get_product_by_id, search_products

class Products(Resource):
def get(self):
Expand Down
19 changes: 8 additions & 11 deletions PCP/server/src/api/retailer_api.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
from flask import make_response
from flask_restful import Resource
from flask import jsonify
from flask_restful import request
from flask_restful import reqparse
import json
from flask import Flask, jsonify, make_response
from flask_restful import Api, Resource, request

# Import only the necessary functions from the utilities and retailer database module
try:
from src.utilities.swen_344_db_utils import *
from src.db.retailers import *
except:
from utilities.swen_344_db_utils import *
from db.retailers import *
from src.utilities.swen_344_db_utils import exec_get_all # Assuming exec_get_all is used within retailer functions
from src.db.retailers import get_all_retailers, get_retailer_by_id
except ImportError:
from utilities.swen_344_db_utils import exec_get_all
from db.retailers import get_all_retailers, get_retailer_by_id


class Retailers(Resource):
Expand Down
15 changes: 6 additions & 9 deletions PCP/server/src/api/signup_api.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
from flask import make_response
from flask_restful import Resource
from flask import jsonify
from flask_restful import request
from flask_restful import reqparse
import json
from flask import Flask, jsonify, make_response
from flask_restful import Api, Resource, reqparse

# Import only the necessary functions from the signup module
try:
from src.db.signup import *
except:
from db.signup import *
from src.db.signup import user_signup, list_info_items
except ImportError:
from db.signup import user_signup, list_info_items

class SignUpApi(Resource):
def get(self):
Expand Down
21 changes: 9 additions & 12 deletions PCP/server/src/api/user_detail_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,16 @@
These endpoints handle user registration and login functionality.
"""
from flask import make_response
from flask_restful import Resource
from flask import jsonify
from flask_restful import request
from flask_restful import reqparse
import json
import hashlib # Importing hashlib module for passwo
from flask import Flask, jsonify, make_response, request
from flask_restful import Api, Resource

# Import only necessary functions from the utilities and user_details database module
try:
from src.utilities.swen_344_db_utils import *
from src.db.user_details import *
except:
from utilities.swen_344_db_utils import *
from db.user_details import *
from src.utilities.swen_344_db_utils import exec_get_one
from src.db.user_details import verify_session_key, list_user_detail
except ImportError:
from utilities.swen_344_db_utils import exec_get_one
from db.user_details import verify_session_key, list_user_detail

class UserDetail(Resource):
def get(self):
Expand Down
55 changes: 44 additions & 11 deletions PCP/server/src/api/user_favorites_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,59 @@
from flask import jsonify
from flask_restful import request
from flask_restful import reqparse
import json

try:
from src.utilities.swen_344_db_utils import *
from src.db.user_favorites import *
except:
from utilities.swen_344_db_utils import *
from db.user_favorites import *
from src.utilities.swen_344_db_utils import exec_get_all
from src.db.user_favorites import add_user_favorite, get_user_favorites,delete_user_favorite
except ImportError:
from utilities.swen_344_db_utils import exec_get_all
from db.user_favorites import add_user_favorite, get_user_favorites,delete_user_favorite


def verify_session_key(session_key):
"""Check the session key and return the user ID if valid."""
query = "SELECT user_id FROM user_authentication WHERE session_key = %s;"
result = exec_get_all(query, (session_key,))
return result[0][0] if result else None

class UserFavorites(Resource):
def post(self):
session_key = request.headers.get('X-Session-Key')
if not session_key:
return {"message": "No session key provided."}, 401

user_id = verify_session_key(session_key)
if not user_id:
return {"message": "Invalid session key."}, 401

parser = reqparse.RequestParser()
parser.add_argument('user_id', type=int, required=True, help="User ID cannot be blank!")
parser.add_argument('product_id', type=int, required=True, help="Product ID cannot be blank!")
args = parser.parse_args()
add_user_favorite(args['user_id'], args['product_id'])

add_user_favorite(user_id, args['product_id'])
return make_response(jsonify({'message': 'Favorite product added successfully'}), 201)

class UserFavoritesById(Resource):
def get(self, user_id):
def get(self):
session_key = request.headers.get('X-Session-Key')
if not session_key:
return {"message": "No session key provided."}, 401

user_id = verify_session_key(session_key)
if not user_id:
return {"message": "Invalid session key."}, 401

favorites = get_user_favorites(user_id)
return jsonify([{'FavoriteID': fav[4], 'ProductID': fav[0], 'ProductName': fav[1], 'ProductDescription': fav[2], 'ImageURL': fav[3]} for fav in favorites])
return jsonify([{'FavoriteID': fav[4], 'ProductID': fav[0], 'ProductName': fav[1], 'ProductDescription': fav[2], 'ImageURL': fav[3]} for fav in favorites])

def delete(self, product_id):
session_key = request.headers.get('X-Session-Key')
if not session_key:
return {"message": "No session key provided."}, 401

user_id = verify_session_key(session_key)
if not user_id:
return {"message": "Invalid session key."}, 401

delete_user_favorite(user_id, product_id)
return make_response(jsonify({'message': 'Favorite product deleted successfully'}), 204)
18 changes: 7 additions & 11 deletions PCP/server/src/db/categories.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
import psycopg2
import yaml
import os
from psycopg2 import connect
import pandas as pd
import numpy as np
import sys
import os

# Import only necessary functions from your utility module
try:
from src.api.categories_api import *
from src.utilities.swen_344_db_utils import *
except:
from api.categories_api import *
from utilities.swen_344_db_utils import *

from src.utilities.swen_344_db_utils import exec_get_all, exec_get_one
except ImportError:
from utilities.swen_344_db_utils import exec_get_all, exec_get_one

def get_all_categories():
"""Fetches all records from the produtcategories table."""
Expand Down
19 changes: 5 additions & 14 deletions PCP/server/src/db/login.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,11 @@
import psycopg2
import yaml
import os
import pandas as pd
import numpy as np
import sys
import os
try:
from src.api.login_api import *
from src.utilities.swen_344_db_utils import *
from src.model.user import *
except:
from api.login_api import *
from utilities.swen_344_db_utils import *
from model.user import *

from psycopg2 import connect # Import psycopg2 if you need it for database operations, otherwise remove it

try:
from src.utilities.swen_344_db_utils import exec_get_all, exec_get_one, exec_commit
except ImportError:
from utilities.swen_344_db_utils import exec_get_all, exec_get_one, exec_commit

def list_info_items():
"""Fetches all records from the User table."""
Expand Down
23 changes: 7 additions & 16 deletions PCP/server/src/db/logout.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,11 @@
import psycopg2
import yaml
import os
import pandas as pd
import numpy as np
import sys
import os
import secrets # Include only if you're generating new session keys or similar
from psycopg2 import connect # Include this only if you're directly using psycopg2 for connections in other parts of your script

# Import only necessary functions from your utilities and models
try:
from src.api.logout_api import *
from src.utilities.swen_344_db_utils import *
from src.model.user import *
except:
from api.logout_api import *
from utilities.swen_344_db_utils import *
from model.user import *
import hashlib
import secrets
from src.utilities.swen_344_db_utils import exec_commit
except ImportError:
from utilities.swen_344_db_utils import exec_commit

def user_logout(kwargs):
session_key = kwargs.get('session_key')
Expand Down
14 changes: 3 additions & 11 deletions PCP/server/src/db/prices.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,7 @@
import psycopg2
import yaml
import pandas as pd
import numpy as np
import sys
import os
try:
from src.api.prices_api import *
from src.utilities.swen_344_db_utils import *
except:
from api.prices_api import *
from utilities.swen_344_db_utils import *
from src.utilities.swen_344_db_utils import exec_get_all
except ImportError:
from utilities.swen_344_db_utils import exec_get_all

def get_prices_by_product(product_id):
sql = """
Expand Down
15 changes: 3 additions & 12 deletions PCP/server/src/db/products.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,7 @@
import psycopg2
import yaml
import pandas as pd
import numpy as np
import sys
import os
try:
# from src.api.products_api import *
from src.utilities.swen_344_db_utils import *
except:
# from api.products_api import *
from utilities.swen_344_db_utils import *

from src.utilities.swen_344_db_utils import exec_get_all, exec_get_one
except ImportError:
from utilities.swen_344_db_utils import exec_get_all, exec_get_one

def get_all_products():
"""Fetches all records from the Products table."""
Expand Down
Loading

0 comments on commit fad0c3e

Please sign in to comment.