Wtower / django-ninecms

Nine CMS is a simple Django app to manage content. Users can create content and publish it to various paths.
BSD 3-Clause "New" or "Revised" License
42 stars 6 forks source link

Error in custom migration 0009 #59

Closed Wtower closed 2 years ago

Wtower commented 8 years ago

The custom migration 0009 in line 30:

https://github.com/Wtower/django-ninecms/blob/devel/ninecms/migrations/0009_auto_20150924_1456.py#L30

Does not sufficiently check if the media/ninecms folder exists, which rarely happens in a clean migrate. This results in the following traceback:

(myvirtualenv) wtower@dev ~/w/p/myproject (master)> ./manage.py migrate
Operations to perform:
  Apply all migrations: contenttypes, auth, guardian, sessions, admin, ninecms
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying guardian.0001_initial... OK
  Applying ninecms.0001_squashed_0024_auto_20150416_1551... OK
  Applying ninecms.0002_auto_20150519_1102... OK
  Applying ninecms.0003_auto_20150623_1731... OK
  Applying ninecms.0004_auto_20150624_1131... OK
  Applying ninecms.0005_auto_20150624_1841... OK
  Applying ninecms.0006_auto_20150701_1401... OK
  Applying ninecms.0007_auto_20150727_1833... OK
  Applying ninecms.0008_auto_20150819_1516... OK
  Applying ninecms.0009_auto_20150924_1456...Traceback (most recent call last):
  File "./manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File ".../lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File ".../lib/python3.5/site-packages/django/core/management/__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File ".../lib/python3.5/site-packages/django/core/management/base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File ".../lib/python3.5/site-packages/django/core/management/base.py", line 399, in execute
    output = self.handle(*args, **options)
  File ".../lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 200, in handle
    executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)
  File ".../lib/python3.5/site-packages/django/db/migrations/executor.py", line 92, in migrate
    self._migrate_all_forwards(plan, full_plan, fake=fake, fake_initial=fake_initial)
  File ".../lib/python3.5/site-packages/django/db/migrations/executor.py", line 121, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File ".../lib/python3.5/site-packages/django/db/migrations/executor.py", line 198, in apply_migration
    state = migration.apply(state, schema_editor)
  File ".../lib/python3.5/site-packages/django/db/migrations/migration.py", line 123, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File ".../lib/python3.5/site-packages/django/db/migrations/operations/special.py", line 183, in database_forwards
    self.code(from_state.apps, schema_editor)
  File ".../lib/python3.5/site-packages/ninecms/migrations/0009_auto_20150924_1456.py", line 30, in migrate_path_file_name
    for folder in os.listdir(basedir):
FileNotFoundError: [Errno 2] No such file or directory: '.../media/ninecms'

Workaround: Manually create the directory before running migrations.