Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#20933 closed Bug (fixed)

manage.py loaddata stopped working on Django 1.6b2

Reported by: static Owned by: Aymeric Augustin
Component: Database layer (models, ORM) Version: 1.6-beta-1
Severity: Release blocker Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Florian Apolloner)

Hello,

I have a script for loading fixtures that always worked in Django and it suddenly stopped working on Django 1.6b2. It works on 1.5.1, 1.5.2 and 1.6b1.

### Create an app called appname and a folder called fixtures with a file groups.yaml like this:

- fields:
    name: Group1
    permissions: []
  model: auth.group
  pk: 1
- fields:
    name: Group2
    permissions: []
  model: auth.group
  pk: 2
- fields:
    name: Group3
    permissions: []
  model: auth.group
  pk: 3

### Try run on terminal
python manage.py loaddata appname/fixtures/groups.yaml

### Output for Django 1.6b2
.../local/lib/python2.7/site-packages/django/core/management/commands/loaddata.py:218: UserWarning: No fixture named 'appname/fixtures/groups' found.

warnings.warn("No fixture named '%s' found." % fixture_name)

Installed 0 object(s) from 0 fixture(s)

(test was made using PostgreSQL with psycopg2 2.5.1 - I didn't had time to test on other dbs)

Change History (11)

comment:1 by Aymeric Augustin, 11 years ago

The major refactoring in 51aa000378c00a442273f01142acdebc94dec68d may have broken loading fixtures from an absolute path, but it was before 1.6b1. Are you positive it still works in 1.6b1?

It would be extremely helpful if you could bisect to find the commit that introduced the regression.

comment:2 by static, 11 years ago

I am sorry! I just noticed this error now (testing in 1.6). I am sure it works on 1.5.1 and 1.5.2 not in 1.6b1.

Version 0, edited 11 years ago by static (next)

comment:3 by Aymeric Augustin, 11 years ago

Owner: changed from nobody to Aymeric Augustin
Status: newassigned
Triage Stage: UnreviewedAccepted

Right. I must have broken loading fixtures from an absolute path — the third option mentioned here: https://docs.djangoproject.com/en/dev/howto/initial-data/#where-django-finds-fixture-files

comment:4 by static, 11 years ago

Testing done, it doesn't work in 1.6b1 either. I am sorry again.

comment:5 by static, 11 years ago

Version: master1.6-beta-1

comment:6 by Florian Apolloner, 11 years ago

Description: modified (diff)

in reply to:  3 comment:7 by Florian Apolloner, 11 years ago

Replying to aaugustin:

Right. I must have broken loading fixtures from an absolute path — the third option mentioned here: https://docs.djangoproject.com/en/dev/howto/initial-data/#where-django-finds-fixture-files

No, absolute paths work as intended:

./manage.py loaddata `pwd`/appname/fixtures/groups
Installed 3 object(s) from 1 fixture(s)

The issue is relative paths, which aren't documented to work, though it would make sense that they do, I'll see what I can do.

comment:8 by Florian Apolloner, 11 years ago

https://github.com/django/django/pull/1492 Pull request with "not so strict" validation of the path.

comment:9 by Florian Apolloner <florian@…>, 11 years ago

Resolution: fixed
Status: assignedclosed

In 96346ed5adf90849ac5ebd10d74377ed2e0c061c:

Fixed #20933 -- Allowed loaddata to load fixtures from relative paths.

comment:10 by Florian Apolloner <florian@…>, 11 years ago

In 12d364a9b0b4bf820a68104a64ba312c7290518b:

[1.6.x] Fixed #20933 -- Allowed loaddata to load fixtures from relative paths.

Backport of 6e846f7627ecf0dc15053624a23bfbf47535972d from master.

comment:11 by Andrew Godwin <andrew@…>, 11 years ago

In 839940f27f25c2dafaa5b2ec934c2dd6b80903e8:

Fixed #20933 -- Allowed loaddata to load fixtures from relative paths.

Note: See TracTickets for help on using tickets.
Back to Top