OpenSlides/openslides/motions/migrations/0002_misc_features.py

192 lines
6.5 KiB
Python

# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2016-12-11 21:23
from __future__ import unicode_literals
import django.db.models.deletion
import jsonfield.fields
from django.conf import settings
from django.db import migrations, models
import openslides.utils.models
def change_label_of_state(apps, schema_editor):
"""
Changes the label of former state "commited a bill" to "refered to committee".
"""
# We get the model from the versioned app registry;
# if we directly import it, it will be the wrong version.
State = apps.get_model("motions", "State")
try:
state = State.objects.get(name="commited a bill")
except State.DoesNotExist:
# State does not exists, there is nothing to change.
pass
else:
state.name = "refered to committee"
state.action_word = "Refer to committee"
state.save(skip_autoupdate=True)
def add_recommendation_labels(apps, schema_editor):
"""
Adds recommendation labels to some of the built-in states.
"""
# We get the model from the versioned app registry;
# if we directly import it, it will be the wrong version.
State = apps.get_model("motions", "State")
name_label_map = {
"accepted": "Acceptance",
"rejected": "Rejection",
"not decided": "No decision",
"permitted": "Permission",
"adjourned": "Adjournment",
"not concerned": "No concernment",
"refered to committee": "Referral to committee",
"rejected (not authorized)": "Rejection (not authorized)",
}
for state in State.objects.all():
if name_label_map.get(state.name):
state.recommendation_label = name_label_map[state.name]
state.save(skip_autoupdate=True)
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("motions", "0001_initial"),
]
operations = [
migrations.CreateModel(
name="MotionBlock",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("title", models.CharField(max_length=255)),
],
options={"default_permissions": ()},
bases=(openslides.utils.models.RESTModelMixin, models.Model),
),
migrations.CreateModel(
name="MotionChangeRecommendation",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("rejected", models.BooleanField(default=False)),
("type", models.PositiveIntegerField(default=0)),
("line_from", models.PositiveIntegerField()),
("line_to", models.PositiveIntegerField()),
("text", models.TextField(blank=True)),
("creation_time", models.DateTimeField(auto_now=True)),
(
"author",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to=settings.AUTH_USER_MODEL,
),
),
(
"motion_version",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="change_recommendations",
to="motions.MotionVersion",
),
),
],
options={"default_permissions": ()},
bases=(openslides.utils.models.RESTModelMixin, models.Model),
),
migrations.AlterModelOptions(
name="motion",
options={
"default_permissions": (),
"ordering": ("identifier",),
"permissions": (
("can_see", "Can see motions"),
("can_create", "Can create motions"),
("can_support", "Can support motions"),
("can_see_and_manage_comments", "Can see and manage comments"),
("can_manage", "Can manage motions"),
),
"verbose_name": "Motion",
},
),
migrations.AddField(
model_name="motion",
name="comments",
field=jsonfield.fields.JSONField(null=True),
),
migrations.AddField(
model_name="motion",
name="origin",
field=models.CharField(blank=True, max_length=255),
),
migrations.AddField(
model_name="motion",
name="recommendation",
field=models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="motions.State",
),
),
migrations.AddField(
model_name="state",
name="recommendation_label",
field=models.CharField(max_length=255, null=True),
),
migrations.AddField(
model_name="state",
name="show_recommendation_extension_field",
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name="state",
name="show_state_extension_field",
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name="motion",
name="state",
field=models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="motions.State",
),
),
migrations.AddField(
model_name="motion",
name="motion_block",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="motions.MotionBlock",
),
),
migrations.RunPython(change_label_of_state),
migrations.RunPython(add_recommendation_labels),
]