diff --git a/README.md b/README.md new file mode 100644 index 0000000..78bf38a --- /dev/null +++ b/README.md @@ -0,0 +1,297 @@ +## User APIs + + +``` +Endpoint: /api/users/auth/login/ + +Method: GET , POST + +1) GET - + + Request Content Type : JSON + + Request Body: + { + username : + } + + Response Body:None + + Response Code Meanings: + 200- ok (when the user is not logged in) + 400- Bad Request (a user is already logged in) + +2) POST - + + Request Content Type : JSON + + Request Body: + { + username: + password: + } + + Response Body:None + + Response Code Meanings: + 200- ok (user successfully logged in) + 400- Bad Request (user log in failed or already logged in) + +``` + + +``` +Endpoint: /api/users/auth/logout/ + +Method: POST + + Request Content Type : None + + Request Body:None + + Response Body:None + + Response Code Meanings: + 200- ok (user successfully logged out) + 401- Unauthorized (No user is logged in , so logout failed) + +``` + + + +``` +Endpoint: /api/users/ + +Method: PUT + + Request Content Type : JSON + + Request Body: + { + fblink: + } + + Response Body:None + + Response Code Meanings: + 200- ok (fblink of user changed) + 401- Unauthorized (No user is logged in , so fblink change failed) + 204- No content(no fblink is given as parameter) + 400- Bad Request (given flink is not a url) + +``` + +``` +Endpoint: /api/users/acads/ + +Method: GET , PUT + +1) GET - + + Request Content Type : None + + Request Body:None + + Response Body: + { + "roll": "190828", + "acads": [ + { + "course_id": 123, + "name": "wer", + "code": "ESC101B" + }, + { + "course_id": 1, + "name": "wasdf", + "code": "ESC101C" + }, + { + "course_id": 3, + "name": "wedf", + "code": "ESC101F" + } + ] + } + + Response Code Meanings: + 200- ok (all the acads/courses of the user) + 204- No Content (user is not logged in ) + +2) PUT - + + Request Content Type : JSON + + Request Body: + { + code: + } + + Response Body: + if success + { + 'Status':"ok" + } + else + { + "Error": + } + + Response Code Meanings: + 200- ok (course added in user) + 400- Bad Request (no sch acad/course found) + 401- Unauthorized (user is not logged in) + +``` + + +``` +Endpoint: /api/users/profile/ + +Method: GET + + Request Content Type :None + + Request Body:None + + Response Body: + { + "roll": "190828", + "username": "agshubh", + "image": null, + "name": "Shubh Agrawal", + "program": "BTech", + "dept": "CSE", + "hall": "13", + "room": "D305", + "blood_group": "B+ve", + "gender": "Male", + "hometown": "Gurgaon", + "fblink": "http://facebook.com/shubh", + "por": { + "1": "Pclub" + }, + "earlier_login": false, + "tags": [ + { + "tag_id": 1, + "name": "Shubh Agrawal", + "description": "Desc1" + } + ], + "acads": [ + { + "course_id": 123, + "name": "wer", + "code": "ESC101B" + }, + { + "course_id": 1, + "name": "wasdf", + "code": "ESC101C" + }, + { + "course_id": 3, + "name": "wedf", + "code": "ESC101F" + } + ], + "owned": [] + } + + Response Code Meanings: + 200- ok (all the details of user are given) + 400- Bad Request (No user is logged in) +``` + +``` +Endpoint: /api/users/tags/ + +Method: PUT + + Request Content Type :JSON + + Request Body: + { + name: + } + + Response Body: + if success + { + 'Status':"ok" + } + else + { + "Error": + } + + + Response Code Meanings: + 200- ok (tag added in user's tag list) + 401- unauthorized(No user is logged in) + 404- Not Found (No such tag is found ) +``` + +``` +Endpoint: /api/users/course/delete/ + +Method: DELETE + + Request Content Type :JSON + + Request Body: + { + code: + } + + Response Body:None + + Response Code Meanings: + 200- ok (course delelted from user course list) + 401- unauthorized(No user is logged in) + 404- Not Found (No such course is found in user's course list) +``` + + + +``` +Endpoint: /api/users/tags/delete/ + +Method: DELETE + + Request Content Type :JSON + + Request Body: + { + name: + } + + Response Body:None + + Response Code Meanings: + 200- ok (tag delelted from user course list) + 401- unauthorized(No user is logged in) + 404- Not Found (No such tag is found in user's tag list) +``` + + +``` +Endpoint: /api/users/owned/ + +Method: GET + + Request Content Type: None + + Request Body:None + + Response Body: + { + "roll": "190828", + "owned": [] + } + + Response Code Meanings: + 200 - ok (owned tags are return) + 204 - No Content(user id not loggged in) +``` \ No newline at end of file diff --git a/acads/admin.py b/acads/admin.py index 8c38f3f..078e8dc 100644 --- a/acads/admin.py +++ b/acads/admin.py @@ -1,3 +1,5 @@ from django.contrib import admin # Register your models here. +from .models import AcadsModel +admin.site.register(AcadsModel) \ No newline at end of file diff --git a/lifeiitkbackend/settings.py b/lifeiitkbackend/settings.py index a714cf2..5cce78a 100644 --- a/lifeiitkbackend/settings.py +++ b/lifeiitkbackend/settings.py @@ -108,10 +108,10 @@ def get_secret(setting, secrets=secrets): DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql_psycopg2", - "NAME": "postgres", - "USER": "postgres", - "PASSWORD": get_secret("DB_PASSWORD"), - 'HOST': 'db', + "NAME": "postgres4", + "USER": "postgres4", + "PASSWORD": "shubh", + 'HOST': 'localhost', 'PORT': 5432, } } diff --git a/tags/admin.py b/tags/admin.py index 8c38f3f..9dc019a 100644 --- a/tags/admin.py +++ b/tags/admin.py @@ -1,3 +1,6 @@ from django.contrib import admin # Register your models here. + +from .models import TagModel +admin.site.register(TagModel) \ No newline at end of file diff --git a/tokens/admin.py b/tokens/admin.py index 8c38f3f..55edd31 100644 --- a/tokens/admin.py +++ b/tokens/admin.py @@ -1,3 +1,5 @@ from django.contrib import admin # Register your models here. +from .models import Token +admin.site.register(Token) \ No newline at end of file diff --git a/users/Serializer.py b/users/Serializer.py index 3f02e0e..2374038 100644 --- a/users/Serializer.py +++ b/users/Serializer.py @@ -45,3 +45,9 @@ class Meta: "roll", "acads" ) + + +class FbLinkSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = ("fblink", "username") \ No newline at end of file diff --git a/users/admin.py b/users/admin.py index 694323f..8312cbe 100644 --- a/users/admin.py +++ b/users/admin.py @@ -1 +1,4 @@ from django.contrib import admin +from users.models.users import User + +admin.site.register(User) \ No newline at end of file diff --git a/users/views.py b/users/views.py index fc0a0ce..ac95356 100644 --- a/users/views.py +++ b/users/views.py @@ -6,7 +6,7 @@ from .models.users import User from rest_framework.decorators import api_view from acads.models import AcadsModel -from .Serializer import UserSerializer , UserOwnedSerializer, UserAcadsSerializer +from .Serializer import UserSerializer , UserOwnedSerializer, UserAcadsSerializer,FbLinkSerializer from django.http import JsonResponse from tags.models import TagModel from .utils import IsLoggedIn @@ -33,7 +33,6 @@ def post(self, request, *args, **kwargs): return Response(status = status.HTTP_400_BAD_REQUEST) #Login fails user = User.objects.get(username=username) - if user is not None: request.session["username"] = username request.session.modified = True #Starting session manually @@ -71,12 +70,15 @@ def EditAPI(request): if request.method == 'PUT': user = IsLoggedIn(request) if user is not None: - if len(request.data["fblink"]) != 0: - user.fblink = request.data.get("fblink", "") + if len(request.data["fblink"]) != 0: + # user.fblink = request.data.get("fblink", "") fb = request.data.get("fblink","") - user.fblink = fb - user.save() - return Response(status = status.HTTP_200_OK) + serializer = FbLinkSerializer(data = {"fblink":fb , "username":user.username}) + if serializer.is_valid(): + user.fblink = fb + user.save() + return Response(status = status.HTTP_200_OK) + return Response( status= status.HTTP_400_BAD_REQUEST) return Response(status = status.HTTP_204_NO_CONTENT) return Response(status = status.HTTP_401_UNAUTHORIZED) @@ -88,7 +90,10 @@ def AcadsAPI(request): request.session["username"] = user.username data = json.loads(request.body) code = data["code"] - a = AcadsModel.objects.get(code = code) + try: + a = AcadsModel.objects.get(code = code) + except: + a = None if a is not None: user.acads.add(a) user.save() @@ -128,7 +133,7 @@ def user_details(request): return Response(status=status.HTTP_400_BAD_REQUEST) serializer = UserSerializer(user) - return JsonResponse(serializer.data) + return JsonResponse(serializer.data,status=status.HTTP_200_OK) @api_view(['GET']) def OwnedTagAPI(request): if request.method=='GET': @@ -137,7 +142,7 @@ def OwnedTagAPI(request): return Response(status=status.HTTP_204_NO_CONTENT) serializer = UserOwnedSerializer(user) - return JsonResponse(serializer.data) + return JsonResponse(serializer.data,status=status.HTTP_200_OK ) @api_view(["DELETE"]) def DeleteAcadAPI(request): @@ -150,18 +155,18 @@ def DeleteAcadAPI(request): if course.exists(): user.acads.remove(course[0]) return Response(status=status.HTTP_200_OK) - return Response(status=status.HTTP_404_NOT_FOUND) - return Response(status=status.HTTP_401_UNAUTHORIZED) + return Response(status=status.HTTP_404_NOT_FOUND) + return Response(status=status.HTTP_401_UNAUTHORIZED) @api_view(["DELETE"]) def UnsubscribeTagsAPI(request): if request.method == "DELETE": user = IsLoggedIn(request) if user is not None: - tag_id = request.data.get("tag_id") - tag = user.tags.filter(tag_id=tag_id) + name = request.data.get("name") + tag = user.tags.filter(name=name) if tag.exists(): user.tags.remove(tag[0]) return Response(status=status.HTTP_200_OK) - return Response(status=status.HTTP_404_NOT_FOUND) - return Response(status=status.HTTP_401_UNAUTHORIZED) + return Response(status=status.HTTP_404_NOT_FOUND) + return Response(status=status.HTTP_401_UNAUTHORIZED)