|
|
|
|
@ -1,9 +1,13 @@ |
|
|
|
|
# -*- coding: utf-8 -*- |
|
|
|
|
from django.db import models |
|
|
|
|
from hvad.models import TranslatableModel, TranslatedFields |
|
|
|
|
from django.contrib.auth.models import BaseUserManager, AbstractBaseUser, PermissionsMixin |
|
|
|
|
from django.core.mail import send_mail |
|
|
|
|
from django.utils import timezone |
|
|
|
|
from django.db.models.signals import post_save |
|
|
|
|
#custom functions |
|
|
|
|
from functions.custom_fields import LocationField |
|
|
|
|
from functions.form_check import translit_with_separator |
|
|
|
|
""" |
|
|
|
|
from django.contrib.auth.hashers import check_password |
|
|
|
|
from hashlib import md5 |
|
|
|
|
@ -49,6 +53,7 @@ class UserManager(BaseUserManager): |
|
|
|
|
return user |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class User(AbstractBaseUser, PermissionsMixin): |
|
|
|
|
""" |
|
|
|
|
Implementing a fully featured User model with |
|
|
|
|
@ -56,6 +61,8 @@ class User(AbstractBaseUser, PermissionsMixin): |
|
|
|
|
|
|
|
|
|
Email, first name, last name and password are required. Other fields are optional. |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
email = models.EmailField( |
|
|
|
|
verbose_name = 'Электронная почта', |
|
|
|
|
max_length = 255, |
|
|
|
|
@ -64,11 +71,15 @@ class User(AbstractBaseUser, PermissionsMixin): |
|
|
|
|
) |
|
|
|
|
first_name = models.CharField(verbose_name='Имя', max_length=255) |
|
|
|
|
last_name = models.CharField(verbose_name='Фамилия', max_length=255) |
|
|
|
|
|
|
|
|
|
url = models.SlugField(blank=True) |
|
|
|
|
# |
|
|
|
|
is_active = models.BooleanField(default=1) # СДЕЛАТЬ проверку на емейле |
|
|
|
|
is_staff = models.BooleanField(default=0) |
|
|
|
|
is_admin = models.BooleanField(default=0) |
|
|
|
|
is_translator = models.BooleanField(verbose_name='Переводчик', default=0) |
|
|
|
|
is_organiser = models.BooleanField(verbose_name='Организатор', default=0) |
|
|
|
|
|
|
|
|
|
date_joined = models.DateTimeField(auto_now_add=True) |
|
|
|
|
date_registered = models.DateTimeField(blank=True, null=True)# |
|
|
|
|
date_modified = models.DateTimeField(auto_now=True) |
|
|
|
|
@ -76,10 +87,8 @@ class User(AbstractBaseUser, PermissionsMixin): |
|
|
|
|
country = models.ForeignKey('country.Country', verbose_name='Страна', blank=True, null=True, related_name='users') |
|
|
|
|
city = models.ForeignKey('city.City', verbose_name='Город', blank=True, null=True) |
|
|
|
|
company = models.ForeignKey('company.Company', blank=True, null=True) |
|
|
|
|
organiser = models.ForeignKey('organiser.Organiser', blank=True, null=True) |
|
|
|
|
#other user information |
|
|
|
|
phone = models.PositiveIntegerField(verbose_name='Телефон', blank=True, null=True) |
|
|
|
|
url = models.CharField(verbose_name='URL', max_length=255, blank=True) |
|
|
|
|
position = models.CharField(verbose_name='Должность', max_length=255, blank=True) |
|
|
|
|
about = models.TextField(verbose_name='О себе', blank=True) |
|
|
|
|
avatar = models.ImageField(verbose_name='Фото', upload_to='/accounts/avatar/', blank=True) |
|
|
|
|
@ -101,6 +110,14 @@ class User(AbstractBaseUser, PermissionsMixin): |
|
|
|
|
""" |
|
|
|
|
return u'%s %s'%(self.first_name, self.last_name) |
|
|
|
|
|
|
|
|
|
def set_url(self, st): |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
self.url = translit_with_separator(u'%s'%st) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __unicode__(self): |
|
|
|
|
return self.email |
|
|
|
|
|
|
|
|
|
@ -120,40 +137,10 @@ class User(AbstractBaseUser, PermissionsMixin): |
|
|
|
|
def has_module_perms(self, app_label): |
|
|
|
|
return True |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
class MyUserAuthBackend(object): |
|
|
|
|
def check_md5_password(self, db_password, supplied_password): |
|
|
|
|
return md5(supplied_password).hex_digest(), db_password |
|
|
|
|
|
|
|
|
|
def authenticate(self, username=None, password=None, **kwargs): |
|
|
|
|
# Authenticate a user based on email address as the user name. |
|
|
|
|
UserModel = get_user_model() |
|
|
|
|
if username is None: |
|
|
|
|
username = kwargs.get(UserModel.USERNAME_FIELD) |
|
|
|
|
try: |
|
|
|
|
user = UserModel._default_manager.get_by_natural_key(username) |
|
|
|
|
if check_password(password, user.password): |
|
|
|
|
# user.set_password(password) |
|
|
|
|
# user.save() |
|
|
|
|
return user |
|
|
|
|
#if user.check_password(password): |
|
|
|
|
# return user |
|
|
|
|
except UserModel.DoesNotExist: |
|
|
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_user(self, user_id): |
|
|
|
|
try: |
|
|
|
|
UserModel = get_user_model() |
|
|
|
|
return UserModel._default_manager.get(pk=user_id) |
|
|
|
|
except UserModel.DoesNotExist: |
|
|
|
|
return None |
|
|
|
|
""" |
|
|
|
|
|
|
|
|
|
class TranslatorProfile(models.Model): |
|
|
|
|
""" |
|
|
|
|
Extra information about tranlators |
|
|
|
|
Extra information about translators |
|
|
|
|
""" |
|
|
|
|
#required field, relation with user model |
|
|
|
|
user = models.ForeignKey(User, related_name='translator') |
|
|
|
|
@ -185,4 +172,36 @@ def create_translator_profile(sender, **kw): |
|
|
|
|
except: pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
post_save.connect(create_translator_profile, sender=User) |
|
|
|
|
post_save.connect(create_translator_profile, sender=User) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
""" |
|
|
|
|
class MyUserAuthBackend(object): |
|
|
|
|
def check_md5_password(self, db_password, supplied_password): |
|
|
|
|
return md5(supplied_password).hex_digest(), db_password |
|
|
|
|
|
|
|
|
|
def authenticate(self, username=None, password=None, **kwargs): |
|
|
|
|
# Authenticate a user based on email address as the user name. |
|
|
|
|
UserModel = get_user_model() |
|
|
|
|
if username is None: |
|
|
|
|
username = kwargs.get(UserModel.USERNAME_FIELD) |
|
|
|
|
try: |
|
|
|
|
user = UserModel._default_manager.get_by_natural_key(username) |
|
|
|
|
if check_password(password, user.password): |
|
|
|
|
# user.set_password(password) |
|
|
|
|
# user.save() |
|
|
|
|
return user |
|
|
|
|
#if user.check_password(password): |
|
|
|
|
# return user |
|
|
|
|
except UserModel.DoesNotExist: |
|
|
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_user(self, user_id): |
|
|
|
|
try: |
|
|
|
|
UserModel = get_user_model() |
|
|
|
|
return UserModel._default_manager.get(pk=user_id) |
|
|
|
|
except UserModel.DoesNotExist: |
|
|
|
|
return None |
|
|
|
|
""" |
|
|
|
|
|