├── requirements.txt ├── templates ├── users.html └── index.html ├── .gitignore └── app.py /requirements.txt: -------------------------------------------------------------------------------- 1 | flask 2 | flask_mysqldb 3 | mysql-connector-python 4 | -------------------------------------------------------------------------------- /templates/users.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Form 8 | 9 |

10 |

Users Accounts Details

11 |

12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | {% for use in myuser %} 24 | 25 | 26 | 27 | 28 | {% endfor %} 29 |
NameEmail Address
{{use[0]}}{{use[1]}}
30 | 31 | -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Form 10 | 11 | 12 | 18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | 27 |

Sign up

28 | 29 |
30 | 31 |
32 | 33 |
34 | 35 | 36 |
37 |
38 | 39 |
40 | 41 |
42 | 43 | 44 |
45 |
46 | 47 |
48 | 49 |
50 | 51 |
52 | 53 |
54 |
55 | 56 | Sample image 58 | 59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | 68 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/#use-with-ide 110 | .pdm.toml 111 | 112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 113 | __pypackages__/ 114 | 115 | # Celery stuff 116 | celerybeat-schedule 117 | celerybeat.pid 118 | 119 | # SageMath parsed files 120 | *.sage.py 121 | 122 | # Environments 123 | .env 124 | .venv 125 | env/ 126 | venv/ 127 | ENV/ 128 | env.bak/ 129 | venv.bak/ 130 | 131 | # Spyder project settings 132 | .spyderproject 133 | .spyproject 134 | 135 | # Rope project settings 136 | .ropeproject 137 | 138 | # mkdocs documentation 139 | /site 140 | 141 | # mypy 142 | .mypy_cache/ 143 | .dmypy.json 144 | dmypy.json 145 | 146 | # Pyre type checker 147 | .pyre/ 148 | 149 | # pytype static type analyzer 150 | .pytype/ 151 | 152 | # Cython debug symbols 153 | cython_debug/ 154 | 155 | # PyCharm 156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 158 | # and can be added to the global gitignore or merged into this file. For a more nuclear 159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 160 | #.idea/ 161 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request,jsonify 2 | from flask_mysqldb import MySQL 3 | 4 | app= Flask(__name__) 5 | mysql = MySQL(app) 6 | 7 | 8 | app.config ['MYSQL_HOST'] = 'localhost' 9 | app.config ['MYSQL_USER'] = 'root' 10 | app.config ['MYSQL_PASSWORD'] = "123456" 11 | app.config ['MYSQL_DB'] = 'order_management_system' 12 | 13 | @app.route("/", methods = ['GET','POST']) 14 | def index(): 15 | if request.method == 'POST': 16 | username= request.form['username'] 17 | email= request.form['email'] 18 | 19 | cur = mysql.connection.cursor() 20 | cur.execute("INSERT INTO users (name,email) values (%s,%s)",(username,email)) 21 | mysql.connection.commit() 22 | cur.close() 23 | return "Successfully updated Record in Database" 24 | return render_template('index.html') 25 | 26 | @app.route("/users") 27 | def getusers(): 28 | cur = mysql.connection.cursor() 29 | user = cur.execute("SELECT * FROM users") 30 | if user >0: 31 | userDetails = cur.fetchall() 32 | return render_template('users.html', myuser=userDetails) 33 | 34 | # Sample data for orders 35 | orders = [] 36 | 37 | @app.route('/order', methods=['GET', 'POST']) 38 | def manage_orders(): 39 | if request.method == 'GET': 40 | # Return a list of orders 41 | return jsonify(orders) 42 | elif request.method == 'POST': 43 | # Create a new order 44 | data = request.json 45 | if 'customer' in data and 'product' in data and 'quantity' in data: 46 | new_order = { 47 | 'customer': data['customer'], 48 | 'product': data['product'], 49 | 'quantity': data['quantity'] 50 | } 51 | orders.append(new_order) 52 | return jsonify({'message': 'Order created successfully'}), 201 53 | else: 54 | return jsonify({'error': 'Incomplete order data'}), 400 55 | 56 | orders = [ 57 | { 58 | "customer": "Ahmed", 59 | "product": "product1", 60 | "quantity": "3" 61 | }, 62 | { 63 | "customer": "Ahsan", 64 | "product": "product1", 65 | "quantity": "3" 66 | }, 67 | { 68 | "customer": "Aslam", 69 | "product": "product3", 70 | "quantity": "4" 71 | }, 72 | {'customer': 'Jane Smith', 73 | 'product_name': 'Widget B', 74 | 'quantity': "3", 75 | }, 76 | ] 77 | 78 | # Endpoint to get all orders 79 | @app.route('/allorders', methods=['GET']) 80 | def get_all_orders(): 81 | return jsonify({'orders': orders}) 82 | 83 | 84 | 85 | 86 | # Sample product data (you would typically fetch this from a database) 87 | products = [ 88 | {"id": 1, "name": "Product 1", "price": 10.99}, 89 | {"id": 2, "name": "Product 2", "price": 19.99}, 90 | {"id": 3, "name": "Product 3", "price": 5.99}, 91 | ] 92 | 93 | @app.route('/getallproducts', methods=['GET']) 94 | def get_all_products(): 95 | return jsonify(products) 96 | 97 | # Sample data to store products 98 | 99 | # Endpoint to add a product 100 | @app.route('/addproduct', methods=['POST']) 101 | def add_product(): 102 | 103 | # Parse JSON data from the request 104 | data = request.get_json() 105 | 106 | # Validate the request data 107 | if 'name' not in data or 'price' not in data: 108 | return jsonify({"error": "Name and price are required"}), 400 109 | 110 | # Create a new product 111 | product = { 112 | "id":data["id"], 113 | 'name': data['name'], 114 | 'price': data['price'] 115 | } 116 | products.append(product) 117 | 118 | # Add the product to the list 119 | products.append(product) 120 | 121 | return jsonify({"message": "Product added successfully"}), 201 122 | 123 | #update and delete a product 124 | 125 | 126 | 127 | # Endpoint to update a product 128 | @app.route('/updateproduct/', methods=['PUT']) 129 | 130 | def update_product(product_id): 131 | id=product_id 132 | if id not in products: 133 | return jsonify({"error": "Product not found"}), 404 134 | 135 | data = request.get_json() 136 | if "name" in data: 137 | products[id]["name"] = data["name"] 138 | if "price" in data: 139 | products[id]["price"] = data["price"] 140 | 141 | return jsonify(products[id]) 142 | 143 | # Endpoint to delete a product 144 | @app.route('/deleteproduct/', methods=['DELETE']) 145 | def delete_product(product_id): 146 | if product_id not in products: 147 | return jsonify({"error": "Product not found"}), 404 148 | 149 | del products[product_id] 150 | return jsonify({"message": "Product deleted"}) 151 | 152 | 153 | if __name__ == "__main__": 154 | app.run(debug=True) 155 | --------------------------------------------------------------------------------