Added a model for event state (including data migration, signal based
notifications, etc.)
This commit is contained in:
@@ -79,7 +79,7 @@ class Migration(migrations.Migration):
|
||||
('trainer_3_phone', models.CharField(blank=True, max_length=250)),
|
||||
('charge', models.FloatField(default=0)),
|
||||
('additional_costs', models.CharField(blank=True, max_length=250)),
|
||||
('owner', models.ForeignKey(null=True, on_delete=models.SET(dav_events.models.get_ghost_user), related_name='events', to=settings.AUTH_USER_MODEL)),
|
||||
('owner', models.ForeignKey(null=True, on_delete=models.SET(dav_events.utils.get_ghost_user), related_name='events', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'ordering': ['first_day'],
|
||||
|
||||
@@ -19,7 +19,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='accepted_by',
|
||||
field=models.ForeignKey(null=True, on_delete=models.SET(dav_events.models.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL),
|
||||
field=models.ForeignKey(null=True, on_delete=models.SET(dav_events.utils.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
|
||||
@@ -22,7 +22,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
name='accepted_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=models.SET(dav_events.models.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL),
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=models.SET(dav_events.utils.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
|
||||
@@ -28,6 +28,6 @@ class Migration(migrations.Migration):
|
||||
migrations.AddField(
|
||||
model_name='event',
|
||||
name='published_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=models.SET(dav_events.models.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL),
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=models.SET(dav_events.utils.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
|
||||
@@ -29,7 +29,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
name='accepted_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=models.SET(dav_events.models.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Freigegeben durch'),
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=models.SET(dav_events.utils.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Freigegeben durch'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
@@ -239,7 +239,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
name='owner',
|
||||
field=models.ForeignKey(null=True, on_delete=models.SET(dav_events.models.get_ghost_user), related_name='events', to=settings.AUTH_USER_MODEL, verbose_name='Ersteller'),
|
||||
field=models.ForeignKey(null=True, on_delete=models.SET(dav_events.utils.get_ghost_user), related_name='events', to=settings.AUTH_USER_MODEL, verbose_name='Ersteller'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
@@ -269,7 +269,7 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
name='publication_confirmed_by',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=models.SET(dav_events.models.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Ver\xf6ffentlichung best\xe4tigt durch'),
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=models.SET(dav_events.utils.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Ver\xf6ffentlichung best\xe4tigt durch'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
|
||||
57
dav_events/migrations/0020_auto_20180704_1202.py
Normal file
57
dav_events/migrations/0020_auto_20180704_1202.py
Normal file
@@ -0,0 +1,57 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.11 on 2018-07-04 12:02
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import dav_events.models.event
|
||||
import dav_events.utils
|
||||
from django.conf import settings
|
||||
import django.core.validators
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('dav_events', '0019_auto_20180306_2101'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='EventFlag',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('timestamp', models.DateTimeField(default=django.utils.timezone.now)),
|
||||
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='flags', to='dav_events.Event')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['event', 'status', 'timestamp'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EventStatus',
|
||||
fields=[
|
||||
('code', models.CharField(max_length=254, primary_key=True, serialize=False, validators=[django.core.validators.RegexValidator(b'^[0-9a-z]*$', b'Only characters a-z and digits 0-9 are allowed.')])),
|
||||
('severity', models.IntegerField(unique=True)),
|
||||
('label', models.CharField(max_length=254, unique=True)),
|
||||
('bootstrap_context', models.CharField(blank=True, choices=[(b'default', b'default'), (b'primary', b'primary'), (b'success', b'success'), (b'info', b'info'), (b'warning', b'warning'), (b'danger', b'danger')], max_length=20)),
|
||||
],
|
||||
options={
|
||||
'ordering': ['severity'],
|
||||
'verbose_name': 'Veranstaltungsstatus',
|
||||
'verbose_name_plural': 'Veranstaltungsstati',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='eventflag',
|
||||
name='status',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='+', to='dav_events.EventStatus'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='eventflag',
|
||||
name='user',
|
||||
field=models.ForeignKey(default=dav_events.models.event.get_system_user_id, on_delete=models.SET(dav_events.utils.get_ghost_user), related_name='+', to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
||||
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