проверить работу ссылок на курсы в админке, сделать все ссылки на курсы по slug (менеджмент командой)

remotes/origin/hotfix/courses_slug_url_20-01-19
gzbender 7 years ago
parent b4edcad736
commit ad27a712a6
  1. 0
      apps/course/management/__init__.py
  2. 0
      apps/course/management/commands/__init__.py
  3. 20
      apps/course/management/commands/update_courses_slug.py
  4. 18
      apps/course/models.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()

@ -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):

Loading…
Cancel
Save