﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
28080	Migration guesses wrong namespace for Enum defined on class	Curtis Maloney	nobody	"I have the following model:

{{{
class Question(models.Model):
    @enum.unique
    class MODE(enum.IntEnum):
        TEXT = 1
        NUMBER = 2
        CHOICE = 3
 
    question = models.TextField()
    label_text = models.CharField(max_length=200)
    hint = models.CharField(max_length=200, blank=True)
    mode = models.IntegerField(
        default=MODE.TEXT,
        choices=((x.value, x.name.title()) for x in MODE),
    )
}}}

The initial migration generated produces:

{{{
        migrations.CreateModel(
            name='Question',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('question', models.TextField()),
                ('label_text', models.CharField(max_length=200)),
                ('hint', models.CharField(blank=True, max_length=200)),
                ('mode', models.IntegerField(choices=[(1, 'Text'), (2, 'Number'), (3, 'Choice')], default=sheets.models.MODE(1))),
            ],
        ),
}}}

Notice the default... it's sheets.models.MODE instead of sheets.models.Question.MODE

This causes the following traceback:

{{{
Traceback (most recent call last):
  File ""manage.py"", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "".../venv/lib/python3.5/site-packages/django/core/management/__init__.py"", line 363, in execute_from_command_line
    utility.execute()
  File "".../venv/lib/python3.5/site-packages/django/core/management/__init__.py"", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "".../venv/lib/python3.5/site-packages/django/core/management/base.py"", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "".../venv/lib/python3.5/site-packages/django/core/management/base.py"", line 330, in execute
    output = self.handle(*args, **options)
  File "".../venv/lib/python3.5/site-packages/django/core/management/commands/migrate.py"", line 83, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "".../venv/lib/python3.5/site-packages/django/db/migrations/executor.py"", line 20, in __init__
    self.loader = MigrationLoader(self.connection)
  File "".../venv/lib/python3.5/site-packages/django/db/migrations/loader.py"", line 52, in __init__
    self.build_graph()
  File "".../venv/lib/python3.5/site-packages/django/db/migrations/loader.py"", line 203, in build_graph
    self.load_disk()
  File "".../venv/lib/python3.5/site-packages/django/db/migrations/loader.py"", line 114, in load_disk
    migration_module = import_module(""%s.%s"" % (module_name, migration_name))
  File "".../venv/lib/python3.5/importlib/__init__.py"", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File ""<frozen importlib._bootstrap>"", line 986, in _gcd_import
  File ""<frozen importlib._bootstrap>"", line 969, in _find_and_load
  File ""<frozen importlib._bootstrap>"", line 958, in _find_and_load_unlocked
  File ""<frozen importlib._bootstrap>"", line 673, in _load_unlocked
  File ""<frozen importlib._bootstrap_external>"", line 673, in exec_module
  File ""<frozen importlib._bootstrap>"", line 222, in _call_with_frames_removed
  File "".../cloudselect/sheets/migrations/0001_initial.py"", line 10, in <module>
    class Migration(migrations.Migration):
  File "".../cloudselect/sheets/migrations/0001_initial.py"", line 25, in Migration
    ('mode', models.IntegerField(choices=[(1, 'Text'), (2, 'Number'), (3, 'Choice')], default=sheets.models.MODE(1))),
AttributeError: module 'sheets.models' has no attribute 'MODE'
}}}
"	Bug	closed	Migrations	1.11	Normal	duplicate			Unreviewed	0	0	0	0	0	0
