from django.db import models from modelcluster.fields import ParentalKey from wagtail.admin.panels import FieldPanel from wagtail.fields import StreamField from wagtail.models import Page from wagtailvideos.blocks import VideoChooserBlock from wagtailvideos.edit_handlers import VideoChooserPanel from wagtailvideos.models import ( AbstractTrackListing, AbstractVideo, AbstractVideoTrack, AbstractVideoTranscode, ) class CustomVideoModel(AbstractVideo): attribution = models.TextField(blank=True) admin_form_fields = ( "title", "attribution", "file", "collection", "thumbnail", "tags", ) class CustomVideoTranscode(AbstractVideoTranscode): video = models.ForeignKey( CustomVideoModel, related_name="transcodes", on_delete=models.CASCADE ) class Meta: unique_together = ("video", "media_format") class CustomTrackListing(AbstractTrackListing): video = models.OneToOneField( CustomVideoModel, related_name="track_listing", on_delete=models.CASCADE ) class CustomVideoTrack(AbstractVideoTrack): listing = ParentalKey( CustomTrackListing, related_name="tracks", on_delete=models.CASCADE ) class TestPage(Page): video_field = models.ForeignKey( CustomVideoModel, related_name="+", null=True, blank=True, on_delete=models.SET_NULL, ) video_streamfield = StreamField( [("video", VideoChooserBlock())], blank=True, use_json_field=True ) content_panels = Page.content_panels + [ VideoChooserPanel("video_field"), FieldPanel("video_streamfield"), ]