Added a model for event state (including data migration, signal based
notifications, etc.)
This commit is contained in:
61
dav_events/migrations/0021_create_flags.py
Normal file
61
dav_events/migrations/0021_create_flags.py
Normal file
@@ -0,0 +1,61 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
from dav_events.models.eventstatus import get_event_status
|
||||
|
||||
|
||||
def create_stati(apps, schema_editor):
|
||||
l = ('draft', 'submitted', 'accepted', 'publishing', 'published', 'expired')
|
||||
for c in l:
|
||||
get_event_status(c)
|
||||
|
||||
|
||||
def create_flags(apps, schema_editor):
|
||||
EventStatus = apps.get_model('dav_events', 'EventStatus')
|
||||
EventFlag = apps.get_model('dav_events', 'EventFlag')
|
||||
Event = apps.get_model('dav_events', 'Event')
|
||||
for event in Event.objects.all():
|
||||
if not len(event.flags.filter(status__code='draft')):
|
||||
status = EventStatus.objects.get(code='draft')
|
||||
flag = EventFlag(event=event, status=status, timestamp=event.created_at, user=event.owner)
|
||||
flag.save()
|
||||
|
||||
if not len(event.flags.filter(status__code='submitted')):
|
||||
status = EventStatus.objects.get(code='submitted')
|
||||
flag = EventFlag(event=event, status=status, timestamp=event.created_at, user=event.owner)
|
||||
flag.save()
|
||||
|
||||
if event.accepted and not len(event.flags.filter(status__code='accepted')):
|
||||
status = EventStatus.objects.get(code='accepted')
|
||||
flag = EventFlag(event=event, status=status, timestamp=event.accepted_at, user=event.accepted_by)
|
||||
flag.save()
|
||||
|
||||
if event.publication_confirmed:
|
||||
if event.planned_publication_date:
|
||||
if not len(event.flags.filter(status__code='publishing')):
|
||||
status = EventStatus.objects.get(code='publishing')
|
||||
flag = EventFlag(event=event, status=status,
|
||||
timestamp=event.publication_confirmed_at,
|
||||
user=event.publication_confirmed_by)
|
||||
flag.save()
|
||||
else:
|
||||
if not len(event.flags.filter(status__code='published')):
|
||||
status = EventStatus.objects.get(code='published')
|
||||
flag = EventFlag(event=event, status=status,
|
||||
timestamp=event.publication_confirmed_at,
|
||||
user=event.publication_confirmed_by)
|
||||
flag.save()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('dav_events', '0020_auto_20180704_1202'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(create_stati),
|
||||
migrations.RunPython(create_flags),
|
||||
]
|
||||
Reference in New Issue
Block a user