{ "info": { "author": "Mikalai Radchuk", "author_email": "mikalai.radchuk@torchbox.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 2.0", "Framework :: Django :: 2.1", "Framework :: Django :: 2.2", "Framework :: Wagtail :: 2", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP :: Site Management" ], "description": "# [wagtailmedia](https://pypi.org/project/wagtailmedia/) [![PyPI](https://img.shields.io/pypi/v/wagtailmedia.svg)](https://pypi.org/project/wagtailmedia/) [![Build Status](https://travis-ci.org/torchbox/wagtailmedia.svg?branch=master)](https://travis-ci.org/torchbox/wagtailmedia)\n\nA module for Wagtail that provides functionality similar to `wagtail.documents` module,\nbut for audio and video files.\n\n## Compatibility\n\n`wagtailmedia` is compatible with Wagtail 2.2 and above. For compatibility with Wagtail 2.1 and 2.0, use the [v0.2.0 release](https://pypi.org/project/wagtailmedia/0.2.0/).\n\n## How to install\n\nInstall using pip:\n\n```sh\npip install wagtailmedia\n```\n\n### Settings\n\nIn your settings file, add `wagtailmedia` to `INSTALLED_APPS`:\n\n```python\nINSTALLED_APPS = [\n # ...\n 'wagtailmedia',\n # ...\n]\n```\n\n### URL configuration\n\nYour project needs to be set up to serve user-uploaded files from `MEDIA_ROOT`.\nYour Django project may already have this in place, but if not, add the following snippet to `urls.py`:\n\n```python\nfrom django.conf import settings\nfrom django.conf.urls.static import static\n\nurlpatterns = [\n # ... the rest of your URLconf goes here ...\n] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\n```\n\nNote that this only works in development mode (`DEBUG = True`);\nin production, you will need to configure your web server to serve files from `MEDIA_ROOT`.\nFor further details, see the Django documentation: [Serving files uploaded by a user during development](https://docs.djangoproject.com/en/stable/howto/static-files/#serving-files-uploaded-by-a-user-during-development)\nand [Deploying static files](https://docs.djangoproject.com/en/stable/howto/static-files/deployment/).\n\nWith this configuration in place, you are ready to run `./manage.py migrate` to create the database tables used by wagtailmedia.\n\n### Custom `Media` model\n\nThe `Media` model can be customised. To do this, you need\nto add a new model to your project that inherits from `wagtailmedia.models.AbstractMedia`.\n\nThen set the `WAGTAILMEDIA_MEDIA_MODEL` setting to point to it:\n\n```python\nWAGTAILMEDIA_MEDIA_MODEL = 'mymedia.CustomMedia'\n```\n\n## How to use\n\n### As a regular Django field\n\nYou can use `Media` as a regular Django field. Here\u2019s an example:\n\n```python\nfrom __future__ import unicode_literals\n\nfrom django.db import models\n\nfrom wagtail.wagtailcore.models import Page\nfrom wagtail.wagtailcore.fields import RichTextField\nfrom wagtail.wagtailadmin.edit_handlers import FieldPanel\n\nfrom wagtailmedia.edit_handlers import MediaChooserPanel\n\n\nclass BlogPageWithMedia(Page):\n author = models.CharField(max_length=255)\n date = models.DateField(\"Post date\")\n body = RichTextField(blank=False)\n featured_media = models.ForeignKey(\n 'wagtailmedia.Media',\n null=True,\n blank=True,\n on_delete=models.SET_NULL,\n related_name='+'\n )\n\n content_panels = Page.content_panels + [\n FieldPanel('author'),\n FieldPanel('date'),\n FieldPanel('body'),\n MediaChooserPanel('featured_media'),\n ]\n```\n\n#### Name clash with Wagtail\n\nDo not name the field `media`. When rendering the admin UI, Wagtail uses a `media` property for its fields\u2019 CSS & JS assets loading. Using `media` as a field name breaks the admin UI ([#54](https://github.com/torchbox/wagtailmedia/issues/54)).\n\n### In StreamField\n\nYou can use `Media` in StreamField. To do this, you need\nto add a new block class that inherits from `wagtailmedia.blocks.AbstractMediaChooserBlock`\nand implement your own `render_basic` method.\n\nHere is an example:\n\n```python\nfrom __future__ import unicode_literals\n\nfrom django.db import models\nfrom django.utils.html import format_html\n\nfrom wagtail.wagtailcore.models import Page\nfrom wagtail.wagtailcore.fields import StreamField\nfrom wagtail.wagtailcore import blocks\nfrom wagtail.wagtailadmin.edit_handlers import FieldPanel, StreamFieldPanel\n\nfrom wagtailmedia.blocks import AbstractMediaChooserBlock\n\n\nclass TestMediaBlock(AbstractMediaChooserBlock):\n def render_basic(self, value, context=None):\n if not value:\n return ''\n\n if value.type == 'video':\n player_code = '''\n
\n \n
\n '''\n else:\n player_code = '''\n
\n \n
\n '''\n\n return format_html(player_code, value.file.url)\n\n\nclass BlogPage(Page):\n author = models.CharField(max_length=255)\n date = models.DateField(\"Post date\")\n body = StreamField([\n ('heading', blocks.CharBlock(classname=\"full title\", icon='title')),\n ('paragraph', blocks.RichTextBlock(icon='pilcrow')),\n ('media', TestMediaBlock(icon='media')),\n ])\n\n content_panels = Page.content_panels + [\n FieldPanel('author'),\n FieldPanel('date'),\n StreamFieldPanel('body'),\n ]\n```\n\n## Contributing\n\n### Install\n\nTo make changes to this project, first clone this repository:\n\n```sh\ngit clone git@github.com:torchbox/wagtailmedia.git\ncd wagtailmedia\n```\n\nWith your preferred virtualenv activated, install testing dependencies:\n\n```sh\npip install -e .[testing] -U\n```\n\n### How to run tests\n\nNow you can run tests as shown below:\n\n```sh\npython runtests.py\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/torchbox/wagtailmedia", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "wagtailmedia", "package_url": "https://pypi.org/project/wagtailmedia/", "platform": "", "project_url": "https://pypi.org/project/wagtailmedia/", "project_urls": { "Homepage": "https://github.com/torchbox/wagtailmedia" }, "release_url": "https://pypi.org/project/wagtailmedia/0.3.1/", "requires_dist": null, "requires_python": "", "summary": "A module for Wagtail that provides functionality similar to wagtail.documents module, but for audio and video files.", "version": "0.3.1" }, "last_serial": 5872726, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "9b7a858251596cb91a63d5a48f5414f0", "sha256": "099698179c72a343222296b2436481152856c38f920075e43d37e0f3b78a9da2" }, "downloads": -1, "filename": "wagtailmedia-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9b7a858251596cb91a63d5a48f5414f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23001, "upload_time": "2016-05-26T10:29:24", "url": "https://files.pythonhosted.org/packages/27/27/9d6f2f35b3b52637bb28b0cd010bb406f5775941bcca699483aa421dafbb/wagtailmedia-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "9111bd4cfffcf5878167f3b66d0c5425", "sha256": "0fa15b81d15056fe26d6101d03c6349e4f0a5b2af6de17929628da88d4a3092e" }, "downloads": -1, "filename": "wagtailmedia-0.1.2.tar.gz", "has_sig": false, "md5_digest": "9111bd4cfffcf5878167f3b66d0c5425", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22983, "upload_time": "2016-11-03T11:23:29", "url": "https://files.pythonhosted.org/packages/ac/1d/63cc903a813bbe36f756b17c7b92524e105e9883a5e27073a58dc98dcc14/wagtailmedia-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "792f87bdd95a80f1575993fe1af720b6", "sha256": "4315eac461a253b42192d270267c3663648a90c73e1ecff8394e0de25e4a0940" }, "downloads": -1, "filename": "wagtailmedia-0.1.3.tar.gz", "has_sig": false, "md5_digest": "792f87bdd95a80f1575993fe1af720b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23106, "upload_time": "2017-01-04T12:27:49", "url": "https://files.pythonhosted.org/packages/a6/c5/72b8b51c255ecec2ab6abddee9f9a9a943a0756125743cee44c6da46a729/wagtailmedia-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "2a6c5f4883d5a8c4e63e4de21b9fbcf8", "sha256": "e2b7f1c020a0b8f5306a126be511a336c1e26d996ea3dd675fa6fc7d27b5ee16" }, "downloads": -1, "filename": "wagtailmedia-0.1.4.tar.gz", "has_sig": false, "md5_digest": "2a6c5f4883d5a8c4e63e4de21b9fbcf8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23171, "upload_time": "2017-04-16T08:44:36", "url": "https://files.pythonhosted.org/packages/9e/88/aca1c88efec91656172bb66542f927d0cc5005e80bbb26ef9e151a9c1a7a/wagtailmedia-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "8c068eaec6db7e89957664a1c925e06d", "sha256": "5bbdeec3a2bf2d2b00e68d9fee8673a804610ec336080259f6e7aba89ea0f2e0" }, "downloads": -1, "filename": "wagtailmedia-0.1.5.tar.gz", "has_sig": false, "md5_digest": "8c068eaec6db7e89957664a1c925e06d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23392, "upload_time": "2017-11-02T15:54:21", "url": "https://files.pythonhosted.org/packages/40/30/810c185ff9c75a6e92aa03698b07e60d651259b2073e918d8795e7256fd8/wagtailmedia-0.1.5.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "ad39cd542c92c128afd3c73682016b76", "sha256": "f6e8ac235aad98514c3cfc43d80c6f8bae32a19bb2ed6204d17149fe6c154d63" }, "downloads": -1, "filename": "wagtailmedia-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ad39cd542c92c128afd3c73682016b76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25539, "upload_time": "2018-05-24T10:02:39", "url": "https://files.pythonhosted.org/packages/9b/f2/fbbfc3bb271c8f51db214a4cf10b8c821cebaa14964b3dd51fa0ab23dbb6/wagtailmedia-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "0d4b93415ec0c82efa117c8ac5cff9b9", "sha256": "5872941a085ce718c66710826a9c0fadc4818c9d486bf2d4648ad22045861900" }, "downloads": -1, "filename": "wagtailmedia-0.3.0.tar.gz", "has_sig": false, "md5_digest": "0d4b93415ec0c82efa117c8ac5cff9b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27878, "upload_time": "2019-05-08T14:25:40", "url": "https://files.pythonhosted.org/packages/dd/85/c540f60a297ac9704ff6aa9cc2cd3493e6ae4ce7e6f454f064af520113c5/wagtailmedia-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "378c1d24ebc929caf41730518be60cb9", "sha256": "29f6d29ac0a77f27e9870bfe1c25f911f50e47ef0c4c1ae31621c4ac97f4ec20" }, "downloads": -1, "filename": "wagtailmedia-0.3.1.tar.gz", "has_sig": false, "md5_digest": "378c1d24ebc929caf41730518be60cb9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28274, "upload_time": "2019-05-22T14:11:53", "url": "https://files.pythonhosted.org/packages/2f/e1/34b7b9d7f642fd23c6489b76fc2a02832f154b3a4b007c2a6cf938026a8c/wagtailmedia-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "378c1d24ebc929caf41730518be60cb9", "sha256": "29f6d29ac0a77f27e9870bfe1c25f911f50e47ef0c4c1ae31621c4ac97f4ec20" }, "downloads": -1, "filename": "wagtailmedia-0.3.1.tar.gz", "has_sig": false, "md5_digest": "378c1d24ebc929caf41730518be60cb9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28274, "upload_time": "2019-05-22T14:11:53", "url": "https://files.pythonhosted.org/packages/2f/e1/34b7b9d7f642fd23c6489b76fc2a02832f154b3a4b007c2a6cf938026a8c/wagtailmedia-0.3.1.tar.gz" } ] }