|
@@ -1,24 +1,42 @@
|
|
|
-
|
|
|
-from flask import Flask, jsonify, request
|
|
|
+from flask import Flask, jsonify, request, json
|
|
|
+from types import SimpleNamespace
|
|
|
from xmpp import cli
|
|
|
from flask_jwt_extended import JWTManager, jwt_required, get_jwt_identity, create_access_token
|
|
|
-from datetime import timedelta
|
|
|
+from datetime import date, timedelta, datetime
|
|
|
|
|
|
-from api_config import Config
|
|
|
-from BackendApi.SharixQuery import SharixQuery
|
|
|
-#from OpenSSL import SSL
|
|
|
+import sqlalchemy as db
|
|
|
+from sqlalchemy import create_engine, Integer, Date, DateTime, Column, String, Boolean, or_
|
|
|
+from sqlalchemy.orm import sessionmaker, scoped_session, declarative_base
|
|
|
+from BackendApi.connect import connect
|
|
|
|
|
|
-#context = SSL.Context(SSL.PROTOCOL_TLSv1_2)
|
|
|
-#context.use_privatekey_file('server.key')
|
|
|
-#context.use_certificate_file('server.crt')
|
|
|
-### ssl_context=context in run
|
|
|
|
|
|
-#Инициализация класс для запросов к базе данны
|
|
|
-db_query = SharixQuery()
|
|
|
-#Инициализация Flask
|
|
|
+from api_config import Config
|
|
|
+
|
|
|
app = Flask(__name__)
|
|
|
#Добавление секртного слова для шифрования JWT
|
|
|
app.config.from_object(Config)
|
|
|
+
|
|
|
+engine = create_engine(connect())
|
|
|
+session = scoped_session(sessionmaker(
|
|
|
+ autocommit=False,
|
|
|
+ autoflush=False,
|
|
|
+ bind=engine
|
|
|
+))
|
|
|
+Base = declarative_base()
|
|
|
+
|
|
|
+class UserModel(Base):
|
|
|
+ __tablename__ = 'rest_user'
|
|
|
+ id = Column(Integer, primary_key=True, autoincrement=True, )
|
|
|
+ name = Column(String, unique=True, nullable=False)
|
|
|
+ birthday = Column(Date)
|
|
|
+ insys = Column(Boolean)
|
|
|
+ idrole = Column(Integer)
|
|
|
+ lastlogintime = Column(DateTime)
|
|
|
+ email = Column(String, unique=True, nullable=False)
|
|
|
+ password = Column(String)
|
|
|
+
|
|
|
+ def as_dict(self):
|
|
|
+ return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
|
|
#Инициализация класса шифрования
|
|
|
jwt = JWTManager(app)
|
|
|
|
|
@@ -34,40 +52,52 @@ def gen_token(id, min):
|
|
|
#Ошибка сервера (возвращает ошибку и код ошибки)
|
|
|
def err_mes(ex):
|
|
|
return jsonify({"msg":str(ex)}), 500
|
|
|
+def data_for_model(data):
|
|
|
+ return json.loads(data, object_hook=lambda d: SimpleNamespace(**d))
|
|
|
|
|
|
#Авторизация пользователя
|
|
|
-@app.route('/auth', methods=['POST'])
|
|
|
-def post_auth():
|
|
|
- try:
|
|
|
- result = db_query.auth_query(request.get_json())
|
|
|
- return gen_token(result[data]['id'], 5), result[code]
|
|
|
- except Exception as ex:
|
|
|
- return err_mes(ex)
|
|
|
+# @app.route('/auth', methods=['POST'])
|
|
|
+# def post_auth():
|
|
|
+# try:
|
|
|
+# result = db_query.auth_query(request.get_json())
|
|
|
+# return gen_token(result[data]['id'], 5), result[code]
|
|
|
+# except Exception as ex:
|
|
|
+# return err_mes(ex)
|
|
|
|
|
|
#Добавление пользователя и проверка на сходства
|
|
|
@app.route('/adduser', methods=['POST'])
|
|
|
-def get_add():
|
|
|
+def add_user():
|
|
|
try:
|
|
|
- result = db_query.add_query(request.get_json())
|
|
|
- return jsonify(result[data]), result[code]
|
|
|
+ user = UserModel(**request.get_json())
|
|
|
+ chek = session.query(UserModel).filter(or_(UserModel.email==user.email, UserModel.name==user.name)).first()
|
|
|
+ if chek is None:
|
|
|
+ session.add(user)
|
|
|
+ session.flush()
|
|
|
+ session.commit()
|
|
|
+ return str(user.id), 200
|
|
|
+ else:
|
|
|
+ return "User exist", 400
|
|
|
except Exception as ex:
|
|
|
- err_mes(ex)
|
|
|
+ return err_mes(ex)
|
|
|
|
|
|
#Запрос на получение данных об одном пользователе
|
|
|
-@app.route('/user/<int:id>', methods=['GET'])
|
|
|
-def get_user(id):
|
|
|
- try:
|
|
|
- result = db_query.get_user_query(id)
|
|
|
- return jsonify(result[data]), result[code]
|
|
|
- except Exception as ex:
|
|
|
- return err_mes(ex)
|
|
|
+# @app.route('/user/<int:id>', methods=['GET'])
|
|
|
+# def get_user(id):
|
|
|
+# try:
|
|
|
+# result = db_query.get_user_query(id)
|
|
|
+# return jsonify(result[data]), result[code]
|
|
|
+# except Exception as ex:
|
|
|
+# return err_mes(ex)
|
|
|
|
|
|
#Запрос на получение данных всех пользователей
|
|
|
@app.route('/users', methods=['GET'])
|
|
|
def get_show_user():
|
|
|
try:
|
|
|
- result = db_query.get_all_user_query()
|
|
|
- return jsonify(result[data]), result[code]
|
|
|
+ data = []
|
|
|
+ for user in session.query(UserModel).all():
|
|
|
+ data.append(user.as_dict())
|
|
|
+ #result = db_query.get_all_user_query()
|
|
|
+ return jsonify(data), 200
|
|
|
except Exception as ex:
|
|
|
return err_mes(ex)
|
|
|
|
|
@@ -75,20 +105,24 @@ def get_show_user():
|
|
|
@app.route('/deleteuser', methods=['POST'])
|
|
|
def delete_user():
|
|
|
try:
|
|
|
- result = db_query.delete_user_query(request.get_json())
|
|
|
- return jsonify(result[data]), result[code]
|
|
|
+ user = UserModel(**request.get_json())
|
|
|
+ session.query(UserModel).filter_by(id=user.id).delete()
|
|
|
+ session.commit()
|
|
|
+ return "Success delete"
|
|
|
+ #result = db_query.delete_user_query(request.get_json())
|
|
|
+ #return jsonify(result[data]), result[code]
|
|
|
except Exception as ex:
|
|
|
return err_mes(ex)
|
|
|
|
|
|
#Обновление данных пользователя
|
|
|
-@app.route('/updateuser', methods=['POST'])
|
|
|
-@jwt_required()
|
|
|
-def test_api():
|
|
|
- try:
|
|
|
- result = db_query.update_user_query(request.get_json(), get_jwt_identity())
|
|
|
- return jsonify(result[data]), result[code]
|
|
|
- except Exception as ex:
|
|
|
- return err_mes(ex)
|
|
|
+# @app.route('/updateuser', methods=['POST'])
|
|
|
+# @jwt_required()
|
|
|
+# def test_api():
|
|
|
+# try:
|
|
|
+# result = db_query.update_user_query(request.get_json(), get_jwt_identity())
|
|
|
+# return jsonify(result[data]), result[code]
|
|
|
+# except Exception as ex:
|
|
|
+# return err_mes(ex)
|
|
|
|
|
|
#Отправка сообщения через XMPP
|
|
|
@app.route('/testmessage', methods=['POST'])
|
|
@@ -101,16 +135,17 @@ def send_mess():
|
|
|
except Exception as ex:
|
|
|
return err_mes(ex)
|
|
|
|
|
|
-@app.route('/testaddcarlog', methods=['POST'])
|
|
|
-def test_add_car_log():
|
|
|
- try:
|
|
|
- result = db_query.add_car_log(request.get_json())
|
|
|
- return gen_token(result[data], 5), result[code]
|
|
|
- except Exception as ex:
|
|
|
- return err_mes(ex)
|
|
|
+# @app.route('/testaddcarlog', methods=['POST'])
|
|
|
+# def test_add_car_log():
|
|
|
+# try:
|
|
|
+# result = db_query.add_car_log(request.get_json())
|
|
|
+# return gen_token(result[data], 5), result[code]
|
|
|
+# except Exception as ex:
|
|
|
+# return err_mes(ex)
|
|
|
+
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
#from waitress import serve
|
|
|
#serve(app, host='127.0.0.2', port='8080')
|
|
|
- app.run(host='127.0.0.2', port='8080', debug=True, load_dotenv=True )
|
|
|
+ app.run(host='0.0.0.0', debug=True, load_dotenv=True )
|