You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.5 KiB
45 lines
1.5 KiB
# Generated by Django 3.2.4 on 2025-10-06 11:01
|
|
|
|
from django.db import migrations, models
|
|
from django.utils.text import slugify
|
|
|
|
|
|
def generate_professor_slugs(apps, schema_editor):
|
|
User = apps.get_model('account', 'User')
|
|
qs = User.objects.filter(user_type='professor').filter(models.Q(slug__isnull=True) | models.Q(slug=''))
|
|
for user in qs.iterator():
|
|
base = slugify(user.fullname, allow_unicode=True) if user.fullname else ''
|
|
base = base[:250] or f"professor-{user.pk}"
|
|
slug = base
|
|
counter = 1
|
|
while User.objects.filter(slug=slug).exclude(pk=user.pk).exists():
|
|
slug = f"{base}-{counter}"[:255]
|
|
counter += 1
|
|
user.slug = slug
|
|
user.save(update_fields=['slug'])
|
|
|
|
|
|
def remove_professor_slugs(apps, schema_editor):
|
|
User = apps.get_model('account', 'User')
|
|
User.objects.filter(user_type='professor').update(slug=None)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('account', '0005_alter_user_unique_together'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name='user',
|
|
name='experience_years',
|
|
field=models.PositiveIntegerField(default=0, verbose_name='Experience years'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='user',
|
|
name='slug',
|
|
field=models.SlugField(blank=True, max_length=255, null=True, unique=True),
|
|
),
|
|
migrations.RunPython(generate_professor_slugs, remove_professor_slugs),
|
|
]
|