inventory-thing/app.py

214 lines
5.1 KiB
Python

from flask import Flask, redirect, render_template, request
import utils.sql_utils as sql_utils
app = Flask(__name__)
connection = sql_utils.connect_database('ubuntu-mariadb.home','admin','password','inventory')
### main.html paths
@app.route('/user_search')
def user_search():
data = request.args.get('data')
query = f'''
SELECT u.name,u.id_num,u.assigned_asset,u.assigned_card
FROM users u
WHERE u.name like '%{data.upper()}%\''''
response = sql_utils.read_query(connection, query)
print(response)
return response
@app.route('/asset_tag_search')
def asset_tag_search():
data = request.args.get('data')
query = f'''SELECT a.asset_id, a.serial, a.model, a.category, u.name
FROM assets a
left JOIN users u ON u.assigned_asset=a.asset_id
WHERE a.asset_id = {data.upper()}'''
response = sql_utils.read_query(connection, query)
return response
@app.route('/serial_search')
def serial_search():
data = request.args.get('data')
query = f'''SELECT a.asset_id, a.serial, a.model, a.category, u.name
FROM assets a
left JOIN users u ON u.assigned_asset=a.asset_id
WHERE a.serial LIKE "{data.upper()}"'''
response = sql_utils.read_query(connection, query)
return response
@app.route('/asset_list')
def asset_list():
query = '''
select a.asset_id,a.serial,a.model,a.category,u.name
from assets a
left join users u on u.assigned_asset=a.asset_id
'''
data = sql_utils.read_query(connection,query)
return data
@app.route('/card_list')
def card_list():
query = '''
select card_number from access_cards
'''
data = sql_utils.read_query(connection,query)
data = [x[0] for x in data]
return data
@app.route('/user_list')
def user_list():
query = '''
select * from users;
'''
data = sql_utils.read_query(connection,query)
return data
### add.html paths
@app.route("/get_available_assets")
def get_available_assets():
query = '''
SELECT asset_id
FROM assets
WHERE NOT asset_id IN (
SELECT assigned_asset FROM users WHERE assigned_asset IS NOT NULL
);
'''
data = sql_utils.read_query(connection,query)
data = [x[0] for x in data]
return data
@app.route("/get_available_cards")
def get_available_cards():
query = '''
SELECT card_number
FROM access_cards
WHERE NOT card_number IN (
SELECT assigned_card FROM users WHERE assigned_card IS NOT NULL
);
'''
data = sql_utils.read_query(connection,query)
data = [x[0] for x in data]
return data
@app.route('/get_all_cards')
@app.route("/add_asset", methods=['POST'])
def add_asset():
data = request.json
query = f'''
insert into assets (asset_id,serial,model,category) values
(%(tag)s, %(serial)s, %(model)s, %(category)s)
'''
result = sql_utils.send_query(connection,query,data)
if result:
return "success"
else:
return "failure"
@app.route("/add_user",methods=['POST'])
def add_user():
data = request.json
query = f'''
insert into users (id_num,name,assigned_asset,assigned_card) values
(%(id)s, %(name)s, %(asset)s, %(card)s)
'''
result = sql_utils.send_query(connection,query,data)
if result:
return "success"
else:
return "failure"
@app.route("/add_card",methods=['POST'])
def add_card():
data = request.json
query = f'''
insert into access_cards (card_number,display_number) values
(%(card_number)s,%(display_number)s)
'''
result = sql_utils.send_query(connection, query, data);
if result:
return "success"
else:
return "failure"
@app.route("/modify_asset", methods=['POST'])
def modify_asset():
lookup = {'tag':'asset_id',
'serial':'serial',
'model':'model',
'category':'category'}
segments = []
parameters = []
data = request.json
for entry in data:
if entry == 'tag':
continue
if data[entry]:
segments.append(f'{lookup[entry]}=%s')
parameters.append(data[entry])
parameters.append(data['tag'])
query = f'''
update assets
SET {','.join(segments)}
WHERE asset_id = %s
'''
result = sql_utils.send_query(connection,query,parameters)
if result:
return "fuck you"
else:
return "fuck you too"
@app.route("/modify_user", methods=['POST'])
def modify_user():
lookup = {'id':'id_num',
'name':'name',
'asset':'assigned_asset',
'card':'assigned_card'}
segments = []
parameters = []
data = request.json
for entry in data:
if entry == 'tag':
continue
if data[entry]:
segments.append(f'{lookup[entry]}=%s')
parameters.append(data[entry])
parameters.append(data['id'])
query = f'''
update users
SET {','.join(segments)}
WHERE id_num = %s
'''
result = sql_utils.send_query(connection,query,parameters)
if result:
return "fuck you"
else:
return "fuck you too"
@app.route("/modify_card")
def modify_card():
return None
### Pages
@app.route('/add')
def add_page():
return render_template('adding.html')
@app.route("/")
def default():
return render_template('main.html')
if __name__ == '__main__':
app.run()