LIL-72 Save verification email or not

remotes/origin/hasaccess
Sergey G 8 years ago
parent 9a8b14e5d8
commit 5853ce29b8
  1. 16
      apps/auth/tests/test_verification_email.py
  2. 3
      apps/auth/views.py
  3. 0
      apps/user/__init__.py
  4. 3
      apps/user/admin.py
  5. 6
      apps/user/apps.py
  6. 44
      apps/user/migrations/0001_initial.py
  7. 0
      apps/user/migrations/__init__.py
  8. 26
      apps/user/models.py
  9. 3
      apps/user/tests.py
  10. 3
      apps/user/views.py
  11. 3
      project/settings.py

@ -1,16 +1,15 @@
from django.contrib.auth import get_user_model
from ..tokens import verification_email_token
from django.test import TestCase, Client
from django.urls import reverse
User = get_user_model()
from apps.user.models import LilcityUserProxy
class VerificationEmailTest(TestCase):
def setUp(self):
self.client = Client()
self.user_1 = User.objects.create_user(username='user_1@example.com', password='1234')
self.user_1 = LilcityUserProxy.objects.create_user(username='user_1@example.com', password='1234')
self.token_user_1 = verification_email_token.make_token(self.user_1)
self.url = reverse('lilcity:verification-email', kwargs={"token": self.token_user_1})
@ -21,13 +20,22 @@ class VerificationEmailTest(TestCase):
response = self.client.get(f'{self.url}')
self.assertEqual(response.status_code, 200)
def test_should_is_verification_email_for_user(self):
self.assertFalse(self.user_1.lilcity_user_settings.is_verification_email)
self.client.login(username=self.user_1.username, password='1234')
self.client.get(f'{self.url}')
self.user_1.refresh_from_db()
self.assertTrue(self.user_1.lilcity_user_settings.is_verification_email)
def test_should_anonymous_user(self):
response = self.client.get(f'{self.url}')
self.assertEqual(response.status_code, 400)
def test_should_error_if_token_is_not_valid(self):
user_hacker = User.objects.create_user(username='hacker@example.com', password='1234')
user_hacker = LilcityUserProxy.objects.create_user(username='hacker@example.com', password='1234')
self.client.login(username=user_hacker.username, password='1234')
response = self.client.get(f'{self.url}')

@ -58,6 +58,9 @@ class VerificationEmailView(View):
is_valid_token = verification_email_token.check_token(request.user, kwargs.get('token'))
if is_valid_token:
lilcity_user_settings = request.user.lilcity_user_settings
lilcity_user_settings.is_verification_email = True
lilcity_user_settings.save()
return JsonResponse({"success": True})
else:
return JsonResponse({"success": False}, status=400)

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

@ -0,0 +1,6 @@
from django.apps import AppConfig
class UserConfig(AppConfig):
name = 'apps.user'
label = 'lilcity_user'

@ -0,0 +1,44 @@
# Generated by Django 2.0.1 on 2018-01-15 08:33
import apps.user.models
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('auth', '0009_alter_user_last_name_max_length'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='LilcityUserSettings',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('is_verification_email', models.BooleanField(default=False)),
],
),
migrations.CreateModel(
name='LilcityUserProxy',
fields=[
],
options={
'proxy': True,
'indexes': [],
},
bases=('auth.user',),
managers=[
('objects', apps.user.models.LilcityUserManager()),
],
),
migrations.AddField(
model_name='lilcityusersettings',
name='user',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='lilcity_user_settings', to=settings.AUTH_USER_MODEL),
),
]

@ -0,0 +1,26 @@
from django.db import models
from django.contrib.auth import get_user_model
from django.contrib.auth.models import AbstractUser, UserManager
User = get_user_model()
class LilcityUserManager(UserManager):
def create_user(self, username, email=None, password=None, **extra_fields):
user = super().create_user(username, email, password, **extra_fields)
LilcityUserSettings.objects.create(user=user)
return user
class LilcityUserProxy(User):
objects = LilcityUserManager()
class Meta:
proxy = True
class LilcityUserSettings(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='lilcity_user_settings')
is_verification_email = models.BooleanField(default=False)

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

@ -40,7 +40,8 @@ INSTALLED_APPS = [
] + [
'anymail',
] + [
'apps.auth.apps'
'apps.auth.apps',
'apps.user',
]
MIDDLEWARE = [

Loading…
Cancel
Save