Merge branch 'develop' into feature/es

This commit is contained in:
evgeniy-st 2019-10-04 12:06:53 +03:00
commit a73cba4dcf
6 changed files with 77 additions and 6 deletions

View File

@ -4,6 +4,20 @@ from django.db import migrations, models
import uuid
def fill_uuid(apps, schemaeditor):
Advertisement = apps.get_model('advertisement', 'Advertisement')
for a in Advertisement.objects.all():
a.uuid = uuid.uuid4()
a.save()
def fill_block_level(apps, schemaeditor):
Advertisement = apps.get_model('advertisement', 'Advertisement')
for a in Advertisement.objects.all():
a.block_level = ''
a.save()
class Migration(migrations.Migration):
dependencies = [
@ -23,6 +37,12 @@ class Migration(migrations.Migration):
field=models.ManyToManyField(to='translation.Language'),
),
migrations.AddField(
model_name='advertisement',
name='uuid',
field=models.UUIDField(default=uuid.uuid4, editable=False),
),
migrations.RunPython(fill_uuid, migrations.RunPython.noop),
migrations.AlterField(
model_name='advertisement',
name='uuid',
field=models.UUIDField(default=uuid.uuid4, editable=False, unique=True),
@ -32,8 +52,14 @@ class Migration(migrations.Migration):
name='block_level',
),
migrations.AddField(
model_name='advertisement',
name='block_level',
field=models.CharField(blank=True, null=True, max_length=10, verbose_name='Block level')
),
migrations.RunPython(fill_block_level, migrations.RunPython.noop),
migrations.AlterField(
model_name='advertisement',
name='block_level',
field=models.CharField(max_length=10, verbose_name='Block level')
)
),
]

View File

@ -4,7 +4,7 @@ from django.contrib.auth import authenticate
from django.contrib.auth import password_validation as password_validators
from django.db.models import Q
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 authorization import tasks
@ -76,6 +76,39 @@ class SignupSerializer(serializers.ModelSerializer):
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,
serializers.ModelSerializer):
"""Serializer for login user"""

View File

@ -29,6 +29,7 @@ urlpatterns_oauth2 = [
urlpatterns_jwt = [
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(),
name='signup-confirm'),
path('login/', views.LoginByUsernameOrEmailView.as_view(), name='login'),

View File

@ -147,6 +147,17 @@ class SignUpView(generics.GenericAPIView):
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):
"""View for confirmation email"""

View File

@ -349,7 +349,9 @@ class Carousel(models.Model):
@property
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):

View File

@ -76,9 +76,7 @@ class EstablishmentDocumentViewSet(BaseDocumentViewSet):
'slug': 'slug',
'tag': {
'field': 'tags.id',
'lookups': [
constants.LOOKUP_QUERY_IN,
]
'lookups': [constants.LOOKUP_QUERY_IN]
},
'toque_number': {
'field': 'toque_number',