added field cropped_image to User model

This commit is contained in:
Anatoly 2019-09-06 13:47:37 +03:00
parent 5449891394
commit e1d6455e81
4 changed files with 42 additions and 2 deletions

View File

@ -0,0 +1,20 @@
# Generated by Django 2.2.4 on 2019-09-06 10:45
from django.db import migrations
import easy_thumbnails.fields
import utils.methods
class Migration(migrations.Migration):
dependencies = [
('account', '0004_user_email_confirmed'),
]
operations = [
migrations.AddField(
model_name='user',
name='cropped_image',
field=easy_thumbnails.fields.ThumbnailerImageField(blank=True, default=None, null=True, upload_to=utils.methods.image_path, verbose_name='Crop image'),
),
]

View File

@ -1,5 +1,4 @@
"""Account models"""
from django.conf import settings
from django.contrib.auth.models import AbstractUser, UserManager as BaseUserManager
from django.contrib.auth.tokens import default_token_generator as password_token_generator
@ -10,9 +9,11 @@ from django.utils import timezone
from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_encode
from django.utils.translation import ugettext_lazy as _
from easy_thumbnails.fields import ThumbnailerImageField
from rest_framework.authtoken.models import Token
from authorization.models import Application
from utils.methods import image_path
from utils.models import GMTokenGenerator
from utils.models import ImageMixin, ProjectBaseMixin, PlatformMixin
from utils.tokens import GMRefreshToken
@ -61,6 +62,9 @@ class UserQuerySet(models.QuerySet):
class User(ImageMixin, AbstractUser):
"""Base user model."""
cropped_image = ThumbnailerImageField(upload_to=image_path,
blank=True, null=True, default=None,
verbose_name=_('Crop image'))
email = models.EmailField(_('email address'), blank=True,
null=True, default=None)
email_confirmed = models.BooleanField(_('email status'), default=False)

View File

@ -13,10 +13,11 @@ from utils import exceptions as utils_exceptions
class UserSerializer(serializers.ModelSerializer):
"""User serializer."""
# RESPONSE
email_confirmed = serializers.BooleanField()
email_confirmed = serializers.BooleanField(read_only=True)
# REQUEST
image = serializers.ImageField(required=False)
cropped_image = serializers.ImageField(required=False)
email = serializers.EmailField(required=False)
username = serializers.CharField(required=False)
newsletter = serializers.BooleanField(required=False)
@ -24,6 +25,7 @@ class UserSerializer(serializers.ModelSerializer):
class Meta:
model = models.User
fields = [
'cropped_image',
'image',
'email',
'email_confirmed',
@ -45,6 +47,12 @@ class UserSerializer(serializers.ModelSerializer):
raise serializers.ValidationError()
return value
def validate(self, attrs):
if ('cropped_image' in attrs or 'image' in attrs) and \
('cropped_image' not in attrs or 'image' not in attrs):
raise utils_exceptions.UserUpdateUploadImageError()
return attrs
def update(self, instance, validated_data):
"""
Override update method

View File

@ -120,6 +120,14 @@ class EmailConfirmedError(exceptions.APIException):
default_detail = _('Email address is already confirmed')
class UserUpdateUploadImageError(exceptions.APIException):
"""
The exception should be raised when user tries upload an image without crop in request
"""
status_code = status.HTTP_400_BAD_REQUEST
default_detail = _('Image invalid input.')
class WrongAuthCredentials(AuthErrorMixin):
"""
The exception should be raised when credentials is not valid for this user