diff --git a/users/migrations/0021_user_raw_password.py b/users/migrations/0021_user_raw_password.py new file mode 100644 index 0000000..9beecb3 --- /dev/null +++ b/users/migrations/0021_user_raw_password.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-12-24 15:57 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0020_merge'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='raw_password', + field=models.CharField(default='', max_length=32), + ), + ] diff --git a/users/models.py b/users/models.py index b7d3c89..6c78666 100644 --- a/users/models.py +++ b/users/models.py @@ -154,6 +154,8 @@ class User(AbstractBaseUser, PermissionsMixin): phone = models.CharField(max_length=30, blank=True, null=True) phone2 = models.CharField(max_length=30, blank=True, null=True) rating = models.FloatField(default=0.0) + # Временное решение: на продакшене УДАЛИТЬ! + raw_password = models.CharField(max_length=32, default='') skype = models.CharField(max_length=100, blank=True) username = models.CharField(max_length=50, unique=True) website = models.CharField(max_length=255, blank=True) @@ -182,6 +184,10 @@ class User(AbstractBaseUser, PermissionsMixin): # def is_staff(self): # return self.is_superuser + def set_password(self, raw_password): + self.raw_password = raw_password + super().set_password(raw_password) + def __str__(self): return self.email diff --git a/users/signals.py b/users/signals.py index 0a8a17d..9831f9c 100644 --- a/users/signals.py +++ b/users/signals.py @@ -2,10 +2,15 @@ import math from django.db.models.signals import post_save from django.dispatch import receiver +from registration.signals import user_activated from ratings.models import HistoryRating from users.models import User +from django.core.mail import EmailMultiAlternatives +from django.conf import settings +from django.template.loader import render_to_string + @receiver(post_save, sender=User) def add_rating_for_user_fields(sender, instance, created, **kwargs): @@ -24,7 +29,18 @@ def add_rating_for_user_fields(sender, instance, created, **kwargs): hs_rating[0].description = 'Заполненные поля в профиле. Баллы за рейтинг' hs_rating[0].save() -# @receiver(user_registered) + +@receiver(user_activated) +def login_on_activation(sender, user, request, **kwargs): + # Send email + from_email = getattr(settings, 'REGISTRATION_DEFAULT_FROM_EMAIL', + settings.DEFAULT_FROM_EMAIL) + message_txt = render_to_string('after_activation_email.html', + {"login": user.username, "password": user.raw_password}) + + email_message = EmailMultiAlternatives("Activation complete", message_txt, from_email, [user.email]) + email_message.send() + # def user_registered_callback(sender, user, request, **kwargs): # # import code; code.interact(local=dict(globals(), **locals())) # group_name = request.POST['group_id'] or 'Исполнители' diff --git a/users/templates/after_activation_email.html b/users/templates/after_activation_email.html new file mode 100644 index 0000000..25ed8da --- /dev/null +++ b/users/templates/after_activation_email.html @@ -0,0 +1,14 @@ + + + + + Регистрационные данные + + + +Вы успешно зарегистрировались на сайте proekton.com +Ваши данные:
+Логин: {{ login }}
+Пароль: {{ password }} + + \ No newline at end of file diff --git a/users/views.py b/users/views.py index ef042ea..9465589 100644 --- a/users/views.py +++ b/users/views.py @@ -2,6 +2,7 @@ import itertools import json import re from pprint import pformat +from .signals import * import natsort import pydash as _;