From 791193bdf232fae4e5992ae331c42c484db84add Mon Sep 17 00:00:00 2001 From: Akash R Chandran Date: Mon, 28 Aug 2023 20:19:26 +0530 Subject: [PATCH 1/6] updated env variables --- .env.sample | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.env.sample b/.env.sample index f8f7abc..184f425 100644 --- a/.env.sample +++ b/.env.sample @@ -1,3 +1,5 @@ +SECRET_KEY= + DB_NAME= DB_USER= DB_PASSWORD= From dfea82dae2c7631e4ead95bc9ecf50fe93bc9cab Mon Sep 17 00:00:00 2001 From: Akash R Chandran Date: Mon, 28 Aug 2023 20:19:35 +0530 Subject: [PATCH 2/6] updated requirements --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a7d19b0..1bb91ff 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,5 @@ djangorestframework psycopg2-binary python-dotenv django-cors-headers -django-debug-toolbar \ No newline at end of file +django-debug-toolbar +gunicorn \ No newline at end of file From 9455949c47f2c641272f50ae119a6c7eafa4eb1f Mon Sep 17 00:00:00 2001 From: Akash R Chandran Date: Mon, 28 Aug 2023 20:19:49 +0530 Subject: [PATCH 3/6] added railway.json --- railway.json | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 railway.json diff --git a/railway.json b/railway.json new file mode 100644 index 0000000..f2d3546 --- /dev/null +++ b/railway.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://railway.app/railway.schema.json", + "build": { + "builder": "NIXPACKS" + }, + "deploy": { + "startCommand": "python manage.py migrate && python manage.py collectstatic --noinput && gunicorn mysite.wsgi", + "restartPolicyType": "ON_FAILURE", + "restartPolicyMaxRetries": 10 + } +} \ No newline at end of file From ca04a491fc25df834ef82881eeafbb482e40732b Mon Sep 17 00:00:00 2001 From: Akash R Chandran Date: Mon, 28 Aug 2023 20:28:13 +0530 Subject: [PATCH 4/6] updated settings --- prepportal/settings.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/prepportal/settings.py b/prepportal/settings.py index 0e2b45d..674ff59 100644 --- a/prepportal/settings.py +++ b/prepportal/settings.py @@ -24,12 +24,12 @@ # See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'django-insecure-*lau3ea78+)lm9ey#p#dpnih6_n67p*twei&$@vg34c3l*f4s9' +SECRET_KEY = os.environ.get("SECRET_KEY") # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = ["*", "chrome-extension://amknoiejhlmhancpahfcfcfhllgkpbld"] +ALLOWED_HOSTS = ["*"] # Application definition @@ -130,6 +130,8 @@ # https://docs.djangoproject.com/en/4.2/howto/static-files/ STATIC_URL = 'static/' +STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] +STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles") # Default primary key field type # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field From 5e3a6e380cdf57ae697be1dc0bc82190affd0ba3 Mon Sep 17 00:00:00 2001 From: Akash R Chandran Date: Mon, 28 Aug 2023 21:55:24 +0530 Subject: [PATCH 5/6] fixed models --- api/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/models.py b/api/models.py index e0dfaaf..7e97a96 100644 --- a/api/models.py +++ b/api/models.py @@ -55,7 +55,7 @@ class QuestionPaper(models.Model): month = models.CharField(max_length=20) year = models.IntegerField() file_id = models.CharField(max_length=255) - file_size = models.IntegerField(max_length=20) + file_size = models.IntegerField() file_format = models.CharField(max_length=20) subject = models.ForeignKey(Subject, on_delete=models.CASCADE) description = models.TextField(null=True, blank=True) @@ -67,7 +67,7 @@ class Note(models.Model): note_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) title = models.CharField(max_length=255) file_id = models.CharField(max_length=255) - file_size = models.IntegerField(max_length=20) + file_size = models.IntegerField() file_format = models.CharField(max_length=20) subject = models.ForeignKey(Subject, on_delete=models.CASCADE) description = models.TextField(null=True, blank=True) From 3c00bb917eca0e0cead55de2892a6baf85368f8f Mon Sep 17 00:00:00 2001 From: Akash R Chandran Date: Mon, 28 Aug 2023 23:37:22 +0530 Subject: [PATCH 6/6] updated views --- api/views.py | 20 +++++++++++++++++++- static/.gitkeep | 0 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 static/.gitkeep diff --git a/api/views.py b/api/views.py index f0f925e..293afb0 100644 --- a/api/views.py +++ b/api/views.py @@ -1,4 +1,5 @@ -from rest_framework import viewsets +from rest_framework import viewsets, status +from rest_framework.response import Response from .models import (Branch, Note, QuestionPaper, Semester, SemesterGroup, Subject, SubjectType) @@ -28,6 +29,23 @@ class SubjectViewSet(viewsets.ModelViewSet): queryset = Subject.objects.all() serializer_class = SubjectSerializer + def create(self, request, *args, **kwargs): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + + code = serializer.validated_data['code'] + if Subject.objects.filter(code=code).first(): + return Response({"detail": "Subject already exists."}, status=status.HTTP_400_BAD_REQUEST) + + self.perform_create(serializer) + headers = self.get_success_headers(serializer.data) + return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) + + def get_queryset(self): + if code := self.request.query_params.get('code'): + return Subject.objects.filter(code=code) + return Subject.objects.all() + class QuestionPaperViewSet(viewsets.ModelViewSet): queryset = QuestionPaper.objects.all() serializer_class = QuestionPaperSerializer diff --git a/static/.gitkeep b/static/.gitkeep new file mode 100644 index 0000000..e69de29