add persistent storage on postgres and django

This commit is contained in:
2024-11-09 16:23:05 +01:00
parent 0184706c3a
commit bfd45be93b
7 changed files with 30 additions and 35 deletions

View File

@ -19,8 +19,8 @@ services:
djangoserver:
container_name: djangoserver
# volumes:
# - website_data:/var/www/djangoserver
volumes:
- django_storage:/var/www/djangoserver/storage
networks:
- transcendence
develop:
@ -55,6 +55,8 @@ services:
DB_PASSWORD: ${DB_PASSWORD}
networks:
- transcendence
volumes:
- postgres:/var/lib/postgresql/13/main
restart: always
adminer:
@ -65,12 +67,8 @@ services:
- transcendence
volumes:
website_data:
driver: local
driver_opts:
type: none
o: bind
device: '~/METH_data'
postgres:
django_storage:
networks:
transcendence:

View File

@ -6,7 +6,7 @@
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/09/24 17:26:12 by edbernar #+# #+# #
# Updated: 2024/09/27 03:40:12 by tomoron ### ########.fr #
# Updated: 2024/11/09 15:53:51 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -14,6 +14,7 @@ from asgiref.sync import sync_to_async
from ..models import User
from ..utils import genString
from random import randint
from django.db.models import Q
import base64
import json
@ -21,11 +22,11 @@ import json
def changeBanner(socket, content):
while True:
generate_name = genString(50)
if (not User.objects.filter(banner=f"/banner/{generate_name}.jpg").exists()):
if (not User.objects.filter(Q(banner=f"/storage/{generate_name}.jpg") | Q(pfp=f"/storage/{generate_name}.jpg")).exists()):
break
user = User.objects.get(id=socket.id)
user.banner = f"/banner/{generate_name}.jpg"
user.banner = f"/storage/{generate_name}.jpg"
user.save()
with open(f"/var/www/djangoserver/banner/{generate_name}.jpg", "wb") as image_file:
with open(f"/var/www/djangoserver/storage/{generate_name}.jpg", "wb") as image_file:
image_file.write(base64.b64decode(content["img"]))
socket.sync_send(json.dumps({"type": "change_pfp", "content": {'banner': user.banner}}))

View File

@ -6,7 +6,7 @@
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/09/23 23:35:41 by edbernar #+# #+# #
# Updated: 2024/10/04 21:13:28 by tomoron ### ########.fr #
# Updated: 2024/11/09 15:58:16 by tomoron ### ########.fr #
# #
# **************************************************************************** #
@ -14,6 +14,7 @@ from asgiref.sync import sync_to_async
from ..models import User
from ..utils import genString
from random import randint
from django.db.models import Q
import base64
import json
@ -21,12 +22,12 @@ import json
def changePfp(socket, content):
while True:
generate_name = genString(50)
if (not User.objects.filter(pfp=f"/pfp/{generate_name}.jpg").exists()):
if (not User.objects.filter(Q(banner=f"/storage/{generate_name}.jpg") | Q(pfp=f"/storage/{generate_name}.jpg")).exists()):
break
with open(f"/var/www/djangoserver/pfp/{generate_name}.jpg", "wb") as image_file:
with open(f"/var/www/djangoserver/storage/{generate_name}.jpg", "wb") as image_file:
image_file.write(base64.b64decode(content["img"]))
user = User.objects.get(id=socket.id)
user.pfp = f"/pfp/{generate_name}.jpg"
user.pfp = f"/storage/{generate_name}.jpg"
user.save()
socket.pfp = user.pfp
socket.scope["session"]["pfp"] = user.pfp

View File

@ -32,8 +32,7 @@ urlpatterns = [
path("logout", views.logout, name='logout'),
path("verify", views.verify, name='verify'),
path("404", views.err404, name='err404'),
path("pfp/<str>", views.pfp, name='pfp'),
path("banner/<str>", views.banner, name='banner'),
path("storage/<str>", views.getStorage, name='getStorage'),
path("settingsPage", views.settingsPage, name='settingsPage'),
path("tournamentPage", views.tournamentPage, name='tournamentPage'),
]

View File

@ -137,19 +137,10 @@ def handler404(request, exception):
def err404(request):
return(render(request, "err404.html"))
def pfp(request, str):
def getStorage(request, str):
ret = None
try:
image_path = os.path.join('/var/www/djangoserver/pfp/', str)
ret = FileResponse(open(image_path, 'rb'), content_type='image/png')
except Exception:
pass
return ret
def banner(request, str):
ret = None
try:
image_path = os.path.join('/var/www/djangoserver/banner/', str)
image_path = os.path.join('/var/www/djangoserver/storage/', str)
ret = FileResponse(open(image_path, 'rb'), content_type='image/png')
except Exception:
ret = FileResponse("banner not found", status=404)

View File

@ -10,4 +10,6 @@ RUN openssl req -x509 -nodes -out /etc/nginx/ssl/inception.crt -keyout /etc/ngin
COPY nginx.conf /etc/nginx/nginx.conf
COPY static /var/www/static
STOPSIGNAL SIGKILL
ENTRYPOINT ["nginx", "-g", "daemon off;"]