Миграции юзера

feature/fix_generate_pass
Andrey 8 years ago
parent 0bb4f5c186
commit b6c4759d19
  1. 3
      access/admin.py
  2. 7
      access/init_group.py
  3. 16
      access/load_users.py
  4. 30
      access/migrations/0010_auto_20171016_1709.py
  5. 30
      access/migrations/0012_auto_20171017_0924.py
  6. 35
      access/migrations/0013_auto_20171017_0933.py
  7. 52
      access/models.py

@ -1,7 +1,8 @@
from django.contrib import admin
from access.models import ActiveObject, ExtraPrivilege, User, Account
from access.models import ActiveObject, ExtraPrivilege, User, Account, Invite
admin.site.register(User)
admin.site.register(Account)
admin.site.register(ExtraPrivilege)
admin.site.register(ActiveObject)
admin.site.register(Invite)

@ -9,4 +9,9 @@ from django.contrib.auth.models import Group
if __name__ == '__main__':
Group.objects.get_or_create(name='students')
Group.objects.get_or_create(name='teachers')
Group.objects.get_or_create(name='teachers')
Group.objects.get_or_create(name='managers')
Group.objects.get_or_create(name='lead_managers')
Group.objects.get_or_create(name='curator')
Group.objects.get_or_create(name='partner')
Group.objects.get_or_create(name='project_manager')

@ -0,0 +1,16 @@
import os, sys, django, csv
sys.path.append("../")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
django.setup()
from django.contrib.auth import get_user_model
if __name__ == '__main__':
with open('../csv/access/users.csv') as user_csv:
user_reader = csv.DictReader(user_csv)
for row in user_reader:
try:
get_user_model().objects.get_or_create(**dict(row))
except ValueError:
pass

@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-16 17:09
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0009_auto_20171016_1634'),
]
operations = [
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(1, 'male'), (2, 'female'), (0, 'undefined')], default=0),
),
migrations.AlterField(
model_name='invite',
name='hash',
field=models.CharField(default='QtrdrGbAnXtRHSL', max_length=15),
),
migrations.AlterField(
model_name='user',
name='last_login',
field=models.DateTimeField(blank=True, null=True, verbose_name='last login'),
),
]

@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-17 09:24
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0011_auto_20171017_0800'),
]
operations = [
migrations.AddField(
model_name='invite',
name='date',
field=models.DateTimeField(blank=True, null=True),
),
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(0, 'undefined'), (2, 'female'), (1, 'male')], default=0),
),
migrations.AlterField(
model_name='invite',
name='hash',
field=models.CharField(default='JnNSTfEkoDEclgp', max_length=15),
),
]

@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.6 on 2017-10-17 09:33
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('access', '0012_auto_20171017_0924'),
]
operations = [
migrations.AlterField(
model_name='account',
name='gender',
field=models.SmallIntegerField(choices=[(0, 'undefined'), (1, 'male'), (2, 'female')], default=0),
),
migrations.AlterField(
model_name='invite',
name='hash',
field=models.CharField(default='RGmRBoJxBvpmTzm', max_length=15),
),
migrations.AlterField(
model_name='user',
name='first_name',
field=models.CharField(blank=True, default='Guest', max_length=63, verbose_name='first name'),
),
migrations.AlterField(
model_name='user',
name='last_name',
field=models.CharField(blank=True, max_length=63, verbose_name='last name'),
),
]

@ -21,6 +21,7 @@ class Invite(models.Model):
hash = models.CharField(
max_length=15, default=''.join(random.choice(string.ascii_letters) for x in range(15))
)
date = models.DateTimeField(null=True, blank=True)
class Account(models.Model):
@ -36,15 +37,32 @@ class Account(models.Model):
photo = models.ImageField(null=True, blank=True, default='user/photo/default_avatar.png', upload_to='user/photo/')
phone = models.CharField(max_length=15, blank=True)
def __str__(self):
return self.owner.email
class CustomUserManager(BaseUserManager):
use_in_migrations = True
@transaction_decorator
def _create_user(self, email, password=None, is_staff=False, is_superuser=False, is_active=False,
first_name='Guest', **extra_fields):
def get_or_create(self, email=None, password=None, **kwargs):
if not email:
raise ValueError('email not set')
if password:
kwargs["hash_password"] = password
kwargs['email'] = self.normalize_email(email)
now = timezone.now()
try:
return self.get(email=kwargs['email'])
except self.model.DoesNotExist:
return self._create_user(**kwargs)
@transaction_decorator
def _create_user(self, email, password=None, is_staff=False, is_superuser=False,
is_active=False, first_name='Guest', hash_password=None, is_send=False,
date_joined=timezone.now(), last_login=timezone.now(), **extra_fields):
if not email:
raise ValueError('The given email must be set')
@ -52,18 +70,23 @@ class CustomUserManager(BaseUserManager):
email = self.normalize_email(email)
user = self.model(email=email, is_staff=is_staff, is_active=is_active, first_name=first_name,
is_superuser=is_superuser, last_login=now, **extra_fields)
is_superuser=is_superuser, date_joined=date_joined, last_login=last_login, **extra_fields)
if not password:
password = ''.join(random.choice(string.ascii_letters) for x in range(8))
user.set_password(password)
if not hash_password:
user.set_password(password)
else:
user.password = hash_password
user.save(using=self._db)
group = Group.objects.create(name=user.email)
user.groups.add(group)
Account.objects.create(owner=user)
Invite.objects.create(owner=user)
# Должна идти отбивка
if is_send:
pass
Invite.objects.create(owner=user)
# Должна идти отбивка
return user
def create_user(self, email, password, **extra_fields):
@ -73,7 +96,7 @@ class CustomUserManager(BaseUserManager):
return self._create_user(email=email, password=password, is_superuser=True, is_staff=True, is_active=True)
def create_student(self, email, password, **extra_fields):
user = self.create_user(email=email, password=password, **extra_fields)
user = self.create_user(email=email, password=password, is_send=True, **extra_fields)
group = Group.objects.get(name='students')
user.groups.add(group)
return user
@ -81,10 +104,9 @@ class CustomUserManager(BaseUserManager):
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('email address'), unique=True)
first_name = models.CharField(_('first name'), max_length=30, blank=True, default='Guest')
last_name = models.CharField(_('last name'), max_length=30, blank=True)
date_joined = models.DateTimeField(_('date joined'), auto_now_add=True)
last_login = models.DateTimeField(_('last login'), auto_now_add=True)
first_name = models.CharField(_('first name'), max_length=63, blank=True, default='Guest')
last_name = models.CharField(_('last name'), max_length=63, blank=True)
date_joined = models.DateTimeField(_('date joined'))
is_staff = models.BooleanField(verbose_name='флаг персонала', default=False,
help_text='Определяет разрешение пользователя на вход в административную часть.')
is_active = models.BooleanField(verbose_name='активен', default=False,

Loading…
Cancel
Save