285 lines
9.6 KiB
Python
285 lines
9.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Generated by Django 1.10.4 on 2016-12-11 21:13
|
|
from __future__ import unicode_literals
|
|
|
|
import django.db.models.deletion
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
import openslides.utils.models
|
|
|
|
|
|
def move_custom_slides_to_topics(apps, schema_editor):
|
|
"""
|
|
Move all custom slides to new topic model.
|
|
"""
|
|
# We get the model from the versioned app registry;
|
|
# if we directly import it, it will be the wrong version.
|
|
ContentType = apps.get_model("contenttypes", "ContentType")
|
|
CustomSlide = apps.get_model("core", "CustomSlide")
|
|
Item = apps.get_model("agenda", "Item")
|
|
Topic = apps.get_model("topics", "Topic")
|
|
|
|
# Copy data.
|
|
content_type_custom_slide = ContentType.objects.get_for_model(CustomSlide)
|
|
content_type_topic = ContentType.objects.get_for_model(Topic)
|
|
for custom_slide in CustomSlide.objects.all():
|
|
# This line does not create a new Item because this migration model has
|
|
# no method 'get_agenda_title()'. See agenda/signals.py.
|
|
topic = Topic.objects.create(title=custom_slide.title, text=custom_slide.text)
|
|
topic.attachments.add(*custom_slide.attachments.all())
|
|
item = Item.objects.get(
|
|
object_id=custom_slide.pk, content_type=content_type_custom_slide
|
|
)
|
|
item.object_id = topic.pk
|
|
item.content_type = content_type_topic
|
|
item.save(skip_autoupdate=True)
|
|
|
|
# Delete old data.
|
|
CustomSlide.objects.all().delete()
|
|
content_type_custom_slide.delete()
|
|
|
|
|
|
def name_default_projector(apps, schema_editor):
|
|
"""
|
|
Set the name of the default projector to 'Defaultprojector'
|
|
"""
|
|
Projector = apps.get_model("core", "Projector")
|
|
Projector.objects.filter(pk=1).update(name="Default projector")
|
|
|
|
|
|
def remove_old_countdowns_messages(apps, schema_editor):
|
|
"""
|
|
Remove old countdowns and messages created by 2.0 from projector elements which are unusable in 2.1.
|
|
"""
|
|
Projector = apps.get_model("core", "Projector")
|
|
projector = Projector.objects.get(pk=1)
|
|
|
|
projector_config = projector.config
|
|
for key, value in list(projector.config.items()):
|
|
if value.get("name") in ("core/countdown", "core/message"):
|
|
del projector_config[key]
|
|
projector.config = projector_config
|
|
projector.save(skip_autoupdate=True)
|
|
|
|
|
|
def add_projection_defaults(apps, schema_editor):
|
|
"""
|
|
Adds projectiondefaults for messages and countdowns.
|
|
"""
|
|
Projector = apps.get_model("core", "Projector")
|
|
ProjectionDefault = apps.get_model("core", "ProjectionDefault")
|
|
# The default projector (pk=1) is always available.
|
|
default_projector = Projector.objects.get(pk=1)
|
|
|
|
projectiondefaults = []
|
|
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="agenda_all_items", display_name="Agenda", projector=default_projector
|
|
)
|
|
)
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="topics", display_name="Topics", projector=default_projector
|
|
)
|
|
)
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="agenda_list_of_speakers",
|
|
display_name="List of speakers",
|
|
projector=default_projector,
|
|
)
|
|
)
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="agenda_current_list_of_speakers",
|
|
display_name="Current list of speakers",
|
|
projector=default_projector,
|
|
)
|
|
)
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="motions", display_name="Motions", projector=default_projector
|
|
)
|
|
)
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="motionBlocks",
|
|
display_name="Motion blocks",
|
|
projector=default_projector,
|
|
)
|
|
)
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="assignments", display_name="Elections", projector=default_projector
|
|
)
|
|
)
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="users", display_name="Participants", projector=default_projector
|
|
)
|
|
)
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="mediafiles", display_name="Files", projector=default_projector
|
|
)
|
|
)
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="messages", display_name="Messages", projector=default_projector
|
|
)
|
|
)
|
|
projectiondefaults.append(
|
|
ProjectionDefault(
|
|
name="countdowns", display_name="Countdowns", projector=default_projector
|
|
)
|
|
)
|
|
|
|
# Create all new projectiondefaults
|
|
ProjectionDefault.objects.bulk_create(projectiondefaults)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
("sessions", "0001_initial"),
|
|
("contenttypes", "0002_remove_content_type_name"),
|
|
("core", "0001_initial"),
|
|
(
|
|
"agenda",
|
|
"0001_initial",
|
|
), # ('agenda', '0002_item_duration') is not required but would be also ok.
|
|
("topics", "0001_initial"),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name="Countdown",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.AutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("description", models.CharField(blank=True, max_length=256)),
|
|
("running", models.BooleanField(default=False)),
|
|
("default_time", models.PositiveIntegerField(default=60)),
|
|
("countdown_time", models.FloatField(default=60)),
|
|
],
|
|
options={"default_permissions": ()},
|
|
bases=(openslides.utils.models.RESTModelMixin, models.Model),
|
|
),
|
|
migrations.CreateModel(
|
|
name="ProjectionDefault",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.AutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("name", models.CharField(max_length=256)),
|
|
("display_name", models.CharField(max_length=256)),
|
|
],
|
|
options={"default_permissions": ()},
|
|
bases=(openslides.utils.models.RESTModelMixin, models.Model),
|
|
),
|
|
migrations.CreateModel(
|
|
name="ProjectorMessage",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.AutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("message", models.TextField(blank=True)),
|
|
],
|
|
options={"default_permissions": ()},
|
|
bases=(openslides.utils.models.RESTModelMixin, models.Model),
|
|
),
|
|
migrations.CreateModel(
|
|
name="Session",
|
|
fields=[
|
|
(
|
|
"session_ptr",
|
|
models.OneToOneField(
|
|
auto_created=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
parent_link=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
to="sessions.Session",
|
|
),
|
|
),
|
|
(
|
|
"user",
|
|
models.ForeignKey(
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
],
|
|
options={"default_permissions": ()},
|
|
bases=("sessions.session",),
|
|
),
|
|
migrations.RunPython(move_custom_slides_to_topics),
|
|
migrations.RemoveField(model_name="customslide", name="attachments"),
|
|
migrations.DeleteModel(name="CustomSlide"),
|
|
migrations.AlterModelOptions(
|
|
name="chatmessage",
|
|
options={
|
|
"default_permissions": (),
|
|
"permissions": (
|
|
("can_use_chat", "Can use the chat"),
|
|
("can_manage_chat", "Can manage the chat"),
|
|
),
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name="projector",
|
|
name="blank",
|
|
field=models.BooleanField(default=False),
|
|
),
|
|
migrations.AddField(
|
|
model_name="projector",
|
|
name="height",
|
|
field=models.PositiveIntegerField(default=915),
|
|
),
|
|
migrations.AddField(
|
|
model_name="projector",
|
|
name="name",
|
|
field=models.CharField(blank=True, max_length=255, unique=True),
|
|
),
|
|
migrations.AddField(
|
|
model_name="projector",
|
|
name="width",
|
|
field=models.PositiveIntegerField(default=1220),
|
|
),
|
|
migrations.AddField(
|
|
model_name="projectiondefault",
|
|
name="projector",
|
|
field=models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="projectiondefaults",
|
|
to="core.Projector",
|
|
),
|
|
),
|
|
migrations.RunPython(name_default_projector),
|
|
migrations.RunPython(remove_old_countdowns_messages),
|
|
migrations.RunPython(add_projection_defaults),
|
|
]
|