Add through model to user school class connection, migrate all old
classes
This commit is contained in:
parent
ad8409f783
commit
35c981a2f2
|
|
@ -0,0 +1,29 @@
|
|||
# Generated by Django 2.1.15 on 2020-03-03 12:58
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0011_auto_20200302_1613'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='UserSchoolClassConnection',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('active', models.BooleanField(default=True)),
|
||||
('school_class', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.SchoolClass')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='schoolclass',
|
||||
name='users_with_active',
|
||||
field=models.ManyToManyField(blank=True, related_name='school_classes_with_active', through='users.UserSchoolClassConnection', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Generated by Django 2.1.15 on 2020-03-03 12:59
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
from users.models import UserSchoolClassConnection
|
||||
|
||||
|
||||
def forwards(apps, schema_editor):
|
||||
SchoolClass = apps.get_model('users', 'SchoolClass')
|
||||
UserSchoolClassConnection = apps.get_model('users', 'UserSchoolClassConnection')
|
||||
|
||||
for school_class in SchoolClass.objects.all():
|
||||
for user in school_class.users.all():
|
||||
UserSchoolClassConnection.objects.create(user=user, school_class=school_class, active=True)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
('users', '0012_auto_20200303_1258'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forwards)
|
||||
]
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 2.1.15 on 2020-03-03 13:06
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0013_auto_20200303_1259'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='schoolclass',
|
||||
name='users',
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 2.1.15 on 2020-03-03 13:06
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0014_remove_schoolclass_users'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='schoolclass',
|
||||
name='users_with_active',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='schoolclass',
|
||||
name='users',
|
||||
field=models.ManyToManyField(blank=True, related_name='school_classes', through='users.UserSchoolClassConnection', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
|
|
@ -11,6 +11,7 @@ from users.managers import RoleManager, UserRoleManager, UserManager
|
|||
DEFAULT_SCHOOL_ID = 1
|
||||
|
||||
|
||||
|
||||
class User(AbstractUser):
|
||||
last_module = models.ForeignKey('books.Module', related_name='+', on_delete=models.SET_NULL, null=True)
|
||||
avatar_url = models.CharField(max_length=254, blank=True, default='')
|
||||
|
|
@ -69,7 +70,7 @@ class User(AbstractUser):
|
|||
class SchoolClass(models.Model):
|
||||
name = models.CharField(max_length=100, blank=False, null=False, unique=True)
|
||||
is_deleted = models.BooleanField(blank=False, null=False, default=False)
|
||||
users = models.ManyToManyField(get_user_model(), related_name='school_classes', blank=True)
|
||||
users = models.ManyToManyField(get_user_model(), related_name='school_classes', blank=True, through='users.UserSchoolClassConnection')
|
||||
code = models.CharField('Code zum Beitreten', blank=True, null=True, max_length=10, unique=True, default=None)
|
||||
|
||||
class Meta:
|
||||
|
|
@ -175,3 +176,9 @@ class UserRole(models.Model):
|
|||
class UserSetting(models.Model):
|
||||
user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE, related_name='user_setting')
|
||||
selected_class = models.ForeignKey(SchoolClass, blank=True, null=True, on_delete=models.CASCADE)
|
||||
|
||||
|
||||
class UserSchoolClassConnection(models.Model):
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
school_class = models.ForeignKey(SchoolClass, on_delete=models.CASCADE)
|
||||
active = models.BooleanField(default=True)
|
||||
|
|
|
|||
Loading…
Reference in New Issue