from django.contrib.auth.models import AbstractUser, UserManager as BaseUserManager from django.db import models from django.utils.translation import ugettext_lazy as _ from rest_framework.authtoken.models import Token from utils.models import ImageMixin class UserManager(BaseUserManager): """Extended manager for User model.""" use_in_migrations = False class UserQuerySet(models.QuerySet): """Extended queryset for User model.""" def active(self, switcher=True): """Filter only active users.""" return self.filter(is_active=switcher) class User(ImageMixin, AbstractUser): """Base user model.""" email = models.EmailField(_('email address'), blank=True, null=True, default=None) EMAIL_FIELD = 'email' USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['email'] objects = UserManager.from_queryset(UserQuerySet)() class Meta: """Meta class.""" verbose_name = _('User') verbose_name_plural = _('Users') def __str__(self): """String method.""" return "%s:%s" % (self.email, self.get_short_name()) def remove_token(self): Token.objects.filter(user=self).delete()