Ticket #374 (closed defect: fixed)

Opened 4 years ago

Last modified 4 years ago

import leaks

Reported by: artem.skvira@… Owned by: andrew
Priority: minor Milestone: 0.7
Component: migrations Version: 0.6.2
Keywords: import Cc:


When importing datetime in a migration, like this:

from datetime import datetime

class Migration:

def forwards(self, orm):

d = datetime.now()

it gets replaced somehow with straight datetime module import, producing the following error when execution hits .now():

Running migrations for x:

  • Migrating forwards to 0003_xxxxx.

    x: 0002_xxxxx

Traceback (most recent call last):

File "./manage.py", line 14, in <module>


File "/usr/lib/pymodules/python2.6/django/core/management/init.py", line 362, in execute_manager


File "/usr/lib/pymodules/python2.6/django/core/management/init.py", line 303, in execute


File "/usr/lib/pymodules/python2.6/django/core/management/base.py", line 195, in run_from_argv

self.execute(*args, options.dict)

File "/usr/lib/pymodules/python2.6/django/core/management/base.py", line 222, in execute

output = self.handle(*args, options)

File "/home/user/Dropbox/x/external/south/management/commands/migrate.py", line 91, in handle

skip = skip,

File "/home/user/Dropbox/x/external/south/migration.py", line 581, in migrate_app

result = run_forwards(mapp, [mname], fake=fake, db_dry_run=db_dry_run, verbosity=verbosity)

File "/home/user/Dropbox/x/external/south/migration.py", line 388, in run_forwards

verbosity = verbosity,

File "/home/user/Dropbox/x/external/south/migration.py", line 329, in run_migrations


File "/home/user/Dropbox/x/billing/migrations/0002_xxxxxxx.py", line 15, in forwards


AttributeError?: 'module' object has no attribute 'now'

Change History

comment:1 Changed 4 years ago by andrew

  • Status changed from new to closed
  • Resolution set to fixed
  • Milestone set to 0.7

This is (unfortunately) a WONTFIX; the datetime module has to be overridden inside the migration to allow our generated field definitions to work (the repr() of dates/datetimes assumes you've imported the datetime module, not the datetime object).

Since this isn't a big blocker (you can always just use datetime.datetime, or move the import to inside the method definition), I'm not inclined to fix this, as it would break backwards compatability (it was arguably a bad decision at the time, but I'm stuck with it).

Note: See TracTickets for help on using tickets.