162 lines
5.4 KiB
Python
162 lines
5.4 KiB
Python
import os
|
|
from datetime import datetime
|
|
from flask import Flask, jsonify, request
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
|
|
from models import db, User, TimeStamp, IDNumber
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
app.config['SECRET_KEY'] = 'dksldkkwkdkllk' # todo: os.environ['TIMESTAMP_SECRET_KEY']
|
|
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///project.db"
|
|
|
|
|
|
@app.route("/")
|
|
def index_handler():
|
|
return "hallo"
|
|
|
|
|
|
# USER SECTION
|
|
@app.route("/user/all")
|
|
def get_all_users():
|
|
users = db.session.execute(db.select(User)).scalars()
|
|
all = users.all()
|
|
all_user = {}
|
|
for user in all:
|
|
usr = {'id': user.id, 'name': user.name, 'surname': user.surname, 'email': user.email, 'mtan': user.mtan, 'active': user.active}
|
|
all_user[user.id] = usr
|
|
return {'users': all_user}, 200
|
|
|
|
|
|
@app.route("/user/status/<int:id>")
|
|
def get_user_status_by_id(id):
|
|
user = db.session.execute(db.select(TimeStamp).where(TimeStamp.user_id == id).order_by(TimeStamp.create.desc())).scalar()
|
|
return {'id': id, 'on_work': user.on_work}
|
|
|
|
|
|
@app.route("/user/<int:id>")
|
|
def get_user_by_id(id):
|
|
user = db.session.execute(db.select(User).where(User.id == id)).scalar()
|
|
usr = {'id': user.id, 'name': user.name, 'surname': user.surname, 'email': user.email, 'mtan': user.mtan, 'active': user.active}
|
|
return {'user': usr}, 200
|
|
|
|
|
|
@app.route("/user/new", methods=['POST'])
|
|
def create_new_user():
|
|
user = User(name=request.json['name'], surname=request.json['surname'],
|
|
email=request.json['email'], mtan=request.json['mtan'], active=request.json['active'])
|
|
db.session.add(user)
|
|
db.session.commit()
|
|
return {'success': 'ok'}, 200
|
|
|
|
|
|
@app.route("/user/update/<int:id>", methods=['POST'])
|
|
def update_user_by_id(id):
|
|
user = db.session.execute(db.select(User).where(User.id == id)).scalars().one()
|
|
user.name = request.json['name']
|
|
user.surname = request.json['surname']
|
|
user.email = request.json['email']
|
|
user.mtan = request.json['mtan']
|
|
user.active = request.json['active']
|
|
|
|
db.session.commit()
|
|
return {'success': 'ok'}, 200
|
|
|
|
|
|
#END USER SECTION
|
|
|
|
#TIMESTAMP SECTION
|
|
@app.route("/timestamp/last/<int:id>")
|
|
def get_last_timestamp_by_id(id):
|
|
timestamps = db.session.execute(db.select(TimeStamp).where(TimeStamp.user_id == id).order_by(TimeStamp.id.desc()).limit(5)).scalars().all()
|
|
ss = []
|
|
for ts in timestamps:
|
|
ss.append({'id': ts.id, 'user_id': ts.user_id, 'created': ts.create, 'timestamp': ts.timestamp,
|
|
'on_work': ts.on_work})
|
|
return {'timestamps': ss}, 200
|
|
|
|
|
|
@app.route("/timestamp/new/mtan/<string:mtan>", methods=['POST'])
|
|
def put_timestamp_by_mtan(mtan):
|
|
id = db.session.execute(db.select(User).where(User.mtan == mtan)).scalars().one().id
|
|
timestamp = TimeStamp(user_id=id, create=datetime.now(),
|
|
timestamp=datetime.strptime(request.json.get('timestamp'), '%Y-%m-%d %H:%M:%S.%f'),
|
|
on_work=request.json.get('on_work'))
|
|
db.session.add(timestamp)
|
|
db.session.commit()
|
|
return {"success": "ok"}, 200
|
|
|
|
|
|
@app.route("/timestamp/new/idnumber/<string:idnum>", methods=['POST'])
|
|
def put_timestamp_by_idnumber(idnum):
|
|
id = db.session.execute(db.select(IDNumber).where(IDNumber.number == idnum)).scalars().one().id
|
|
timestamp = TimeStamp(user_id=id, create=datetime.now(),
|
|
timestamp=datetime.strptime(request.json.get('timestamp'), '%Y-%m-%d %H:%M:%S.%f'),
|
|
on_work=request.json.get('on_work'))
|
|
db.session.add(timestamp)
|
|
db.session.commit()
|
|
return {"success": "ok"}, 200
|
|
|
|
|
|
@app.route("/timestamp/new/id/<int:id>", methods=['POST'])
|
|
def put_timestamp_by_id(id):
|
|
timestamp = TimeStamp(user_id=id, create=datetime.now(), timestamp=datetime.strptime(request.form.get('timestamp'), '%Y/%m/%d %H:%M:%S'))
|
|
db.session.add(timestamp)
|
|
db.session.commit()
|
|
return {"success": "ok"}, 200
|
|
|
|
|
|
@app.route("/timestamps/all/<int:id>")
|
|
def get_timestamps_by_user_id(id):
|
|
timestamps = db.session.execute(db.select(TimeStamp).where(TimeStamp.user_id == id).order_by(TimeStamp.timestamp.desc())).scalars()
|
|
tss = []
|
|
for ts in timestamps:
|
|
tss.append( {'id': ts.id, 'user_id': ts.user_id, 'created': ts.create, 'timestamp': ts.timestamp, 'on_work': ts.on_work})
|
|
return {'timestamps': tss}, 200\
|
|
|
|
|
|
|
|
@app.route("/timestamps/all")
|
|
def get_all_timestamps():
|
|
timestamps = db.session.execute(db.select(TimeStamp)).scalars().all()
|
|
tss = []
|
|
for ts in timestamps:
|
|
tss.append( {'id': ts.id, 'user_id': ts.user_id, 'created': ts.create, 'timestamp': ts.timestamp, 'on_work': ts.on_work})
|
|
return {'timestamps': tss}, 200
|
|
|
|
|
|
@app.route("/time/today/<int:id>")
|
|
def get_time_today_by_user_id(id):
|
|
today = datetime.today().date()
|
|
timestamps = db.session.execute(db.select(TimeStamp).where(TimeStamp.user_id == id).where(TimeStamp.timestamp >= today)).scalars().all()
|
|
print(timestamps)
|
|
worktime = 0
|
|
pausetime = 0
|
|
for ts in timestamps:
|
|
pass
|
|
|
|
# END TIMESTAMP SECTION
|
|
|
|
# ID SECTION
|
|
@app.route("/user/idnumber")
|
|
def get_user_by_idnumber(idnumber):
|
|
id_num = db.session.execute(db.select(IDNumber).where(IDNumber.id == idnumber)).scalars().one()
|
|
id = id_num.user_id
|
|
user = db.session.execute(db.select(User).where(User.id == id))
|
|
|
|
# END ID SECTION
|
|
|
|
# VACATION SECTION
|
|
|
|
# END VACATION SECTION
|
|
|
|
|
|
db.init_app(app)
|
|
|
|
with app.app_context():
|
|
db.create_all()
|
|
|
|
if __name__ == '__main__':
|
|
app.run(debug=True)
|