Commit b2d3a929 authored by Seb's avatar Seb
Browse files

Deleting videos working

parent ead24890
......@@ -13,6 +13,8 @@ from django.core.exceptions import ImproperlyConfigured
from django.core.files.base import ContentFile
from django.core.urlresolvers import reverse
from django.db import models
from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from enum import Enum
......@@ -244,6 +246,13 @@ class Video(AbstractVideo):
)
# Delete files when model is deleted
@receiver(pre_delete, sender=Video)
def video_delete(sender, instance, **kwargs):
print('Video pre delete received')
instance.file.delete(False)
def get_video_model():
from django.conf import settings
from django.apps import apps
......@@ -290,3 +299,8 @@ class VideoTranscode(AbstractVideoTranscode):
unique_together = (
('video', 'media_format')
)
# Delete files when model is deleted
@receiver(pre_delete, sender=VideoTranscode)
def transcode_delete(sender, instance, **kwargs):
instance.file.delete(False)
{% extends "wagtailadmin/base.html" %}
{% load wagtailimages_tags %}
{% load wagtailvideos_tags %}
{% load i18n %}
{% block titletag %}{% trans "Delete image" %}{% endblock %}
......@@ -9,11 +9,11 @@
<div class="row row-flush nice-padding">
<div class="col6">
{% image image max-800x600 %}
{% video video controls %}
</div>
<div class="col6">
<p>{% trans "Are you sure you want to delete this image?" %}</p>
<form action="{% url 'wagtailimages:delete' image.id %}" method="POST">
<p>{% trans "Are you sure you want to delete this video?" %}</p>
<form action="{% url 'wagtailvideos:delete' video.id %}" method="POST">
{% csrf_token %}
<input type="submit" value="{% trans 'Yes, delete' %}" class="serious" />
</form>
......
{% extends "wagtailadmin/base.html" %}
{% load wagtailimages_tags staticfiles i18n wagtailvideos_tags %}
{% load staticfiles i18n wagtailvideos_tags %}
{% block titletag %}{% blocktrans with title=video.title %}Editing video {{ title }}{% endblocktrans %}{% endblock %}
{% block extra_js %}
......@@ -66,11 +66,6 @@
{% endif %}
</div>
<div class="col2 ">
{% if url_generator_enabled %}
<a href="{% url 'wagtailvideos:url_generator' video.id %}" class="button bicolor icon icon-link">{% trans "URL Generator" %}</a>
<hr />
{% endif %}
<img src='{{video.thumbnail.url}}' />
<dl>
......
......@@ -6,12 +6,8 @@ urlpatterns = [
url(r'^$', videos.index, name='index'),
url(r'^(\d+)/$', videos.edit, name='edit'),
url(r'^(\d+)/delete/$', videos.delete, name='delete'),
url(r'^(\d+)/generate_url/$', videos.url_generator, name='url_generator'),
url(r'^(\d+)/generate_url/(.*)/$', videos.generate_url, name='generate_url'),
url(r'^(\d+)/create_transcode/$', videos.create_transcode, name='create_transcode'),
#url(r'^(\d+)/preview/(.*)/$', videos.preview, name='preview'),
url(r'^add/$', videos.add, name='add'),
url(r'^usage/(\d+)/$', videos.usage, name='video_usage'),
......
......@@ -6,6 +6,7 @@ from django.views.decorators.http import require_POST
from django.views.decorators.vary import vary_on_headers
from wagtail.wagtailadmin.utils import PermissionPolicyChecker
from wagtail.wagtailsearch.backends import get_search_backends
from wagtailvideos.fields import ALLOWED_EXTENSIONS
from wagtailvideos.forms import get_video_form
from wagtailvideos.models import get_video_model
......@@ -62,14 +63,14 @@ def add(request):
video.file_size = video.file.size
video.save()
# Success! Send back an edit form for this image to the user
# Success! Send back an edit form
return JsonResponse({
'success': True,
'video_id': int(video.id),
'form': render_to_string('wagtailvideos/multiple/edit_form.html', {
'video': video,
'form': get_video_edit_form(Video)(
instance=video, prefix='image-%d' % video.id),
instance=video, prefix='video-%d' % video.id),
}, request=request),
})
else:
......
......@@ -8,14 +8,18 @@ from django.views.decorators.vary import vary_on_headers
from wagtail.utils.pagination import paginate
from wagtail.wagtailadmin import messages
from wagtail.wagtailadmin.forms import SearchForm
from wagtail.wagtailadmin.utils import PermissionPolicyChecker
from wagtail.wagtailcore.models import Collection, Site
from wagtail.wagtailsearch.backends import get_search_backends
from wagtailvideos.forms import (URLGeneratorForm, VideoTranscodeAdminForm,
get_video_form)
from wagtailvideos.models import get_video_model
from wagtailvideos.permissions import permission_policy
permission_checker = PermissionPolicyChecker(permission_policy)
@permission_checker.require_any('add', 'change', 'delete')
@vary_on_headers('X-Requested-With')
def index(request):
Video = get_video_model()
......@@ -66,7 +70,7 @@ def index(request):
})
return response
@permission_checker.require('change')
def edit(request, video_id):
Video = get_video_model()
VideoForm = get_video_form(Video)
......@@ -103,13 +107,6 @@ def edit(request, video_id):
else:
form = VideoForm(instance=video)
# Check if we should enable the frontend url generator
try:
reverse('wagtailvideos_serve', args=('foo', '1', 'bar'))
url_generator_enabled = True
except NoReverseMatch:
url_generator_enabled = False
if video.is_stored_locally():
# Give error if image file doesn't exist
if not os.path.isfile(video.file.path):
......@@ -122,10 +119,10 @@ def edit(request, video_id):
return render(request, "wagtailvideos/videos/edit.html", {
'video': video,
'form': form,
'url_generator_enabled': url_generator_enabled,
'filesize': video.get_file_size(),
'transcodes': video.transcodes.all(),
'transcode_form': VideoTranscodeAdminForm(video=video)
'transcode_form': VideoTranscodeAdminForm(video=video),
'user_can_delete': permission_policy.user_has_permission_for_instance(request.user, 'delete', video)
})
......@@ -141,63 +138,20 @@ def create_transcode(request, video_id):
transcode_form.save()
return redirect('wagtailvideos:edit', video_id)
# TODO was dis?
def url_generator(request, image_id):
image = get_object_or_404(get_video_model(), id=image_id)
form = URLGeneratorForm(initial={
'filter_method': 'original',
'width': image.width,
'height': image.height,
})
return render(request, "wagtailvideos/images/url_generator.html", {
'image': image,
'form': form,
})
def generate_url(request, image_id, filter_spec):
# Get the image
Image = get_video_model()
try:
Image.objects.get(id=image_id)
except Image.DoesNotExist:
return JsonResponse({
'error': "Cannot find image."
}, status=404)
# Check if this user has edit permission on this image
# Generate url
url = reverse('wagtailvideos_serve', args=(image_id, filter_spec))
# Get site root url
try:
site_root_url = Site.objects.get(is_default_site=True).root_url
except Site.DoesNotExist:
site_root_url = Site.objects.first().root_url
# Generate preview url
preview_url = reverse('wagtailvideos:preview', args=(image_id, filter_spec))
return JsonResponse({'url': site_root_url + url, 'preview_url': preview_url}, status=200)
def delete(request, image_id):
image = get_object_or_404(get_video_model(), id=image_id)
@permission_checker.require('delete')
def delete(request, video_id):
video = get_object_or_404(get_video_model(), id=video_id)
if request.POST:
image.delete()
messages.success(request, _("Image '{0}' deleted.").format(image.title))
video.delete()
messages.success(request, _("Video '{0}' deleted.").format(video.title))
return redirect('wagtailvideos:index')
return render(request, "wagtailvideos/images/confirm_delete.html", {
'image': image,
return render(request, "wagtailvideos/videos/confirm_delete.html", {
'video': video,
})
@permission_checker.require('add')
def add(request):
ImageModel = get_video_model()
ImageForm = get_video_form(ImageModel)
......
......@@ -43,5 +43,5 @@ def editor_js():
def register_images_menu_item():
return MenuItem(
_('Videos'), urlresolvers.reverse('wagtailvideos:index'),
name='videos', classnames='icon icon-video', order=300
name='videos', classnames='icon icon-media', order=300
)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment