diff --git a/apps/course/management/__init__.py b/apps/course/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/course/management/commands/__init__.py b/apps/course/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/course/management/commands/update_courses_slug.py b/apps/course/management/commands/update_courses_slug.py new file mode 100644 index 00000000..24999a2e --- /dev/null +++ b/apps/course/management/commands/update_courses_slug.py @@ -0,0 +1,20 @@ +from unidecode import unidecode + +from django.core.management.base import BaseCommand, CommandError +from django.db.models import Q +from django.utils.text import slugify +from apps.course.models import Course + + +class Command(BaseCommand): + help = 'Upload users to Roistat' + + def handle(self, *args, **options): + courses = Course.objects.filter(Q(slug__isnull=True) | Q(slug='')) + for course in courses: + course.slug = slugify(unidecode(course.title[:90])) + try: + course.save() + except: + course.slug += str(course.id) + course.save() diff --git a/apps/course/models.py b/apps/course/models.py index 42a1dd81..b11156f4 100644 --- a/apps/course/models.py +++ b/apps/course/models.py @@ -1,10 +1,13 @@ import arrow from random import shuffle from uuid import uuid4 +from unidecode import unidecode + from django.db import models from django.core.exceptions import ValidationError from django.utils import timezone from django.utils.timezone import now +from django.utils.text import slugify from django.contrib.auth import get_user_model from django.urls import reverse_lazy from django.conf import settings @@ -119,17 +122,14 @@ class Course(BaseModel, DeactivatedMixin): def __str__(self): return str(self.id) + ' ' + self.title - # def save(self, *args, **kwargs): - # if not self.slug: - # self.slug = slugify( - # self.title[:90], - # allow_unicode=True - # ) + def save(self, *args, **kwargs): + if not self.slug: + self.slug = slugify(unidecode(self.title[:90])) - # if Course.objects.filter(slug=self.slug).exclude(id=self.id).exists(): - # self.slug += '_' + str(uuid4())[:6] + if Course.objects.filter(slug=self.slug).exclude(id=self.id).exists(): + self.slug += str(uuid4())[-3:] - # return super().save() + return super().save() @property def url(self): diff --git a/requirements.txt b/requirements.txt index 6107112a..78736651 100644 --- a/requirements.txt +++ b/requirements.txt @@ -36,3 +36,4 @@ short_url sendgrid drf_dynamic_fields flower==0.9.2 +unidecode