Created
July 9, 2015 14:43
-
-
Save ajrouvoet/cba51fc46362d38ba825 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
from __future__ import unicode_literals | |
from django.db import models, migrations | |
import datetime | |
def create_lichtingen(apps, schema_editor): | |
Profiel = apps.get_model("base", "Profiel") | |
Lichting = apps.get_model("base", "Lichting") | |
migration_user = Profiel.objects.get(uid="9999") | |
Lichting.objects.create( | |
naam="Onbekende lichting", | |
status = "ht", | |
familie = "Lichting", | |
maker_user = migration_user, | |
lidjaar=0 | |
) | |
for lidjaar in range(1950, 2015): | |
Lichting.objects.create( | |
naam="Lichting %s" % str(lidjaar), | |
lidjaar=lidjaar, | |
status = "ht", | |
familie = "Lichting", | |
maker_user = migration_user, | |
) | |
def lichting_groep_fill(apps, schema_editor): | |
Profiel = apps.get_model("base", "Profiel") | |
Lichting = apps.get_model("base", "Lichting") | |
lichtingen = dict(list(map(lambda l: (l.lidjaar, l), Lichting.objects.all()))) | |
migration_user = Profiel.objects.get(uid="9999") | |
for prof in Profiel.objects.all(): | |
if prof.lidjaar in lichtingen.keys(): | |
lichting = lichtingen.get(prof.lidjaar) | |
lichting.leden.create( | |
user=prof, | |
opmerking="", | |
lid_sinds=datetime.date(max(prof.lidjaar, datetime.MINYEAR), 1, 1), | |
door_user=migration_user | |
) | |
else: | |
print("Lid %s has invalid lidjaar %s" % (str(prof.uid), str(prof.lidjaar))) | |
class Migration(migrations.Migration): | |
dependencies = [ | |
('base', '0007_remove_profiel_verticale'), | |
] | |
operations = [ | |
# inside transaction by default | |
migrations.RunPython(create_lichtingen), | |
migrations.RunPython(lichting_groep_fill), | |
] | |
GIVES ERROR: | |
Traceback (most recent call last): | |
File "./manage.py", line 10, in <module> | |
execute_from_command_line(sys.argv) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line | |
utility.execute() | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/core/management/__init__.py", line 330, in execute | |
self.fetch_command(subcommand).run_from_argv(self.argv) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/core/management/commands/test.py", line 30, in run_from_argv | |
super(Command, self).run_from_argv(argv) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/core/management/base.py", line 390, in run_from_argv | |
self.execute(*args, **cmd_options) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/core/management/commands/test.py", line 74, in execute | |
super(Command, self).execute(*args, **options) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/core/management/base.py", line 441, in execute | |
output = self.handle(*args, **options) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/core/management/commands/test.py", line 90, in handle | |
failures = test_runner.run_tests(test_labels) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/test/runner.py", line 210, in run_tests | |
old_config = self.setup_databases() | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/test/runner.py", line 166, in setup_databases | |
**kwargs | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/test/runner.py", line 370, in setup_databases | |
serialize=connection.settings_dict.get("TEST", {}).get("SERIALIZE", True), | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/db/backends/base/creation.py", line 368, in create_test_db | |
test_flush=True, | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/core/management/__init__.py", line 120, in call_command | |
return command.execute(*args, **defaults) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/core/management/base.py", line 441, in execute | |
output = self.handle(*args, **options) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/core/management/commands/migrate.py", line 221, in handle | |
executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/db/migrations/executor.py", line 110, in migrate | |
self.apply_migration(states[migration], migration, fake=fake, fake_initial=fake_initial) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/db/migrations/executor.py", line 147, in apply_migration | |
state = migration.apply(state, schema_editor) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/db/migrations/migration.py", line 115, in apply | |
operation.database_forwards(self.app_label, schema_editor, old_state, project_state) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/db/migrations/operations/special.py", line 181, in database_forwards | |
self.code(from_state.apps, schema_editor) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/src/base/migrations/0008_data_lichting_leden.py", line 17, in create_lichtingen | |
lidjaar=0 | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/db/models/manager.py", line 127, in manager_method | |
return getattr(self.get_queryset(), name)(*args, **kwargs) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/db/models/query.py", line 346, in create | |
obj = self.model(**kwargs) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/db/models/base.py", line 468, in __init__ | |
setattr(self, field.name, rel_obj) | |
File "/home/arjen/repositories/pubcie/django.csrdelft.nl/.virtualenv/lib/python3.4/site-packages/django/db/models/fields/related.py", line 627, in __set__ | |
self.field.rel.to._meta.object_name, | |
ValueError: Cannot assign "<Profiel: Profiel object>": "Lichting.maker_user" must be a "Profiel" instance. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment