diff --git a/Multiprocessing.py b/Multiprocessing.py index 4680772..0a5360e 100644 --- a/Multiprocessing.py +++ b/Multiprocessing.py @@ -15,6 +15,7 @@ from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import selenium.common.exceptions import re +from fp2_14 import get_product_prices # Define the subset of urls url_list = [ diff --git a/fp3_1.py b/fp3_1.py new file mode 100644 index 0000000..27626f3 --- /dev/null +++ b/fp3_1.py @@ -0,0 +1,163 @@ +from sqlalchemy import create_engine, Column, Integer, String, ForeignKey, Float, DateTime +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import relationship, sessionmaker +import sys +from flask import Flask, render_template + +# Create the Flask application +app = Flask(__name__) + +# Create the database engine +engine = create_engine('sqlite:///scraper_design.db') + +# Create a session factory +Session = sessionmaker(bind=engine) + +# Create a base class +Base = declarative_base() + +# Define the product class +class Product(Base): + __tablename__ = 'product' + id = Column(Integer, primary_key=True) + name = Column(String) + SKU_PLU_UPC_number = Column(String) + price_histories = relationship("PriceHistory", back_populates="product") + +# Define the retailer class +class Retailer(Base): + __tablename__ = 'retailer' + id = Column(Integer, primary_key=True) + name = Column(String) + products = relationship("Product", secondary="retailer_product") + +# Define the price class +class Price(Base): + __tablename__ = 'price' + id = Column(Integer, primary_key=True) + MOQ = Column(Integer) + price = Column(Float) + +# Define the scraperjob class +class ScraperJob(Base): + __tablename__ = 'scraper_job' + id = Column(Integer, primary_key=True) + start_time = Column(DateTime) + end_time = Column(DateTime) + parameters = Column(String) + statistics = Column(String) + +# Define the price history class +class PriceHistory(Base): + __tablename__ = 'price_history' + id = Column(Integer, primary_key=True) + location = Column(String) + zip_code = Column(Integer) + city_name = Column(String) + price_at_time = Column(DateTime) + price = Column(Float) + scraper_job_id = Column(Integer, ForeignKey('scraper_job.id')) + product_id = Column(Integer, ForeignKey('product.id')) + product = relationship("Product", back_populates="price_histories") + scraper_job = relationship("ScraperJob") + +# Define the user class +class User(Base): + __tablename__ = 'user' + id = Column(Integer, primary_key=True) + username = Column(String) + credentials = Column(String) + creation_date = Column(DateTime) + modification_date = Column(DateTime) + +class RetailerProduct(Base): + __tablename__ = 'retailer_product' + retailer_id = Column(Integer, ForeignKey('retailer.id'), primary_key=True) + product_id = Column(Integer, ForeignKey('product.id'), primary_key=True) + +# Create the database tables +Base.metadata.create_all(engine) + +# Create command-line arguments for the user class +def main(): + if len(sys.argv) < 2: + print("Usage: python user_tool.py [create|edit|delete]") + return + + command = sys.argv[1] + + if command == "create": + if len(sys.argv) != 3: + print("Usage: python user_tool.py create [username]") + return + + username = sys.argv[2] + + # Create a new user object + user = User(username=username) + + # Add the user to the database + session = Session() + session.add(user) + session.commit() + + print("User created successfully.") + + elif command == "edit": + if len(sys.argv) != 4: + print("Usage: python user_tool.py edit [user_id] [new_username]") + return + + user_id = int(sys.argv[2]) + new_username = sys.argv[3] + + # Retrieve the user from the database + session = Session() + user = session.query(User).get(user_id) + + if user: + # Update the user object + user.username = new_username + session.commit() + print("User updated successfully.") + else: + print("User not found.") + + elif command == "delete": + if len(sys.argv) != 3: + print("Usage: python user_tool.py delete [user_id]") + return + + user_id = int(sys.argv[2]) + + # Retrieve the user from the database + session = Session() + user = session.query(User).get(user_id) + + if user: + # Delete the user from the database + session.delete(user) + session.commit() + print("User deleted successfully.") + else: + print("User not found.") + + else: + print("Invalid command.") + +if __name__ == "__main__": + main() + +@app.route('/') +def homepage(): + # Create a session + session = Session() + + # Get all the classes from SQLAlchemy + classes = Base.__subclasses__() + + # Render the template with the classes + return render_template('test3.html', classes=classes) + +if __name__ == '__main__': + app.run() \ No newline at end of file diff --git a/test3.html b/test3.html new file mode 100644 index 0000000..fa1d4d5 --- /dev/null +++ b/test3.html @@ -0,0 +1,14 @@ + + +
+