parent
a7554f5e43
commit
12cfc8cfb7
|
|
@ -1,211 +1,91 @@
|
||||||
import os
|
import os
|
||||||
|
from datetime import datetime
|
||||||
from flask import Flask, jsonify, request
|
from flask import Flask, jsonify, request
|
||||||
from flasgger import Swagger
|
|
||||||
from flask_sqlalchemy import SQLAlchemy
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
|
|
||||||
from models import db, User, TimeStamp
|
from models import db, User, TimeStamp
|
||||||
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
api = Swagger(app)
|
|
||||||
|
|
||||||
app.config['SECRET_KEY'] = 'dksldkkwkdkllk' # todo: os.environ['TIMESTAMP_SECRET_KEY']
|
app.config['SECRET_KEY'] = 'dksldkkwkdkllk' # todo: os.environ['TIMESTAMP_SECRET_KEY']
|
||||||
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///project.db"
|
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///project.db"
|
||||||
|
|
||||||
|
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
def index_handler():
|
def index_handler():
|
||||||
return "hallo"
|
return "hallo"
|
||||||
|
|
||||||
|
|
||||||
# USER SECTION
|
# USER SECTION
|
||||||
|
@app.route("/user/all")
|
||||||
|
def get_all_users():
|
||||||
|
users = db.session.execute(db.select(User)).scalars()
|
||||||
|
all = users.all()
|
||||||
|
return jsonify(all), 200
|
||||||
|
|
||||||
@app.route("/user/", methods=['POST'])
|
|
||||||
def create_user():
|
@app.route("/user/<int:id>")
|
||||||
"""Endpoint returning success of operation
|
def get_user_by_id(id):
|
||||||
---
|
user = db.session.execute(db.select(User)).scalar()
|
||||||
parameters:
|
return user.name, 200
|
||||||
- name: user id to delete
|
|
||||||
in: path
|
|
||||||
type: string
|
@app.route("/user/new", methods=['POST'])
|
||||||
required: true
|
def create_new_user():
|
||||||
- name: user
|
user = User(name=request.form.get('name'), surname=request.form.get('surname'),
|
||||||
in: path
|
email=request.form.get('email'), mtan=request.form.get('mtan'))
|
||||||
type: string
|
|
||||||
required: true
|
|
||||||
definitions:
|
|
||||||
Palette:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
palette_name:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/Color'
|
|
||||||
Color:
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of colors (may be filtered by palette)
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/Palette'
|
|
||||||
examples:
|
|
||||||
rgb: ['red', 'green', 'blue']
|
|
||||||
"""
|
|
||||||
user = User(
|
|
||||||
name=request.form["username"],
|
|
||||||
email=request.form["email"],
|
|
||||||
)
|
|
||||||
db.session.add(user)
|
db.session.add(user)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
return {'success': 'ok'}, 200
|
||||||
|
|
||||||
|
|
||||||
@app.route("/user/<int:user_id>", methods=['GET'])
|
@app.route("/user/update/<int:id>", methods=['POST'])
|
||||||
def get_user_by_id(user_id):
|
def update_user_by_id(id):
|
||||||
"""Endpoint returning user by id
|
print(id)
|
||||||
---
|
user = db.session.execute(db.select(User).where(User.id == id)).scalars().one()
|
||||||
parameters:
|
user.name = request.form.get('name')
|
||||||
- name: user_id
|
user.email = request.form.get('email')
|
||||||
type: integer
|
print(user.name)
|
||||||
in: form
|
db.session.commit()
|
||||||
required: true
|
return {'success': 'ok'}, 200
|
||||||
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of properties of a user by given id
|
|
||||||
"""
|
|
||||||
user = db.get_or_404(User, user_id)
|
|
||||||
return jsonify(str(user))
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/user/<int:user_id>", methods=['DELETE'])
|
|
||||||
def delete_user_by_id(user_id):
|
|
||||||
"""Endpoint returning success of operation
|
|
||||||
---
|
|
||||||
parameters:
|
|
||||||
- name: user id to delete
|
|
||||||
in: path
|
|
||||||
type: string
|
|
||||||
enum: ['all', 'rgb', 'cmyk']
|
|
||||||
required: true
|
|
||||||
default: all
|
|
||||||
definitions:
|
|
||||||
Palette:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
palette_name:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/Color'
|
|
||||||
Color:
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of colors (may be filtered by palette)
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/Palette'
|
|
||||||
examples:
|
|
||||||
rgb: ['red', 'green', 'blue']
|
|
||||||
"""
|
|
||||||
return "Delete"
|
|
||||||
|
|
||||||
|
|
||||||
#END USER SECTION
|
#END USER SECTION
|
||||||
|
|
||||||
#TIMESTAMP SECTION
|
#TIMESTAMP SECTION
|
||||||
@app.route("/timestamp/<int:user_id>", methods=['POST'])
|
@app.route("/")
|
||||||
def create_timestamp(user_id):
|
def get_last_timestamp_by_id(id):
|
||||||
"""Endpoint returning success of operation
|
timestamp = db.session.execute(db.select(TimeStamp).where(TimeStamp.user_id == id).order).scalars().one()
|
||||||
---
|
return timestamp, 200
|
||||||
parameters:
|
|
||||||
- name: user id to delete
|
|
||||||
in: path
|
|
||||||
type: string
|
|
||||||
enum: ['all', 'rgb', 'cmyk']
|
|
||||||
required: true
|
|
||||||
default: all
|
|
||||||
definitions:
|
|
||||||
Palette:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
palette_name:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/Color'
|
|
||||||
Color:
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of colors (may be filtered by palette)
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/Palette'
|
|
||||||
examples:
|
|
||||||
rgb: ['red', 'green', 'blue']
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/timestamp/<int:user_id>", methods=['GET'])
|
@app.route("/timestamp/new/<int:id>", methods=['POST'])
|
||||||
def get_timestamps_by_id(user_id):
|
def put_timestamp_by_id(id):
|
||||||
"""Endpoint returning user by 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)
|
||||||
parameters:
|
db.session.commit()
|
||||||
- name: user id
|
return {"success": "ok"}, 200
|
||||||
in: path
|
|
||||||
type: integer
|
|
||||||
required: true
|
|
||||||
definitions:
|
|
||||||
Palette:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
palette_name:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/Color'
|
|
||||||
Color:
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of properties of a user by given id
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/Palette'
|
|
||||||
examples:
|
|
||||||
rgb: ['red', 'green', 'blue']
|
|
||||||
"""
|
|
||||||
return str(user_id)
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/timestamp/<int:user_id>", methods=['DELETE'])
|
@app.route("/timestamp/new/<int:mtan>", methods=['POST'])
|
||||||
def delete_timestamps_by_id(user_id):
|
def put_timestamp_by_mtan(mtan):
|
||||||
"""Endpoint returning success of operation
|
timestamp = TimeStamp()
|
||||||
---
|
|
||||||
parameters:
|
|
||||||
- name: user id to delete
|
@app.route("/timestamp/all/<int:id>")
|
||||||
in: path
|
def get_timestamps_by_id(id):
|
||||||
type: string
|
timestamps = db.session.execute(db.select(TimeStamp).where(TimeStamp.user_id == id)).scalars()
|
||||||
enum: ['all', 'rgb', 'cmyk']
|
return timestamps.all(), 200
|
||||||
required: true
|
|
||||||
default: all
|
|
||||||
definitions:
|
|
||||||
Palette:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
palette_name:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/definitions/Color'
|
|
||||||
Color:
|
|
||||||
type: string
|
|
||||||
responses:
|
|
||||||
200:
|
|
||||||
description: A list of colors (may be filtered by palette)
|
|
||||||
schema:
|
|
||||||
$ref: '#/definitions/Palette'
|
|
||||||
examples:
|
|
||||||
rgb: ['red', 'green', 'blue']
|
|
||||||
"""
|
|
||||||
return "Delete"
|
|
||||||
|
|
||||||
#END TIMESTAMP SECTION
|
#END TIMESTAMP SECTION
|
||||||
|
#RFID SECTION
|
||||||
|
|
||||||
|
|
||||||
|
#END RFID SECTION
|
||||||
|
|
||||||
db.init_app(app)
|
db.init_app(app)
|
||||||
|
|
||||||
with app.app_context():
|
with app.app_context():
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,20 @@ db = SQLAlchemy()
|
||||||
class User(db.Model):
|
class User(db.Model):
|
||||||
id = sa.Column(sa.Integer, primary_key=True)
|
id = sa.Column(sa.Integer, primary_key=True)
|
||||||
name = sa.Column(sa.String)
|
name = sa.Column(sa.String)
|
||||||
|
surname = sa.Column(sa.String)
|
||||||
email = sa.Column(sa.String)
|
email = sa.Column(sa.String)
|
||||||
|
mtan = sa.Column(sa.String, unique=True)
|
||||||
|
|
||||||
|
|
||||||
class TimeStamp(db.Model):
|
class TimeStamp(db.Model):
|
||||||
id = sa.Column(sa.Integer, primary_key=True)
|
id = sa.Column(sa.Integer, primary_key=True)
|
||||||
user_id = sa.ForeignKey(User.id)
|
user_id = sa.ForeignKey(User.id)
|
||||||
create = sa.Column(sa.TIMESTAMP) # create time
|
create = sa.Column(sa.TIMESTAMP) # create time
|
||||||
timestamp = sa.Column(sa.TIMESTAMP) # insertet by user
|
timestamp = sa.Column(sa.TIMESTAMP) # inserted by user
|
||||||
|
on_work = sa.Column(sa.Boolean) # working time?
|
||||||
|
|
||||||
|
|
||||||
|
class RFIDNumber(db.Model):
|
||||||
|
id = sa.Column(sa.Integer, primary_key=True)
|
||||||
|
user_id = sa.ForeignKey(User.id)
|
||||||
|
number = sa.Column(sa.String)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue