Skip to content

Instantly share code, notes, and snippets.

@ajrouvoet
Created July 9, 2015 14:43
Show Gist options
  • Save ajrouvoet/cba51fc46362d38ba825 to your computer and use it in GitHub Desktop.
Save ajrouvoet/cba51fc46362d38ba825 to your computer and use it in GitHub Desktop.
# -*- 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