Merge branch 'develop' of ssh://gl.id-east.ru:222/gm/gm-backend into develop
This commit is contained in:
commit
880c387759
|
|
@ -4,7 +4,7 @@ from django.contrib.auth import authenticate
|
||||||
from django.contrib.auth import password_validation as password_validators
|
from django.contrib.auth import password_validation as password_validators
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework import validators as rest_validators
|
from rest_framework.generics import get_object_or_404
|
||||||
|
|
||||||
from account import models as account_models
|
from account import models as account_models
|
||||||
from authorization import tasks
|
from authorization import tasks
|
||||||
|
|
@ -76,6 +76,39 @@ class SignupSerializer(serializers.ModelSerializer):
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|
||||||
|
class ReconfirmSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = account_models.User
|
||||||
|
fields = ('email',)
|
||||||
|
|
||||||
|
def validate_email(self, value):
|
||||||
|
"""Validate email"""
|
||||||
|
users = list(account_models.User.objects.filter(email=value.lower()).all())
|
||||||
|
if not users:
|
||||||
|
raise serializers.ValidationError(detail='User with mentioned email does not exist.')
|
||||||
|
users = list(filter(lambda user: not user.email_confirmed, users))
|
||||||
|
if not users:
|
||||||
|
raise serializers.ValidationError(detail='User with this email is confirmed.')
|
||||||
|
return value
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
"""Override create method"""
|
||||||
|
queryset = account_models.User.objects.all()
|
||||||
|
email = validated_data.get('email').lower()
|
||||||
|
country_code = self.context.get('request').country_code
|
||||||
|
obj = get_object_or_404(queryset, email=email)
|
||||||
|
if settings.USE_CELERY:
|
||||||
|
tasks.send_confirm_email.delay(
|
||||||
|
user_id=obj.id,
|
||||||
|
country_code=country_code)
|
||||||
|
else:
|
||||||
|
tasks.send_confirm_email(
|
||||||
|
user_id=obj.id,
|
||||||
|
country_code=country_code)
|
||||||
|
return obj
|
||||||
|
|
||||||
|
|
||||||
class LoginByUsernameOrEmailSerializer(SourceSerializerMixin,
|
class LoginByUsernameOrEmailSerializer(SourceSerializerMixin,
|
||||||
serializers.ModelSerializer):
|
serializers.ModelSerializer):
|
||||||
"""Serializer for login user"""
|
"""Serializer for login user"""
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ urlpatterns_oauth2 = [
|
||||||
|
|
||||||
urlpatterns_jwt = [
|
urlpatterns_jwt = [
|
||||||
path('signup/', views.SignUpView.as_view(), name='signup'),
|
path('signup/', views.SignUpView.as_view(), name='signup'),
|
||||||
|
path('signup/reconfirm/', views.ReconfirmView.as_view(), name='signup-reconfirm'),
|
||||||
path('signup/confirm/<uidb64>/<token>/', views.ConfirmationEmailView.as_view(),
|
path('signup/confirm/<uidb64>/<token>/', views.ConfirmationEmailView.as_view(),
|
||||||
name='signup-confirm'),
|
name='signup-confirm'),
|
||||||
path('login/', views.LoginByUsernameOrEmailView.as_view(), name='login'),
|
path('login/', views.LoginByUsernameOrEmailView.as_view(), name='login'),
|
||||||
|
|
|
||||||
|
|
@ -147,6 +147,17 @@ class SignUpView(generics.GenericAPIView):
|
||||||
return Response(status=status.HTTP_201_CREATED)
|
return Response(status=status.HTTP_201_CREATED)
|
||||||
|
|
||||||
|
|
||||||
|
class ReconfirmView(generics.CreateAPIView):
|
||||||
|
""" Resends confirmation email whether user's still not confirmed """
|
||||||
|
permission_classes = (permissions.AllowAny,)
|
||||||
|
serializer_class = serializers.ReconfirmSerializer
|
||||||
|
|
||||||
|
def post(self, request, *args, **kwargs):
|
||||||
|
serializer = self.get_serializer(data=request.data)
|
||||||
|
serializer.is_valid(raise_exception=True)
|
||||||
|
return Response(status=status.HTTP_201_CREATED)
|
||||||
|
|
||||||
|
|
||||||
class ConfirmationEmailView(JWTGenericViewMixin):
|
class ConfirmationEmailView(JWTGenericViewMixin):
|
||||||
"""View for confirmation email"""
|
"""View for confirmation email"""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -349,7 +349,9 @@ class Carousel(models.Model):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def model_name(self):
|
def model_name(self):
|
||||||
return self.content_object.__class__.__name__
|
if hasattr(self.content_object, 'establishment_type'):
|
||||||
|
return self.content_object.establishment_type.name_translated
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Page(models.Model):
|
class Page(models.Model):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user