django-media-fixtures-next

Simple project to copy media files (intended for fixtures loads), pretty much as Django staticfiles does


Keywords
django, collectmedia, mediafiles, mediafixtures, fixtures, media
License
MIT
Install
pip install django-media-fixtures-next==1.0.1

Documentation

Build Status Coverage PyPI Version Python Versions License

django-media-fixtures

Simple project to copy media files (intended for fixtures loads) to the file storage, pretty much as the django.contrib.staticfiles app does.

Hint: This is a fork of the original package which is no longer maintained

Changelog

  • 1.0.1: Include PR to fix Django 4 smart_text exceptions

Dependencies

  • Python 3.5+
  • Django 1.8+

Note: The version (v1.x.x) dropped support of Python2! If you still need Python2, please check the last version of v0.1.x series

Installation

pip install django-media-fixtures==1.0.1

Then, add the django_media_fixtures app in your settings.INSTALLED_APPS:

INSTALLED_APPS = [
    ...,
    'django.contrib.staticfiles',
    'django_media_fixtures',
    ...
]

Usage

The app provides a management command collectmedia:

python manage.py collectmedia

This works similarly to collectstatic: finds the media_fixtures subdirectory in the apps directories, and copies those files to the settings.MEDIA_ROOT.

So, when you create your fixture (by any means, even through shell), put your file path matching the same tree folder layout as it should be in the MEDIA_ROOT destination.

For instance:

YourModel.objects.get_or_create(image="uploads/yourmodel/img/example.jpeg")

Where the file example.jpeg is found in yourappfolder/media_fixtures/uploads/yourmodel/img/example.jpeg. The collectmedia management command will copy this file to uploads/yourmodel/img/example.jpeg inside the settings.MEDIA_ROOT directory.

Configurations

  • MEDIA_FIXTURE_FOLDERNAME

    You can change the media fixtures folder's name on your apps, just putting this variable on settings.py.

    MEDIA_FIXTURE_FOLDERNAME='my_media_fixtures_folder'
  • MEDIA_FIXTURES_FILES_FINDERS

    You can change the media fixtures finders, to search media files on other folders not in-app, for instance.

    MEDIA_FIXTURES_FILES_FINDERS = (
            'django_media_fixtures.finders.FileSystemFinder',      # combined with MEDIA_FIXTURES_FILES_DIRS, choose specific folders
            'django_media_fixtures.finders.AppDirectoriesFinder',  # default (if you do not set MEDIA_FIXTURES_FILES_FINDERS)
    )
  • MEDIA_FIXTURES_FILES_DIRS

    You can list specific media folders that you want to include on search.

    MEDIA_FIXTURES_FILES_DIRS = [
        "/home/user/myproject/mediafiles",
        "/opt/webfiles/common/",
    ]