├── 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 | | Name |
17 | Email Address |
18 |
19 |
20 |
21 |
22 |
23 | {% for use in myuser %}
24 |
25 | | {{use[0]}} |
26 | {{use[1]}} |
27 |
28 | {% endfor %}
29 |
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 |
52 |
53 |
54 |
55 |
56 |

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 |
--------------------------------------------------------------------------------