diff --git a/.gitignore b/.gitignore
index e8a710b..b379a32 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
docker/.env
backend/django/seatstock_django/db.sqlite3
+docker/volumes/postgresql
diff --git a/backend/django/Dockerfile b/backend/django/Dockerfile
index 3f6c15f..1deaac1 100644
--- a/backend/django/Dockerfile
+++ b/backend/django/Dockerfile
@@ -1,5 +1,5 @@
# base image
-FROM python:3.8
+FROM python:3.9
# setup environment variable
ENV DockerHOME=/home/app/webapp
diff --git a/backend/django/requirements.txt b/backend/django/requirements.txt
index 8eb58c8..338f3d1 100644
--- a/backend/django/requirements.txt
+++ b/backend/django/requirements.txt
@@ -2,5 +2,10 @@ django ~= 4.0
authlib ~= 1.0
python-dotenv ~= 0.19
requests ~= 2.27
-pymongo ~= 3.11
-dnspython
+psycopg2
+#pymongo ~= 3.6
+#dnspython
+#mongoengine
+#djongo
+#pytz
+#django-utils-six
diff --git a/backend/django/seatstock_django/db.sqlite3 b/backend/django/seatstock_django/db.sqlite3
deleted file mode 100644
index 1181932..0000000
Binary files a/backend/django/seatstock_django/db.sqlite3 and /dev/null differ
diff --git a/backend/django/seatstock_django/django_mongo/views.py b/backend/django/seatstock_django/django_mongo/views.py
index a947aeb..4330f54 100644
--- a/backend/django/seatstock_django/django_mongo/views.py
+++ b/backend/django/seatstock_django/django_mongo/views.py
@@ -1,6 +1,90 @@
-from django.shortcuts import render
+#from django.shortcuts import render
+#from django.http import HttpResponse
# Create your views here.
+#def index(request):
+# return HttpResponse("
Hello and welcome to my first Django App project!
")
+
+
+import json
+from authlib.integrations.django_client import OAuth
+from django.conf import settings
+from django.shortcuts import redirect, render, redirect
+from django.urls import reverse
+from urllib.parse import quote_plus, urlencode
+import os
+
+from pymongo.mongo_client import MongoClient
+from pymongo.server_api import ServerApi
+from dotenv import load_dotenv, find_dotenv
+
+
+
+# Password validation
+# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
+
+ENV_FILE = find_dotenv()
+if ENV_FILE:
+ load_dotenv(ENV_FILE)
+
+MONGO_DB_USERNAME = os.environ.get("MONGO_DB_USERNAME")
+MONGO_DB_PASSWORD = os.environ.get("MONGO_DB_PASSWORD")
+MONGO_DB_HOST = os.environ.get("MONGO_DB_HOST")
+
+#uri = 'mongodb+srv://'+MONGO_DB_USERNAME+':'+MONGO_DB_PASSWORD+'@'+MONGO_DB_HOST+'/?retryWrites=true&w=majority'
+#client = MongoClient(uri)
+
+# Send a ping to confirm a successful connection
+#try:
+# client.admin.command('ping')
+# print("Pinged your deployment. You successfully connected to MongoDB!")
+#except Exception as e:
+# print(e)
+
+# AUTH0
+oauth = OAuth()
+
+oauth.register(
+ "auth0",
+ client_id=settings.AUTH0_CLIENT_ID,
+ client_secret=settings.AUTH0_CLIENT_SECRET,
+ client_kwargs={
+ "scope": "openid profile email",
+ },
+ server_metadata_url=f"https://{settings.AUTH0_DOMAIN}/.well-known/openid-configuration",
+)
+
+def login(request):
+ return oauth.auth0.authorize_redirect(
+ request, request.build_absolute_uri(reverse("callback"))
+ )
+
+def callback(request):
+ token = oauth.auth0.authorize_access_token(request)
+ request.session["user"] = token
+ return redirect(request.build_absolute_uri(reverse("index")))
+
+def logout(request):
+ request.session.clear()
+
+ return redirect(
+ f"https://{settings.AUTH0_DOMAIN}/v2/logout?"
+ + urlencode(
+ {
+ "returnTo": request.build_absolute_uri(reverse("index")),
+ "client_id": settings.AUTH0_CLIENT_ID,
+ },
+ quote_via=quote_plus,
+ ),
+ )
+
def index(request):
- return HttpResponse("Hello and welcome to my first Django App project!
")
+ return render(
+ request,
+ "index.html",
+ context={
+ "session": request.session.get("user"),
+ "pretty": json.dumps(request.session.get("user"), indent=4),
+ },
+ )
diff --git a/backend/django/seatstock_django/seatstock_django/settings.py b/backend/django/seatstock_django/seatstock_django/settings.py
index 8a1563a..00525d2 100644
--- a/backend/django/seatstock_django/seatstock_django/settings.py
+++ b/backend/django/seatstock_django/seatstock_django/settings.py
@@ -14,6 +14,24 @@ import os
from pathlib import Path
from dotenv import load_dotenv, find_dotenv
+# Needed to use mongodb as default 'DATABASES'
+#import mongoengine, djongo
+#from pymongo.mongo_client import MongoClient
+#from pymongo.server_api import ServerApi
+
+ENV_FILE = find_dotenv()
+if ENV_FILE:
+ load_dotenv(ENV_FILE)
+
+#MONGO_DB_USERNAME = os.environ.get("MONGO_DB_USERNAME")
+#MONGO_DB_PASSWORD = os.environ.get("MONGO_DB_PASSWORD")
+#MONGO_DB_HOST = os.environ.get("MONGO_DB_HOST")
+
+#uri = 'mongodb+srv://'+MONGO_DB_USERNAME+':'+MONGO_DB_PASSWORD+'@'+MONGO_DB_HOST+'/?retryWrites=true&w=majority'
+#mongoengine.connect(db="default", host=uri)
+#client = MongoClient(uri)
+
+
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
@@ -33,7 +51,7 @@ ALLOWED_HOSTS = ['docker-django', 'localhost', 'seatstock.duckdns.org']
# Application definition
INSTALLED_APPS = [
- 'djangoapp',
+ 'django_mongo',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
@@ -88,9 +106,35 @@ WSGI_APPLICATION = 'seatstock_django.wsgi.application'
#}
-ENV_FILE = find_dotenv()
-if ENV_FILE:
- load_dotenv(ENV_FILE)
+#DATABASES = {
+# 'default': {
+# 'ENGINE' : 'djongo',
+# 'NAME' : 'seatstock',
+# 'ENFORCE_SCHEMA': False,
+# 'CLIENT': {
+# 'host': "mongodb+srv://seatstock:3MSiYdBhf43gPvBa@cluster0.7s1vitu.mongodb.net/?retryWrites=true&w=majority"
+# }
+# }
+#}
+
+DB_NAME = os.environ.get("DB_NAME")
+DB_USER = os.environ.get("DB_USER")
+DB_PASSWORD = os.environ.get("DB_PASSWORD")
+DB_HOST = os.environ.get("DB_HOST")
+DB_PORT = os.environ.get("DB_PORT")
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.postgresql_psycopg2',
+ 'NAME': DB_NAME,
+ 'USER': DB_USER,
+ 'PASSWORD': DB_PASSWORD,
+ 'HOST': DB_HOST,
+ 'PORT': DB_PORT
+ }
+}
+
+
# Password validation
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
diff --git a/backend/django/seatstock_django/seatstock_django/urls.py b/backend/django/seatstock_django/seatstock_django/urls.py
index 9515160..05a1f6f 100644
--- a/backend/django/seatstock_django/seatstock_django/urls.py
+++ b/backend/django/seatstock_django/seatstock_django/urls.py
@@ -21,8 +21,8 @@ from . import views
urlpatterns = [
path('admin/', admin.site.urls),
- path("",include('django_mongo.urls')),
-# path("", views.index, name="index"),
+# path("",include('django_mongo.urls')),
+ path("", views.index, name="index"),
path("login", views.login, name="login"),
path("logout", views.logout, name="logout"),
path("callback", views.callback, name="callback"),
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 7a7790b..441fb5e 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -15,15 +15,34 @@ services:
image: docker-django
container_name: seatstock-django
restart: unless-stopped
- ports:
- - "8000:8000"
+# ports:
+# - "8000:8000"
volumes:
- ../backend/django:/home/app/webapp
-# - ../frontend/templates:/home/app/webapp/seatstock_django/seatstock_django/templates
-# - ../frontend/static:/home/app/webapp/seatstock_django/seatstock_django/static
+ - ../frontend/templates:/home/app/webapp/seatstock_django/seatstock_django/templates
+ - ../frontend/static:/home/app/webapp/seatstock_django/seatstock_django/static
- ../frontend/templates:/home/app/webapp/seatstock_django/django_mongo/templates
- ../frontend/static:/home/app/webapp/seatstock_django/django_mongo/static
environment:
- AUTH0_DOMAIN=${AUTH0_DOMAIN}
- AUTH0_CLIENT_ID=${AUTH0_CLIENT_ID}
- AUTH0_CLIENT_SECRET=${AUTH0_CLIENT_SECRET}
+ - MONGO_DB_USERNAME=${MONGO_DB_USERNAME}
+ - MONGO_DB_PASSWORD=${MONGO_DB_PASSWORD}
+ - MONGO_DB_HOST=${MONGO_DB_HOST}
+ - DB_NAME=${DB_NAME}
+ - DB_USER=${DB_USER}
+ - DB_PASSWORD=${DB_PASSWORD}
+ - DB_HOST=${DB_HOST}
+ - DB_PORT=${DB_PORT}
+
+ postgres:
+ image: postgres:latest
+ container_name: seatstock-postgres
+ restart: unless-stopped
+ volumes:
+ - ./volumes/postgresql:/var/lib/postgresql/data
+ environment:
+ - POSTGRES_PASSWORD=${DB_PASSWORD}
+ - POSTGRES_USER=${DB_USER}
+ - POSTGRES_DB=${DB_NAME}