Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Websites UFRPE
Wagtail Videos
Commits
b2d3a929
Commit
b2d3a929
authored
Jul 05, 2016
by
Seb
Browse files
Deleting videos working
parent
ead24890
Changes
7
Show whitespace changes
Inline
Side-by-side
wagtailvideos/models.py
View file @
b2d3a929
...
@@ -13,6 +13,8 @@ from django.core.exceptions import ImproperlyConfigured
...
@@ -13,6 +13,8 @@ from django.core.exceptions import ImproperlyConfigured
from
django.core.files.base
import
ContentFile
from
django.core.files.base
import
ContentFile
from
django.core.urlresolvers
import
reverse
from
django.core.urlresolvers
import
reverse
from
django.db
import
models
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.encoding
import
python_2_unicode_compatible
from
django.utils.translation
import
ugettext_lazy
as
_
from
django.utils.translation
import
ugettext_lazy
as
_
from
enum
import
Enum
from
enum
import
Enum
...
@@ -244,6 +246,13 @@ class Video(AbstractVideo):
...
@@ -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
():
def
get_video_model
():
from
django.conf
import
settings
from
django.conf
import
settings
from
django.apps
import
apps
from
django.apps
import
apps
...
@@ -290,3 +299,8 @@ class VideoTranscode(AbstractVideoTranscode):
...
@@ -290,3 +299,8 @@ class VideoTranscode(AbstractVideoTranscode):
unique_together
=
(
unique_together
=
(
(
'video'
,
'media_format'
)
(
'video'
,
'media_format'
)
)
)
# Delete files when model is deleted
@
receiver
(
pre_delete
,
sender
=
VideoTranscode
)
def
transcode_delete
(
sender
,
instance
,
**
kwargs
):
instance
.
file
.
delete
(
False
)
wagtailvideos/templates/wagtailvideos/videos/confirm_delete.html
View file @
b2d3a929
{% extends "wagtailadmin/base.html" %}
{% extends "wagtailadmin/base.html" %}
{% load wagtail
image
s_tags %}
{% load wagtail
video
s_tags %}
{% load i18n %}
{% load i18n %}
{% block titletag %}{% trans "Delete image" %}{% endblock %}
{% block titletag %}{% trans "Delete image" %}{% endblock %}
...
@@ -9,11 +9,11 @@
...
@@ -9,11 +9,11 @@
<div
class=
"row row-flush nice-padding"
>
<div
class=
"row row-flush nice-padding"
>
<div
class=
"col6"
>
<div
class=
"col6"
>
{%
image image max-800x600
%}
{%
video video controls
%}
</div>
</div>
<div
class=
"col6"
>
<div
class=
"col6"
>
<p>
{% trans "Are you sure you want to delete this
image
?" %}
</p>
<p>
{% trans "Are you sure you want to delete this
video
?" %}
</p>
<form
action=
"{% url 'wagtail
image
s:delete'
image
.id %}"
method=
"POST"
>
<form
action=
"{% url 'wagtail
video
s:delete'
video
.id %}"
method=
"POST"
>
{% csrf_token %}
{% csrf_token %}
<input
type=
"submit"
value=
"{% trans 'Yes, delete' %}"
class=
"serious"
/>
<input
type=
"submit"
value=
"{% trans 'Yes, delete' %}"
class=
"serious"
/>
</form>
</form>
...
...
wagtailvideos/templates/wagtailvideos/videos/edit.html
View file @
b2d3a929
{% extends "wagtailadmin/base.html" %}
{% 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 titletag %}{% blocktrans with title=video.title %}Editing video {{ title }}{% endblocktrans %}{% endblock %}
{% block extra_js %}
{% block extra_js %}
...
@@ -66,11 +66,6 @@
...
@@ -66,11 +66,6 @@
{% endif %}
{% endif %}
</div>
</div>
<div
class=
"col2 "
>
<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}}'
/>
<img
src=
'{{video.thumbnail.url}}'
/>
<dl>
<dl>
...
...
wagtailvideos/urls.py
View file @
b2d3a929
...
@@ -6,12 +6,8 @@ urlpatterns = [
...
@@ -6,12 +6,8 @@ urlpatterns = [
url
(
r
'^$'
,
videos
.
index
,
name
=
'index'
),
url
(
r
'^$'
,
videos
.
index
,
name
=
'index'
),
url
(
r
'^(\d+)/$'
,
videos
.
edit
,
name
=
'edit'
),
url
(
r
'^(\d+)/$'
,
videos
.
edit
,
name
=
'edit'
),
url
(
r
'^(\d+)/delete/$'
,
videos
.
delete
,
name
=
'delete'
),
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+)/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
'^add/$'
,
videos
.
add
,
name
=
'add'
),
url
(
r
'^usage/(\d+)/$'
,
videos
.
usage
,
name
=
'video_usage'
),
url
(
r
'^usage/(\d+)/$'
,
videos
.
usage
,
name
=
'video_usage'
),
...
...
wagtailvideos/views/multiple.py
View file @
b2d3a929
...
@@ -6,6 +6,7 @@ from django.views.decorators.http import require_POST
...
@@ -6,6 +6,7 @@ from django.views.decorators.http import require_POST
from
django.views.decorators.vary
import
vary_on_headers
from
django.views.decorators.vary
import
vary_on_headers
from
wagtail.wagtailadmin.utils
import
PermissionPolicyChecker
from
wagtail.wagtailadmin.utils
import
PermissionPolicyChecker
from
wagtail.wagtailsearch.backends
import
get_search_backends
from
wagtail.wagtailsearch.backends
import
get_search_backends
from
wagtailvideos.fields
import
ALLOWED_EXTENSIONS
from
wagtailvideos.fields
import
ALLOWED_EXTENSIONS
from
wagtailvideos.forms
import
get_video_form
from
wagtailvideos.forms
import
get_video_form
from
wagtailvideos.models
import
get_video_model
from
wagtailvideos.models
import
get_video_model
...
@@ -62,14 +63,14 @@ def add(request):
...
@@ -62,14 +63,14 @@ def add(request):
video
.
file_size
=
video
.
file
.
size
video
.
file_size
=
video
.
file
.
size
video
.
save
()
video
.
save
()
# Success! Send back an edit form
for this image to the user
# Success! Send back an edit form
return
JsonResponse
({
return
JsonResponse
({
'success'
:
True
,
'success'
:
True
,
'video_id'
:
int
(
video
.
id
),
'video_id'
:
int
(
video
.
id
),
'form'
:
render_to_string
(
'wagtailvideos/multiple/edit_form.html'
,
{
'form'
:
render_to_string
(
'wagtailvideos/multiple/edit_form.html'
,
{
'video'
:
video
,
'video'
:
video
,
'form'
:
get_video_edit_form
(
Video
)(
'form'
:
get_video_edit_form
(
Video
)(
instance
=
video
,
prefix
=
'
image
-%d'
%
video
.
id
),
instance
=
video
,
prefix
=
'
video
-%d'
%
video
.
id
),
},
request
=
request
),
},
request
=
request
),
})
})
else
:
else
:
...
...
wagtailvideos/views/videos.py
View file @
b2d3a929
...
@@ -8,14 +8,18 @@ from django.views.decorators.vary import vary_on_headers
...
@@ -8,14 +8,18 @@ from django.views.decorators.vary import vary_on_headers
from
wagtail.utils.pagination
import
paginate
from
wagtail.utils.pagination
import
paginate
from
wagtail.wagtailadmin
import
messages
from
wagtail.wagtailadmin
import
messages
from
wagtail.wagtailadmin.forms
import
SearchForm
from
wagtail.wagtailadmin.forms
import
SearchForm
from
wagtail.wagtailadmin.utils
import
PermissionPolicyChecker
from
wagtail.wagtailcore.models
import
Collection
,
Site
from
wagtail.wagtailcore.models
import
Collection
,
Site
from
wagtail.wagtailsearch.backends
import
get_search_backends
from
wagtail.wagtailsearch.backends
import
get_search_backends
from
wagtailvideos.forms
import
(
URLGeneratorForm
,
VideoTranscodeAdminForm
,
from
wagtailvideos.forms
import
(
URLGeneratorForm
,
VideoTranscodeAdminForm
,
get_video_form
)
get_video_form
)
from
wagtailvideos.models
import
get_video_model
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'
)
@
vary_on_headers
(
'X-Requested-With'
)
def
index
(
request
):
def
index
(
request
):
Video
=
get_video_model
()
Video
=
get_video_model
()
...
@@ -66,7 +70,7 @@ def index(request):
...
@@ -66,7 +70,7 @@ def index(request):
})
})
return
response
return
response
@
permission_checker
.
require
(
'change'
)
def
edit
(
request
,
video_id
):
def
edit
(
request
,
video_id
):
Video
=
get_video_model
()
Video
=
get_video_model
()
VideoForm
=
get_video_form
(
Video
)
VideoForm
=
get_video_form
(
Video
)
...
@@ -103,13 +107,6 @@ def edit(request, video_id):
...
@@ -103,13 +107,6 @@ def edit(request, video_id):
else
:
else
:
form
=
VideoForm
(
instance
=
video
)
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
():
if
video
.
is_stored_locally
():
# Give error if image file doesn't exist
# Give error if image file doesn't exist
if
not
os
.
path
.
isfile
(
video
.
file
.
path
):
if
not
os
.
path
.
isfile
(
video
.
file
.
path
):
...
@@ -122,10 +119,10 @@ def edit(request, video_id):
...
@@ -122,10 +119,10 @@ def edit(request, video_id):
return
render
(
request
,
"wagtailvideos/videos/edit.html"
,
{
return
render
(
request
,
"wagtailvideos/videos/edit.html"
,
{
'video'
:
video
,
'video'
:
video
,
'form'
:
form
,
'form'
:
form
,
'url_generator_enabled'
:
url_generator_enabled
,
'filesize'
:
video
.
get_file_size
(),
'filesize'
:
video
.
get_file_size
(),
'transcodes'
:
video
.
transcodes
.
all
(),
'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):
...
@@ -141,63 +138,20 @@ def create_transcode(request, video_id):
transcode_form
.
save
()
transcode_form
.
save
()
return
redirect
(
'wagtailvideos:edit'
,
video_id
)
return
redirect
(
'wagtailvideos:edit'
,
video_id
)
@
permission_checker
.
require
(
'delete'
)
# TODO was dis?
def
delete
(
request
,
video_id
):
def
url_generator
(
request
,
image_id
):
video
=
get_object_or_404
(
get_video_model
(),
id
=
video_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
)
if
request
.
POST
:
if
request
.
POST
:
image
.
delete
()
video
.
delete
()
messages
.
success
(
request
,
_
(
"
Image
'{0}' deleted."
).
format
(
image
.
title
))
messages
.
success
(
request
,
_
(
"
Video
'{0}' deleted."
).
format
(
video
.
title
))
return
redirect
(
'wagtailvideos:index'
)
return
redirect
(
'wagtailvideos:index'
)
return
render
(
request
,
"wagtailvideos/
image
s/confirm_delete.html"
,
{
return
render
(
request
,
"wagtailvideos/
video
s/confirm_delete.html"
,
{
'
image'
:
image
,
'
video'
:
video
,
})
})
@
permission_checker
.
require
(
'add'
)
def
add
(
request
):
def
add
(
request
):
ImageModel
=
get_video_model
()
ImageModel
=
get_video_model
()
ImageForm
=
get_video_form
(
ImageModel
)
ImageForm
=
get_video_form
(
ImageModel
)
...
...
wagtailvideos/wagtail_hooks.py
View file @
b2d3a929
...
@@ -43,5 +43,5 @@ def editor_js():
...
@@ -43,5 +43,5 @@ def editor_js():
def
register_images_menu_item
():
def
register_images_menu_item
():
return
MenuItem
(
return
MenuItem
(
_
(
'Videos'
),
urlresolvers
.
reverse
(
'wagtailvideos:index'
),
_
(
'Videos'
),
urlresolvers
.
reverse
(
'wagtailvideos:index'
),
name
=
'videos'
,
classnames
=
'icon icon-
video
'
,
order
=
300
name
=
'videos'
,
classnames
=
'icon icon-
media
'
,
order
=
300
)
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment