Skip to content
Snippets Groups Projects
Verified Commit 275ad99f authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Move existing data migrations to new places

parent 8bd1b47e
No related branches found
No related tags found
1 merge request!154Maintain default data and implement app hooks
......@@ -11,3 +11,19 @@ class CoreConfig(AppConfig):
def config_updated(self, *args, **kwargs) -> None:
clean_scss()
def post_migrate(
self,
app_config: django.apps.AppConfig,
verbosity: int,
interactive: bool,
using: str,
plan: List[Tuple],
apps: django.apps.Apps,
) -> None:
super().post_migrate(app_config, verbosity, interactive, using, plan, apps)
# Ensure presence of a OTP YubiKey default config
apps.get_model('otp_yubikey', 'ValidationService').objects.using(using).update_or_create(
name='default', defaults={'use_ssl': True, 'param_sl': '', 'param_timeout': ''}
)
......@@ -14,6 +14,7 @@ class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('otp_yubikey', '0001_initial'),
]
operations = [
......
from django.db import migrations, models
from datetime import date
def create_or_mark_current_term(apps, schema_editor):
db_alias = schema_editor.connection.alias
SchoolTerm = apps.get_model('core', 'SchoolTerm') # noqa
if not SchoolTerm.objects.filter(current=True).exists():
if SchoolTerm.objects.using(db_alias).exists():
term = SchoolTerm.objects.using(db_alias).latest('date_start')
term.current=True
term.save()
else:
SchoolTerm.objects.using(db_alias).create(date_start=date.today(), current=True)
class Migration(migrations.Migration):
dependencies = [
('core', '0005_add_verbose_names_meta'),
]
operations = [
migrations.RunPython(create_or_mark_current_term)
]
from django.contrib.auth import get_user_model
from django.db import migrations
def create_superuser(apps, schema_editor):
User = get_user_model()
if not User.objects.filter(is_superuser=True).exists():
User.objects.create_superuser(
username='admin',
email='root@example.com',
password='admin'
).save()
class Migration(migrations.Migration):
dependencies = [
('core', '0006_create_default_term'),
]
operations = [
migrations.RunPython(create_superuser)
]
......@@ -7,7 +7,7 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0007_create_admin_user'),
('core', '0005_add_verbose_names_meta.py'),
]
operations = [
......
from django.db import migrations
def create_validation_service(apps, schema_editor):
apps.get_model('otp_yubikey', 'ValidationService').objects.update_or_create(
name='default', defaults={'use_ssl': True, 'param_sl': '', 'param_timeout': ''}
)
class Migration(migrations.Migration):
dependencies = [
('core', '0009_dashboard_widget'),
('otp_yubikey', '0001_initial'),
]
operations = [
migrations.RunPython(create_validation_service)
]
......@@ -7,7 +7,7 @@ import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('core', '0010_create_validation_service'),
('core', '0009_dashboard_widget.py'),
]
operations = [
......
from datetime import date
from typing import Optional
from django.contrib.auth import get_user_model
......@@ -62,6 +63,16 @@ class SchoolTerm(ExtensibleModel):
self.current = None
super().save(*args, **kwargs)
@classmethod
def maintain_default_data(cls):
if not cls.objects.filter(current=True).exists():
if cls.objects.exists():
term = cls.objects.latest('date_start')
term.current=True
term.save()
else:
cls.objects.create(date_start=date.today(), current=True)
class Meta:
verbose_name = _("School term")
verbose_name_plural = _("School terms")
......@@ -171,6 +182,22 @@ class Person(ExtensibleModel):
def __str__(self) -> str:
return self.full_name
@classmethod
def maintain_default_data(cls):
# First, ensure we have an admin user
User = get_user_model()
if not User.objects.filter(is_superuser=True).exists():
admin = User.objects.create_superuser(
username='admin',
email='root@example.com',
password='admin'
)
admin.save()
# Ensure this admin user has a person linked to it
person = Person(user=admin)
person.save()
class Group(ExtensibleModel):
"""Any kind of group of persons in a school, including, but not limited
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment