Browse Source

Add comments and some change

WorldOfPets 2 years ago
parent
commit
b8878c76b9
7 changed files with 77 additions and 44 deletions
  1. 1 0
      README.md
  2. 26 20
      SharixQuery.py
  3. BIN
      __pycache__/MyQuery.cpython-39.pyc
  4. BIN
      __pycache__/SharixQuery.cpython-39.pyc
  5. BIN
      __pycache__/function.cpython-39.pyc
  6. 38 19
      api.py
  7. 12 5
      function.py

+ 1 - 0
README.md

@@ -4,5 +4,6 @@
 2. Open **cmd** and go to ```cd C:/your_path/pythoRestApi/rest_api_venv/Scripts```
 3. Entered the following commands ```activate.bat```, ```cd ../../``` and ```python api.py```
 
+**Libs:** ***Flask, xmpppy, psycopg2, sshtunnel, flask-jwt-extended***
 ### <a href="https://documenter.getpostman.com/view/18312872/UzBjrSwk">Documentation</a>
 

+ 26 - 20
MyQuery.py → SharixQuery.py

@@ -1,25 +1,31 @@
-from function import RestFunc
-restfunc = RestFunc()
+import this
+from function import QueryFunc
 
-class MyQuery:
+restfunc = QueryFunc()
+
+def generate_return_data(data, code):
+        return {"data":data, "httpcode":code}
+
+class SharixQuery:
+    
     def auth_query(self, request_data):
         try:
             result = restfunc.query_select('''
             SELECT * FROM rest_user
             WHERE (rest_user.name=%s OR rest_user.email=%s) AND rest_user.password=%s;
             ''', (request_data['login_email'], request_data['login_email'], request_data['password'],), True)
-            return result 
+            return generate_return_data(result, 200)
         except Exception as ex:
-            return {"msg":str(ex)}, 500
+            return {"data": {"msg":str(ex)}, "httpcode": 500}
     
     def add_query(self, request_data):
         try:
-            proverka = restfunc.query_proverka(''' 
+            check_email_login = restfunc.query_check_count(''' 
             SELECT * FROM rest_user
             WHERE rest_user.name=%s OR rest_user.email=%s;
             ''', (request_data['name'], request_data['email']))
-            if(proverka):
-                return {"msg":"User exist!"}, 400
+            if(check_email_login):
+                return generate_return_data({"msg":"User exist!"}, 400)
             else:
                 result = restfunc.query_insert('''
                 INSERT INTO rest_user (name, birthday, lastlogintime, insys, idrole, email, password) 
@@ -29,18 +35,18 @@ class MyQuery:
                     (request_data['name'], request_data['reg_date'],\
                         request_data['log_time'], request_data['in_sys'],\
                             request_data['role_id'], request_data['email'], request_data['password']))
-                return result, 201
+                return generate_return_data(result, 201)
         except Exception as ex:
-            return {"msg":str(ex)}, 500
+            return generate_return_data({"msg":str(ex)}, 500)
     
     def get_user_query(self, id):
         try:
             result = restfunc.query_select('''
             SELECT * FROM rest_user WHERE id = %s;
             ''', (id,), True)
-            return result, 200
+            return generate_return_data(result, 200)
         except Exception as ex:
-            return {"msg":str(ex)}, 500
+            return generate_return_data({"msg":str(ex)}, 500)
     
     def get_all_user_query(self):
         try:
@@ -50,9 +56,9 @@ class MyQuery:
             WHERE rest_user.idrole = rest_role.id
             ORDER BY id ASC;
             ''', (), False)
-            return result, 200
+            return generate_return_data(result, 200)
         except Exception as ex:
-            return {"msg":str(ex)}, 500
+            return generate_return_data({"msg":str(ex)}, 500)
     
     def delete_user_query(self, request_data):
         try:
@@ -61,11 +67,11 @@ class MyQuery:
             WHERE id = %s;
             ''', (request_data['id'],))
             if(result):
-                return {"msg":"Successful removal!"}, 200
+                return generate_return_data({"msg":"Successful delete!"}, 200)
             else:
-                return {"msg":"User does not exist!"}, 400
+                return generate_return_data({"msg":"User does not exist!"}, 400)
         except Exception as ex:
-            return {"msg":str(ex)}, 500
+            return generate_return_data({"msg":str(ex)}, 500)
     
     def update_user_query(self, request_data, id):
         try:
@@ -75,9 +81,9 @@ class MyQuery:
             WHERE id = %s;
             ''', (request_data['name'], id))
             if(result):
-                return {"msg":"Successful update!"}, 200
+                return {"data": {"msg":"Successful update!"}, "httpcode": 200}
             else:
-                return {"msg":"User does not exist!"}, 400
+                return generate_return_data({"msg":"User does not exist!"}, 400)
         except Exception as ex:
-            return {"msg":str(ex)}, 500
+            return generate_return_data({"msg":str(ex)}, 500)
             

BIN
__pycache__/MyQuery.cpython-39.pyc


BIN
__pycache__/SharixQuery.cpython-39.pyc


BIN
__pycache__/function.cpython-39.pyc


+ 38 - 19
api.py

@@ -4,72 +4,91 @@ from flask_jwt_extended import JWTManager, jwt_required, get_jwt_identity, creat
 from datetime import timedelta
 
 from config import Config
-from MyQuery import MyQuery
+from SharixQuery import SharixQuery
 #from OpenSSL import SSL
 
 #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 = MyQuery()
+
+#Инициализация класс для запросов к базе данны
+db_query = SharixQuery()
+#Инициализация Flask
 app = Flask(__name__)
+#Добавление секртного слова для шифрования JWT
 app.config.from_object(Config)
+#Инициализация класса шифрования
 jwt = JWTManager(app)
 
-#Генерация токена
-def gen_token(id, minut):
-    token = {"access_token" : create_access_token(identity=id, expires_delta=timedelta(minutes=minut))}
+#Переменные чтобы не ошибиться
+data = 'data'
+code = 'httpcode'
+
+#Генерация токена (id - данные которые шифруются, min - время действия токена)
+#Используются при авторизации или регистрации (возможно выдавать и при других обстоятельствах)
+def gen_token(id, min):
+    token = {"access_token" : create_access_token(identity=id, expires_delta=timedelta(minutes=min))}
     return jsonify(token)
+#Ошибка сервера (возвращает ошибку и код ошибки)
+def err_mes(ex):
+    return jsonify({"msg":str(ex)}), 500
 
 #Авторизация пользователя
 @app.route('/auth', methods=['POST'])
 def post_auth():
     try:
         result = db_query.auth_query(request.get_json())
-        return gen_token(result['id'], 5), 200
+        return gen_token(result[data]['id'], 5), result[code]
     except Exception as ex:
-        return jsonify({"msg":str(ex)}), 500    
+        return err_mes(ex)   
+
 #Добавление пользователя и проверка на сходства
 @app.route('/adduser', methods=['POST'])
 def get_add():
     try:
         result = db_query.add_query(request.get_json())
-        return jsonify(result[0]), result[1]
+        return jsonify(result[data]), result[code]
     except Exception as ex:
-        return jsonify({"msg":str(ex)}), 500
+        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[0]), result[1]
+        return jsonify(result[data]), result[code]
     except Exception as ex:
-        return jsonify({"msg":str(ex)}), 500
+        return err_mes(ex) 
+
 #Запрос на получение данных всех пользователей
 @app.route('/users', methods=['GET'])
 def get_show_user():
     try:
         result = db_query.get_all_user_query()
-        return jsonify(result[0]), result[1]
+        return jsonify(result[data]), result[code]
     except Exception as ex:
-        return jsonify({"msg":str(ex)}), 500
+        return err_mes(ex) 
+
 #Удаление пользователя
 @app.route('/deleteuser', methods=['POST'])
 def delete_user():
     try:
         result = db_query.delete_user_query(request.get_json())
-        return jsonify(result[0]), result[1]
+        return jsonify(result[data]), result[code]
     except Exception as ex:
-        return jsonify({"msg":str(ex)}), 500
+        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[0]), result[1]
+        return jsonify(result[data]), result[code]
     except Exception as ex:
-        return jsonify({"msg":str(ex)}), 500
+        return err_mes(ex) 
+
 #Отправка сообщения через XMPP
 @app.route('/testmessage', methods=['POST'])
 def send_mess():
@@ -78,8 +97,8 @@ def send_mess():
         for to in request_data['to']:
             cli.send_message(request_data['from'], request_data['password'], to, request_data['message'])
         return jsonify({"msg":"Succes send!"}), 200
-    except:
-        return jsonify({"msg":"Server error!"}), 500
+    except Exception as ex:
+        return err_mes(ex) 
 
 
 if __name__ == '__main__':

+ 12 - 5
function.py

@@ -1,7 +1,10 @@
 from connect import connect
 
 conn = connect()
-class RestFunc:
+class QueryFunc:
+    #Функция обработки SELECT запросов к бд
+    #Принимает запрос, аргументы которые предаются в запрос. 
+    #Последний параметр отвечает за возврат или одной записи или множества(по умолчанию).
     def query_select(self, query, args=(), one=False):
         try:
             with conn.cursor() as cursor:
@@ -11,7 +14,9 @@ class RestFunc:
                 return (r[0] if r else None) if one else r
         except Exception as ex:
             return {"msg":str(ex)}
-
+    #Функция обработки INSERT запросов к бд
+    #Принимает запрос и аргументы
+    #Возвращает значение первого столбца добавленной записи
     def query_insert(self, query, args=()):
         try:
             with conn.cursor() as cursor:
@@ -20,7 +25,9 @@ class RestFunc:
                 return cursor.fetchone()[0]
         except Exception as ex:
             return {"msg":str(ex)}
-
+    #Функция обработки DELETE и UPDATE запросов к бд
+    #Принимает запрос и аргументы
+    #Возвращает истину или ложь в зависимости от результата запроса
     def query_delete_update(self, query, args=()):
         try:
             with conn.cursor() as cursor:
@@ -31,8 +38,8 @@ class RestFunc:
             return False
         except: 
             return False
-
-    def query_proverka(self, query, args=()):
+    #Функция возвращающая истину, если в сущности существет запись
+    def query_check_count(self, query, args=()):
         try:
             with conn.cursor() as cursor:
                 cursor.execute(query, args)