You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
2.3 KiB
58 lines
2.3 KiB
# -*- coding: utf-8 -*-
|
|
import hashlib
|
|
from random import random
|
|
|
|
from django.utils import timezone
|
|
from django.db import models
|
|
from django.contrib.auth.models import BaseUserManager
|
|
|
|
|
|
class ConfirmEmailManager(models.Manager):
|
|
def confirm(self, user):
|
|
"""Создает или обновляет запись, что email подтвержден."""
|
|
rec, created = self.get_or_create(user=user, defaults={'is_confirmed': True,})
|
|
return rec
|
|
|
|
def unconfirm(self, user):
|
|
"""Создает или обновляет запись, что нужно подтвердить email."""
|
|
rec, created = self.get_or_create(user=user, defaults={'is_confirmed': False,})
|
|
return rec
|
|
|
|
|
|
class ResetKeyManager(models.Manager):
|
|
def create_key(self, user):
|
|
"""Создает или обновляет ключ восстановления пароля."""
|
|
key = hashlib.sha1('%s' % random()).hexdigest()
|
|
reset_key, created = self.get_or_create(user=user, defaults={'key': key,})
|
|
if not created:
|
|
reset_key.key = key # обновить ключ
|
|
reset_key.save()
|
|
return reset_key
|
|
|
|
|
|
class CustomUserManager(BaseUserManager):
|
|
def _create_user(self, username, email, password,
|
|
is_staff, is_superuser, **extra_fields):
|
|
"""
|
|
Creates and saves a User with the given email and password.
|
|
"""
|
|
now = timezone.now()
|
|
if not email :
|
|
raise ValueError('The given email must be set')
|
|
email = self.normalize_email(email)
|
|
user = self.model(email=email,
|
|
username=username,
|
|
is_staff=is_staff, is_active=True,
|
|
is_superuser=is_superuser, last_login=now,
|
|
date_joined=now, **extra_fields)
|
|
user.set_password(password)
|
|
user.save(using=self._db)
|
|
return user
|
|
|
|
def create_user(self, username, email, password=None, **extra_fields):
|
|
return self._create_user(username, email, password, False, False,
|
|
**extra_fields )
|
|
|
|
def create_superuser(self, username, email, password, **extra_fields):
|
|
return self._create_user(username, email, password, True, True,
|
|
**extra_fields)
|
|
|