From bce22373031dd3a8d2a0a4311bd0a20c3a722ede Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Y=C3=BBki=20Vachot?= Date: Tue, 11 Jan 2022 17:57:40 +0100 Subject: [PATCH] Update: Docker Compose (without Frontend now) --- backend/Dockerfile | 7 ++++ backend/app.py | 1 + backend/application/__init__.py | 6 ++- backend/application/api_functions.py | 10 ----- backend/application/routes.py | 2 +- backend/requirements.txt | 18 ++++---- backend/test/fictive_logs.py | 59 --------------------------- backend/test/fictive_users.py | 59 --------------------------- backend/test/initialisation.py | 6 --- backend/test/test_db.py | 61 ---------------------------- backend/test/test_routes.py | 53 ------------------------ docker-compose.yml | 53 +++++++++++++----------- 12 files changed, 54 insertions(+), 281 deletions(-) create mode 100644 backend/Dockerfile delete mode 100644 backend/test/fictive_logs.py delete mode 100644 backend/test/fictive_users.py delete mode 100644 backend/test/initialisation.py delete mode 100644 backend/test/test_db.py delete mode 100644 backend/test/test_routes.py diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..7d9dfa6 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,7 @@ +FROM python:latest +WORKDIR /data/backend +COPY requirements.txt requirements.txt +RUN pip install --upgrade pip +RUN pip install -r requirements.txt +COPY . . +CMD [ "python", "-m" , "flask", "run", "--host=0.0.0.0"] \ No newline at end of file diff --git a/backend/app.py b/backend/app.py index edf5067..2abd341 100644 --- a/backend/app.py +++ b/backend/app.py @@ -5,4 +5,5 @@ app = create_app() if __name__ == "__main__": PORT = os.environ.get('PORT', 33507) + print('app.run') app.run(host='0.0.0.0', port=PORT, DEBUG=True) diff --git a/backend/application/__init__.py b/backend/application/__init__.py index 379ab42..c42fed8 100644 --- a/backend/application/__init__.py +++ b/backend/application/__init__.py @@ -19,13 +19,17 @@ def create_app(): app.config.from_object("config.Config") if app.config['SQLALCHEMY_DATABASE_URI_1'] is None or app.config['SQLALCHEMY_DATABASE_URI_2'] is None: - print('No ENV Variable for DATABASE_URL_1 or DATABASE_URL_2') + print('No ENV Variable for DATABASE_URL_USERS or DATABASE_URL_LOGS') sys.exit(1) else: print('ENV Variables passed : ', app.config['SQLALCHEMY_BINDS']) + print('init_app') db.init_app(app) with app.app_context(): + print('import routes') from . import routes + print('db.create_all') db.create_all() + print('db created') return app diff --git a/backend/application/api_functions.py b/backend/application/api_functions.py index d98e7d9..bb67cbd 100644 --- a/backend/application/api_functions.py +++ b/backend/application/api_functions.py @@ -1,19 +1,9 @@ -print('hashlib') import hashlib - import os from datetime import datetime - -print('flask_sqlalchemy') from flask_sqlalchemy import inspect - -print('sqlalchemy') from sqlalchemy import asc, desc, or_ - -print('users_model') from .users_model import Users, db - -print('logs_model') from .logs_model import Logs diff --git a/backend/application/routes.py b/backend/application/routes.py index 2aebf3d..77dad76 100644 --- a/backend/application/routes.py +++ b/backend/application/routes.py @@ -3,7 +3,7 @@ from flask import request from .responses import send_message, send_error from .api_functions import db_login, db_register, db_user_update, db_create_log, db_user_delete, db_admin_update_user, db_users from .sessionJWT import create_auth_token, check_auth_token -print('route imported') + # Login @app.route('/api/login', methods=['POST']) diff --git a/backend/requirements.txt b/backend/requirements.txt index 6111316..2e7849a 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,7 +1,11 @@ -Flask_Migrate -Flask_SQLAlchemy -Flask_Script -Flask -sqlalchemy -hashlib -jwt \ No newline at end of file +alembic==1.7.5 +Flask==2.0.2 +Flask-Migrate==3.1.0 +Flask-Script==2.0.6 +Flask-SQLAlchemy==2.5.1 +Flask-WTF==0.15.1 +pipreqs==0.4.10 +PyJWT==2.3.0 +pytest==6.2.5 +SQLAlchemy==1.4.27 +psycopg2==2.9.2 \ No newline at end of file diff --git a/backend/test/fictive_logs.py b/backend/test/fictive_logs.py deleted file mode 100644 index 4987c7b..0000000 --- a/backend/test/fictive_logs.py +++ /dev/null @@ -1,59 +0,0 @@ -from logs_model import Logs -from datetime import date - - -TAB_LOG = [ - { - "id": 1, - "date": date.fromisoformat('2021-12-04'), - "user": "riri", - "ip": "0.0.0.0", - "table": "Users", - "action": "connexion", - "status": "succes", - "status_code": 200 - }, - { - "id": 2, - "date": date.fromisoformat('2021-12-04'), - "user": "fifi", - "ip": "0.0.0.0", - "table": "Users", - "action": "connexion", - "status": "succes", - "status_code": 200 - }, - { - "id": 3, - "date": date.fromisoformat('2021-12-04'), - "user": "loulou", - "ip": "0.0.0.0", - "table": "Users", - "action": "connexion", - "status": "succes", - "status_code": 200 - }, -] - - -def get_log_object(i: int): - return Logs( - id=TAB_LOG[i]["id"], - date=TAB_LOG[i]["date"], - user=TAB_LOG[i]["user"], - ip=TAB_LOG[i]["ip"], - table=TAB_LOG[i]["table"], - action=TAB_LOG[i]["action"], - status=TAB_LOG[i]["status"], - status_code=TAB_LOG[i]["status_code"] - ) - - -def get_log_json(i: int): - return TAB_LOG[i] - - - - - - diff --git a/backend/test/fictive_users.py b/backend/test/fictive_users.py deleted file mode 100644 index 8c67d13..0000000 --- a/backend/test/fictive_users.py +++ /dev/null @@ -1,59 +0,0 @@ -import sys -sys.path.append( "../application" ) -import users_model -import logs_model - -from users_model import Users - - - - - -TAB_USER = [ - { - "email": "riri@gmail.com", - "hash_pass": "ririPass", - "salt": "b'\x98\x95]\xa2B\xe5\x84gN\n1\x11\x1c%\xf7S\x8b\x88\xf7\xaa\x83\xf8$\xa8\xd5A\xd1\xa0\xf7:j\x10'", - "is_admin": False - }, - { - "id": 2, - "email": "fifi@gmail.com", - "hash_pass": "fifiPass", - "salt": "b'\xa9X9{\xc3\x8c\xe0\xeb\x0b\x01\xd0.o\t\xc0bv\xac\xe2n\x878\xf7\xba\x16\xd6\xee\x94\xc8U\xf0\x15'", - "is_admin": False - }, - { - "id": 3, - "email": "donald@gmail.com", - "hash_pass": "donaldPass", - "salt": "b'\xefM\xe5q\r\xb2\xc5\xff3\x88\x0c\x87\xa3\xe9F\xd7:\xc1\xc2J\xabvVR&\xe1-|D\xf5L '" - "is_admin": False - }, - { - "id": 4, - "email": "daisy@gmail.com", - "hash_pass": "daisyPass", - "salt": "b'\x01\xefCC\x05\x1f\x85\xd8\xf0\x02\xd1\x1c\xcb\xab\xec\x87M\x03\xe5T\x05]\x11\xc45<}\xd3\xfbFA\xbb'" - "is_admin": True - }, -] - - -def get_user_object(i: int): - return Users( - id=TAB_USER[i]["id"], - email=TAB_USER[i]["email"], - login=TAB_USER[i]["login"], - hashPass=TAB_USER[i]["hashPass"], - isAdmin=TAB_USER[i]["isAdmin"] - ) - - -def get_user_json(i: int): - return TAB_USER[i] - - - - - diff --git a/backend/test/initialisation.py b/backend/test/initialisation.py deleted file mode 100644 index 564ed13..0000000 --- a/backend/test/initialisation.py +++ /dev/null @@ -1,6 +0,0 @@ - - -def initialisation(): - - # supprimer: Riri, Fifi, Donald, Daisy - # \ No newline at end of file diff --git a/backend/test/test_db.py b/backend/test/test_db.py deleted file mode 100644 index 2ff2190..0000000 --- a/backend/test/test_db.py +++ /dev/null @@ -1,61 +0,0 @@ -print("debut") - -import sys -#sys.path.append( "../application" ) - - -import os -os.chdir("../application") -print(os.getcwd()) -from .api_functions import db_register - - -print("fin") - - - - -#def test_db_register(): -# -# # success -# ip = "1.2.3.4.5" -# email = "homer@gmail.com" -# password = "homerPass" -# is_admin = False -# result1 = db_register(ip, email, password, is_admin) -# assert(result1["status"] == 0) -# -# # fail: user already exists -# result2 = db_register(ip, email, password, is_admin) -# assert(result2["status"] == 1) -# -# # delete the new user -# if result1["status"] == 0: - - -# -# -#def test_db_login(): -# -# # success -# result = db_login(ip, email, password) -# assert(result["status"] == 0) -# -# # fail: email doesn't exist -# result = db_login(ip, email, password) -# assert(result["status"] == 1) -# -# # fail: hashPass not correct -# assert(result["status"] == 1) - - - - - - - - - - - - diff --git a/backend/test/test_routes.py b/backend/test/test_routes.py deleted file mode 100644 index eb21f2f..0000000 --- a/backend/test/test_routes.py +++ /dev/null @@ -1,53 +0,0 @@ -# Third party modules -import pytest -from datetime import date - -from __init__ import create_app, db -from users_model import Users -from logs_model import Logs - -import fictive_users -import ficitve_logs - - -@pytest.fixture -def client(): - app = create_app() - - app.config["TESTING"] = True - app.testing = True - - - app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite://" - - client = app.test_client() - with app.app_context(): - db.create_all() - - for i in range(1,6): - db.session.add(fictive_users.get_user_object(i)) - - for i in range(1,3): - db.session.add(ficitve_logs.get_log_object(i)) - - db.session.commit() - - yield client - - - -def test_get_user(client): - index = 1 - predict_results = client.get("/api/users/{}}".format(index)) - true_results = fictive_users.get_user_json(index) - assert predict_results.json == true_results - - - - - - - - - - \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 41372ca..f47bb03 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,9 +9,11 @@ services: volumes: - ./backend/init-db1.sql:/docker-entrypoint-initdb.d/init-db1.sql environment: + - POSTGRES_HOST=flaskaled-srv1 + - POSTGRES_PORT=5432 + - POSTGRES_DB=flaskaledDb1 - POSTGRES_USER=flaskaled1 - POSTGRES_PASSWORD=aled1 - - POSTGRES_DB=flaskaledDb1 restart: unless-stopped flaskaled-srv2: @@ -22,32 +24,35 @@ services: volumes: - ./backend/init-db2.sql:/docker-entrypoint-initdb.d/init-db2.sql environment: + - POSTGRES_HOST=flaskaled-srv2 + - POSTGRES_PORT=5432 + - POSTGRES_DB=flaskaledDb2 - POSTGRES_USER=flaskaled2 - POSTGRES_PASSWORD=aled2 - - POSTGRES_DB=flaskaledDb2 restart: unless-stopped -# -# backend: -# container_name: backend -# build: ./backend -# command: node server.js -# volumes: -# - ./backend:/data/backend -# ports: -# - "5000:5000" -# depends_on: -# - flaskaled-srv1 -# - flaskaled-srv2 -# links: -# - flaskaled-srv1 -# - flaskaled-srv2 -# environment: -# FLASK_ENV: development -# FLASK_DEBUG: 1 -# #DATABASE_URL_USERS: -# #DATABASE_URL_LOGS: -# #SECRET_KEY: -# #ALLOW_ORIGIN: + + backend: + container_name: backend + build: ./backend + ports: + - "5000:5000" + volumes: + - ./backend:/data/backend + depends_on: + - flaskaled-srv1 + - flaskaled-srv2 + links: + - flaskaled-srv1 + - flaskaled-srv2 + environment: + FLASK_APP: app.py + FLASK_ENV: development + FLASK_DEBUG: 1 + PYTHONUNBUFFERED: 1 + DATABASE_URL_USERS: postgresql://flaskaled1:aled1@flaskaled-srv1/flaskaledDb1 + DATABASE_URL_LOGS: postgresql://flaskaled2:aled2@flaskaled-srv2/flaskaledDb2 + #SECRET_KEY: default_secret_key + #ALLOW_ORIGIN: * # # frontend: # container_name: frontend