0001-agendas-fix-event-slug-migration-45006.patch
chrono/agendas/migrations/0049_event_slug.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
from __future__ import unicode_literals |
3 | 3 | |
4 |
import uuid |
|
5 | ||
4 | 6 |
from django.db import migrations |
5 | 7 |
from django.utils.text import slugify |
6 | 8 | |
... | ... | |
20 | 22 | |
21 | 23 |
def set_slug_on_events(apps, schema_editor): |
22 | 24 |
Event = apps.get_model('agendas', 'Event') |
23 |
for event in Event.objects.all().order_by('-pk'): |
|
24 |
if event.slug and not Event.objects.filter(slug=event.slug).exclude(pk=event.pk).exists(): |
|
25 |
for event in Event.objects.filter(agenda__kind='meetings'): |
|
26 |
# set slug on meeting events |
|
27 |
event.slug = str(uuid.uuid4()) |
|
28 |
event.save(update_fields=['slug']) |
|
29 |
for event in Event.objects.exclude(agenda__kind='meetings').order_by('-pk'): |
|
30 |
# set slug on other events |
|
31 |
if ( |
|
32 |
event.slug |
|
33 |
and not Event.objects.filter(slug=event.slug, agenda=event.agenda_id) |
|
34 |
.exclude(pk=event.pk) |
|
35 |
.exists() |
|
36 |
): |
|
25 | 37 |
continue |
26 | 38 |
event.slug = generate_slug(event) |
27 | 39 |
event.save(update_fields=['slug']) |
28 |
- |