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

# 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),
]