Contents¶
Overview¶
docs | |
---|---|
tests | |
package |
Share development fixtures across your team, with git commit id tracing and autodetect.
- Free software: BSD license
Installation¶
Currently this package requires git, psql, pg_dump createdb, dropdb and unzip to function.
pip install django-devfixtures
Configuration¶
Add devfixtures to INSTALLED_APPS.
settings.DEVFIXTURE_DIR # path to directory where auto generated fixtures should be stored
settings.DEVFIXTURE_BACKUP_DIR # path to where backups are stored when running restore
How it works¶
When you create a fixture (without any arguments) the management command will zip MEDIA_FILES and database dump to a file with naming <AUTHOR_DATE>+<COMMITID>+<CREATED_DATE>+<CREATOR>.zip.
The auto restore function will check from HEAD and backards in the commit tree, and when it finds a fixture file with that commit id, it will restore that version after a backup of the current state has been created. If the restore for some reason fails, it will attempt to restore the backuped fixture.
This works with the following criterias:
- You will not rebase/rewrite history, as commit ids might no longer match
- You will not delete migrations manually
It also have the limitations to unly work with PostgreSQL. And there are some current limitations, due to the fact that the implementation uses pg_dump etc for creating dumps. Requirements:
- The database name is defined in settings.DATABASES[‘default’][‘NAME’]
- The running user have permissions to dropdb/createdb
Storing the dev_fixtures in git¶
Devfixtures can become large, if you have big set of media files. If you use github, you are encouraged to use git-lfs to store the files. Read about git lfs here: https://git-lfs.github.com/
Add devfixtures/* to your tracked git lfs files before you add your first fixture to git.
# git lfs track 'dev_fixtures/*'
Usage¶
Create fixture:
# ./manage.py devfixture create
Restore fixture:
# ./manage.py devfixture restore
Create manual fixture sharing, for example if you have a branch and you want some other developer to take a look at a bug. Run this and send the zip file to the other developer:
# ./manage.py devfixture create -f ~/Desktop/devfixture-for-peter-debugging.zip
To load a shared fixture:
# ./manage.py devfixture restore -f ~/Desktop/devfixture-for-peter-debugging.zip
When running restore, a backup is always created. You can restore it the same way as above.
# ./manage.py devfixture -h
Documentation¶
Development¶
To run the all tests run:
tox
Note, to combine the coverage data from all the tox environments run:
Windows | set PYTEST_ADDOPTS=--cov-append
tox
|
---|---|
Other | PYTEST_ADDOPTS=--cov-append tox
|
Contributing¶
Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.
Bug reports¶
When reporting a bug please include:
- Your operating system name and version.
- Any details about your local setup that might be helpful in troubleshooting.
- Detailed steps to reproduce the bug.
Documentation improvements¶
Django DevFixtures could always use more documentation, whether as part of the official Django DevFixtures docs, in docstrings, or even on the web in blog posts, articles, and such.
Feature requests and feedback¶
The best way to send feedback is to file an issue at https://github.com/dolphinkiss/django-devfixtures/issues.
If you are proposing a feature:
- Explain in detail how it would work.
- Keep the scope as narrow as possible, to make it easier to implement.
- Remember that this is a volunteer-driven project, and that code contributions are welcome :)
Development¶
To set up django-devfixtures for local development:
Fork django-devfixtures (look for the “Fork” button).
Clone your fork locally:
git clone git@github.com:your_name_here/django-devfixtures.git
Create a branch for local development:
git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
When you’re done making changes, run all the checks, doc builder and spell checker with tox one command:
tox
Commit your changes and push your branch to GitHub:
git add . git commit -m "Your detailed description of your changes." git push origin name-of-your-bugfix-or-feature
Submit a pull request through the GitHub website.
Pull Request Guidelines¶
If you need some code review or feedback while you’re developing the code just make the pull request.
For merging, you should:
- Include passing tests (run
tox
) [1]. - Update documentation when there’s new API, functionality etc.
- Add a note to
CHANGELOG.rst
about the changes. - Add yourself to
AUTHORS.rst
.
[1] | If you don’t have all the necessary python versions available locally you can rely on Travis - it will run the tests for each change you add in the pull request. It will be slower though ... |
Tips¶
To run a subset of tests:
tox -e envname -- py.test -k test_myfeature
To run all the test environments in parallel (you need to pip install detox
):
detox
Authors¶
- Peter Lauri - https://github.com/peterlauri