From eb397cac7d0bb15fc92510cf7819b7a6926c0e49 Mon Sep 17 00:00:00 2001
From: MCAyd <ma04274@surrey.ac.uk>
Date: Fri, 21 Apr 2023 00:39:38 +0100
Subject: [PATCH] docker is working properly, runsh file is added to the folder
 which runs all dockers consecutively

---
 frontend/.env                                 |   2 +-
 frontend/application/__init__.py              |   2 --
 .../static/images/1984a21b73b88524.jpeg       | Bin 0 -> 3602 bytes
 .../static/images/users/e6be63b80a5b9efe.jpeg | Bin 0 -> 3602 bytes
 frontend/requirements.txt                     |   2 +-
 post-service/.env                             |   2 +-
 post-service/Dockerfile                       |   2 +-
 post-service/application/__init__.py          |   7 ++++++
 .../application/post_api/api/UserClient.py    |   9 ++++++--
 post-service/config.py                        |   2 ++
 run.sh                                        |  21 ++++++++++++++++++
 user-service/.env                             |   2 +-
 user-service/application/models.py            |   2 +-
 user-service/application/user_api/routes.py   |   1 -
 14 files changed, 43 insertions(+), 11 deletions(-)
 create mode 100644 frontend/application/static/images/1984a21b73b88524.jpeg
 create mode 100644 frontend/application/static/images/users/e6be63b80a5b9efe.jpeg
 create mode 100644 run.sh

diff --git a/frontend/.env b/frontend/.env
index 10e8a83..30a348d 100644
--- a/frontend/.env
+++ b/frontend/.env
@@ -1 +1 @@
-CONFIGURATION_SETUP="config.DevelopmentConfig"
+CONFIGURATION_SETUP="config.ProductionConfig"
diff --git a/frontend/application/__init__.py b/frontend/application/__init__.py
index 6285350..a84f862 100644
--- a/frontend/application/__init__.py
+++ b/frontend/application/__init__.py
@@ -6,7 +6,6 @@ from flask_login import LoginManager
 from flask_ckeditor import CKEditor
 
 login_manager = LoginManager()
-UPLOAD_FOLDER = os.path.join('static', 'images')
 app = None
 
 def create_app():
@@ -17,7 +16,6 @@ def create_app():
         return app
     
     app = Flask(__name__)
-    app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
 
     # Load environment variables 
     load_dotenv()
diff --git a/frontend/application/static/images/1984a21b73b88524.jpeg b/frontend/application/static/images/1984a21b73b88524.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..be7f0ac7a09746d836ec73d0287de197af66c15c
GIT binary patch
literal 3602
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

literal 0
HcmV?d00001

diff --git a/frontend/application/static/images/users/e6be63b80a5b9efe.jpeg b/frontend/application/static/images/users/e6be63b80a5b9efe.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..be7f0ac7a09746d836ec73d0287de197af66c15c
GIT binary patch
literal 3602
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

literal 0
HcmV?d00001

diff --git a/frontend/requirements.txt b/frontend/requirements.txt
index 72f368a..6b61adb 100644
--- a/frontend/requirements.txt
+++ b/frontend/requirements.txt
@@ -35,4 +35,4 @@ urllib3==1.26.15
 visitor==0.1.3
 Werkzeug==2.2.3
 WTForms==3.0.1
-
+Pillow==9.0.1
diff --git a/post-service/.env b/post-service/.env
index 10e8a83..30a348d 100644
--- a/post-service/.env
+++ b/post-service/.env
@@ -1 +1 @@
-CONFIGURATION_SETUP="config.DevelopmentConfig"
+CONFIGURATION_SETUP="config.ProductionConfig"
diff --git a/post-service/Dockerfile b/post-service/Dockerfile
index d5515d3..4b680f2 100644
--- a/post-service/Dockerfile
+++ b/post-service/Dockerfile
@@ -16,4 +16,4 @@ RUN pip3 install -r requirements.txt
 
 COPY . /post-service
 
-CMD [ "./wait-for-it.sh", "user-db:3306", "--timeout=0" ,"--","python3", "run.py"]
+CMD [ "./wait-for-it.sh", "post-db:3306", "--timeout=0" ,"--","python3", "run.py"]
diff --git a/post-service/application/__init__.py b/post-service/application/__init__.py
index 07d9c0c..b356beb 100644
--- a/post-service/application/__init__.py
+++ b/post-service/application/__init__.py
@@ -7,8 +7,15 @@ from flask_login import LoginManager
 from flask_sqlalchemy import SQLAlchemy
 
 db = SQLAlchemy()
+app = None
 
 def create_app():
+    
+    global app
+
+    if app is not None:
+        return app
+
     app = Flask(__name__)
 
     # Load environment variables 
diff --git a/post-service/application/post_api/api/UserClient.py b/post-service/application/post_api/api/UserClient.py
index 18ed05d..0507cb6 100644
--- a/post-service/application/post_api/api/UserClient.py
+++ b/post-service/application/post_api/api/UserClient.py
@@ -1,10 +1,14 @@
 # application/post_api/api/UserClient.py
 import requests
+from application import app
 
 class UserClient:
+
+    user_service = app.config['USER_SERVICE']
+
     @staticmethod
     def get_username(user_id):
-        url='http://localhost:5001/api/' + str(user_id) + '/username'
+        url='http://'+ UserClient.user_service +'/api/' + str(user_id) + '/username'
         response = requests.request(method="GET", url=url)
 
         response = response.json()
@@ -19,7 +23,8 @@ class UserClient:
         headers = {
             'Authorization': api_key
         }
-        response = requests.request(method="GET", url='http://localhost:5001/api/user', headers=headers)
+        url='http://'+ UserClient.user_service +'/api/user'
+        response = requests.request(method="GET", url=url, headers=headers)
         if response.status_code == 401:
             return False
         user = response.json()
diff --git a/post-service/config.py b/post-service/config.py
index 88575bf..1825bca 100644
--- a/post-service/config.py
+++ b/post-service/config.py
@@ -15,6 +15,7 @@ class Config:
 class DevelopmentConfig(Config):
     ENV = "development"
     DEBUG = True
+    USER_SERVICE = "localhost:5001"
     SQLALCHEMY_DATABASE_URI = 'sqlite:///posts-service.db'
     SQLALCHEMY_ECHO = True
 
@@ -22,5 +23,6 @@ class DevelopmentConfig(Config):
 class ProductionConfig(Config):
     ENV = "production"
     DEBUG = True
+    USER_SERVICE = "user-service:5001"
     SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://post-service:pass1234@post-db:3306/post'
     SQLALCHEMY_ECHO = False
diff --git a/run.sh b/run.sh
new file mode 100644
index 0000000..c55fb27
--- /dev/null
+++ b/run.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+sudo apt-get install dbus-x11
+
+# user-service'i baÅŸlat
+cd user-service
+docker-compose build
+gnome-terminal -- docker-compose up
+cd ..
+
+# post-service'i baÅŸlat
+cd post-service
+docker-compose build
+gnome-terminal -- docker-compose up
+cd ..
+
+# frontend'i baÅŸlat
+cd frontend
+docker-compose build
+gnome-terminal -- docker-compose up
+cd ..
\ No newline at end of file
diff --git a/user-service/.env b/user-service/.env
index 10e8a83..30a348d 100644
--- a/user-service/.env
+++ b/user-service/.env
@@ -1 +1 @@
-CONFIGURATION_SETUP="config.DevelopmentConfig"
+CONFIGURATION_SETUP="config.ProductionConfig"
diff --git a/user-service/application/models.py b/user-service/application/models.py
index 2372270..42bf485 100644
--- a/user-service/application/models.py
+++ b/user-service/application/models.py
@@ -8,7 +8,7 @@ class User(db.Model, UserMixin):
     id = db.Column(db.Integer, primary_key=True)
     email = db.Column(db.String(255), unique=True, nullable=False)
     phone_number = db.Column(db.String(255), unique=False, nullable=True)
-    uni_number = db.Column(db.Integer, unique=False, nullable=True)
+    uni_number = db.Column(db.String(255), unique=False, nullable=True)
     user_role = db.Column(db.String(255), unique=False, nullable=False)
     first_name = db.Column(db.String(255), unique=False, nullable=False)
     last_name = db.Column(db.String(255), unique=False, nullable=False)
diff --git a/user-service/application/user_api/routes.py b/user-service/application/user_api/routes.py
index b9229df..acde432 100644
--- a/user-service/application/user_api/routes.py
+++ b/user-service/application/user_api/routes.py
@@ -53,7 +53,6 @@ def get_users():
     response = jsonify(data)
     return response
 
-
 @user_api_blueprint.route('/api/user/create', methods=['POST'])
 def post_register():
     first_name = request.form['first_name']
-- 
GitLab