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

158 lines
5.7 KiB
Python
Raw Normal View History

# -*- 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
),
]