From b5ad16e281730dc1d3e964ffa1ee61fb9bb2c08c Mon Sep 17 00:00:00 2001 From: Mohamed Nouffer Date: Wed, 3 May 2023 16:12:53 +0530 Subject: [PATCH] added max_connection --- docker-compose.yaml | 2 ++ rog/serializers.py | 25 +++++++++++++++++++++++-- rog/urls.py | 5 +++-- rog/views.py | 9 ++++++++- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 4dfda93..7500b82 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -11,6 +11,8 @@ services: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASS=${POSTGRES_PASS} - POSTGRES_DBNAME=${POSTGRES_DBNAME} + - POSTGRES_MAX_CONNECTIONS=200 + restart: "on-failure" networks: - rog-api diff --git a/rog/serializers.py b/rog/serializers.py index e220c72..141e87b 100644 --- a/rog/serializers.py +++ b/rog/serializers.py @@ -1,7 +1,7 @@ from rest_framework import serializers from rest_framework_gis.serializers import GeoFeatureModelSerializer from sqlalchemy.sql.functions import mode -from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, UserTracks, GoalImages, CheckinImages +from .models import Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, UserTracks, GoalImages, CheckinImages,CustomUser from drf_extra_fields.fields import Base64ImageField #from django.contrib.auth.models import User @@ -171,4 +171,25 @@ class ChangePasswordSerializer(serializers.Serializer): Serializer for password change endpoint. """ old_password = serializers.CharField(required=True) - new_password = serializers.CharField(required=True) \ No newline at end of file + new_password = serializers.CharField(required=True) + + +class RegistrationSerializer(serializers.ModelSerializer): + password2 = serializers.CharField(style={"input_type": "password"}, write_only=True) + + class Meta: + model = CustomUser + fields = ['email', 'is_rogaining', 'zekken_number', 'event_code', 'team_name', 'group', 'password', 'password2'] + extra_kwargs = { + 'password': {'write_only': True} + } + + def save(self): + user = CustomUser(email=self.validated_data['email'], is_rogaining=self.validated_data['is_rogaining'], zekken_number=self.validated_data['zekken_number'], event_code=self.validated_data['event_code'], team_name=self.validated_data['team_name'], group=self.validated_data['group']) + password = self.validated_data['password'] + password2 = self.validated_data['password2'] + if password != password2: + raise serializers.ValidationError({'password': 'Passwords must match.'}) + user.set_password(password) + user.save() + return user \ No newline at end of file diff --git a/rog/urls.py b/rog/urls.py index 472104b..b34f4bc 100644 --- a/rog/urls.py +++ b/rog/urls.py @@ -1,7 +1,7 @@ from sys import prefix from rest_framework import urlpatterns from rest_framework.routers import DefaultRouter -from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, Jpn_PerfViewSet, LocationsInPerf, SubInPerf, ExtentForSubPerf, SubPerfInMainPerf, ExtentForMainPerf, LocationsInSubPerf, CatView, RegistrationAPI, LoginAPI, UserAPI, UserActionViewset, UserMakeActionViewset, UserDestinations, UpdateOrder, LocationInBound, DeleteDestination, CustomAreaLocations, GetAllGifuAreas, CustomAreaNames, userDetials, UserTracksViewSet, CatByCity, ChangePasswordView, GoalImageViewSet, CheckinImageViewSet, ExtentForLocations, DeleteAccount, PrivacyView +from .views import LocationViewSet, Location_lineViewSet, Location_polygonViewSet, Jpn_Main_PerfViewSet, Jpn_PerfViewSet, LocationsInPerf, SubInPerf, ExtentForSubPerf, SubPerfInMainPerf, ExtentForMainPerf, LocationsInSubPerf, CatView, RegistrationAPI, LoginAPI, UserAPI, UserActionViewset, UserMakeActionViewset, UserDestinations, UpdateOrder, LocationInBound, DeleteDestination, CustomAreaLocations, GetAllGifuAreas, CustomAreaNames, userDetials, UserTracksViewSet, CatByCity, ChangePasswordView, GoalImageViewSet, CheckinImageViewSet, ExtentForLocations, DeleteAccount, PrivacyView, RegistrationView from django.urls import path, include from knox import views as knox_views @@ -47,6 +47,7 @@ urlpatterns += [ path('userdetials/', userDetials, name='user_detials'), path('change-password/', ChangePasswordView.as_view(), name='change-password'), path('delete-account/', DeleteAccount, name="delete-account"), - path('privacy/', PrivacyView, name='privacy-view') + path('privacy/', PrivacyView, name='privacy-view'), + path('register', RegistrationView.as_view(), name='register'), # path('goal-image/', GoalImageViewSet.as_view(), name='goal-image') ] \ No newline at end of file diff --git a/rog/views.py b/rog/views.py index 322503e..0d4d65d 100644 --- a/rog/views.py +++ b/rog/views.py @@ -2,7 +2,7 @@ from curses.ascii import NUL from django.core.serializers import serialize from .models import GoalImages, Location, Location_line, Location_polygon, JpnAdminMainPerf, JpnAdminPerf, JpnSubPerf, Useractions, GifuAreas, RogUser, CustomUser, UserTracks, GoalImages, CheckinImages from rest_framework import viewsets -from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer, GifuAreaSerializer, LocationEventNameSerializer, RogUserSerializer, UserTracksSerializer, ChangePasswordSerializer, GolaImageSerializer, CheckinImageSerializer +from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, JPN_perfSerializer, JPN_sub_perSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer, GifuAreaSerializer, LocationEventNameSerializer, RogUserSerializer, UserTracksSerializer, ChangePasswordSerializer, GolaImageSerializer, CheckinImageSerializer, RegistrationSerializer from knox.models import AuthToken from rest_framework import viewsets, generics, status @@ -542,3 +542,10 @@ class TestActionViewSet(viewsets.ModelViewSet): def PrivacyView(request): return render(request, "rog/privacy.html") +class RegistrationView(APIView): + def post(self, request): + serializer = RegistrationSerializer(data=request.data) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data, status=status.HTTP_201_CREATED) + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) \ No newline at end of file