Using subtitle id instead of subitle path in the url
This commit is contained in:
parent
a14f4edc99
commit
b2ba593dbe
@ -24,13 +24,13 @@ def setup_plugin():
|
|||||||
|
|
||||||
routes = [
|
routes = [
|
||||||
('mediagoblin.plugins.subtitles.customize',
|
('mediagoblin.plugins.subtitles.customize',
|
||||||
'/u/<string:user>/m/<int:media_id>/customize/<string:path>',
|
'/u/<string:user>/m/<int:media_id>/customize/<int:id>',
|
||||||
'mediagoblin.plugins.subtitles.views:custom_subtitles'),
|
'mediagoblin.plugins.subtitles.views:custom_subtitles'),
|
||||||
('mediagoblin.plugins.subtitles.subtitles',
|
('mediagoblin.plugins.subtitles.subtitles',
|
||||||
'/u/<string:user>/m/<int:media_id>/subtitles/',
|
'/u/<string:user>/m/<int:media_id>/subtitles/',
|
||||||
'mediagoblin.plugins.subtitles.views:edit_subtitles'),
|
'mediagoblin.plugins.subtitles.views:edit_subtitles'),
|
||||||
('mediagoblin.plugins.subtitles.delete_subtitles',
|
('mediagoblin.plugins.subtitles.delete_subtitles',
|
||||||
'/u/<string:user>/m/<int:media_id>/delete/<string:path>',
|
'/u/<string:user>/m/<int:media_id>/delete/<int:id>',
|
||||||
'mediagoblin.plugins.subtitles.views:delete_subtitles')]
|
'mediagoblin.plugins.subtitles.views:delete_subtitles')]
|
||||||
|
|
||||||
pluginapi.register_routes(routes)
|
pluginapi.register_routes(routes)
|
||||||
|
@ -31,14 +31,14 @@
|
|||||||
<form action="{{ request.urlgen('mediagoblin.plugins.subtitles.customize',
|
<form action="{{ request.urlgen('mediagoblin.plugins.subtitles.customize',
|
||||||
user=media.get_actor.username,
|
user=media.get_actor.username,
|
||||||
media_id=media.id,
|
media_id=media.id,
|
||||||
path=path) }}" method="POST" enctype="multipart/form-data">
|
id=id) }}" method="POST" enctype="multipart/form-data">
|
||||||
<div class="form_box edit_box">
|
<div class="form_box edit_box">
|
||||||
{{ wtforms_util.render_divs(form) }}
|
{{ wtforms_util.render_divs(form) }}
|
||||||
<div class="form_submit_buttons">
|
<div class="form_submit_buttons">
|
||||||
{% set delete_url = request.urlgen('mediagoblin.plugins.subtitles.delete_subtitles',
|
{% set delete_url = request.urlgen('mediagoblin.plugins.subtitles.delete_subtitles',
|
||||||
user= media.get_actor.username,
|
user= media.get_actor.username,
|
||||||
media_id=media.id,
|
media_id=media.id,
|
||||||
path=path) %}
|
id=id) %}
|
||||||
<a class="button_action button_warning" href="{{ delete_url }}">{% trans %}Delete Subtitle{% endtrans %}</a>
|
<a class="button_action button_warning" href="{{ delete_url }}">{% trans %}Delete Subtitle{% endtrans %}</a>
|
||||||
<input type="submit" value="{% trans %}Save changes{% endtrans %}" class="button_form" />
|
<input type="submit" value="{% trans %}Save changes{% endtrans %}" class="button_form" />
|
||||||
{{ csrf_token }}
|
{{ csrf_token }}
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
<a href="{{ request.urlgen('mediagoblin.plugins.subtitles.customize',
|
<a href="{{ request.urlgen('mediagoblin.plugins.subtitles.customize',
|
||||||
user=media.get_actor.username,
|
user=media.get_actor.username,
|
||||||
media_id=media.id,
|
media_id=media.id,
|
||||||
path=subtitle.filepath) }}">
|
id=subtitle.id ) }}">
|
||||||
{{- subtitle.name -}}
|
{{- subtitle.name -}}
|
||||||
</li>
|
</li>
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
|
@ -17,19 +17,15 @@
|
|||||||
from mediagoblin import mg_globals
|
from mediagoblin import mg_globals
|
||||||
import os
|
import os
|
||||||
|
|
||||||
def get_path(path):
|
|
||||||
path = eval(path) # Converting string to a tuple
|
|
||||||
return path
|
|
||||||
|
|
||||||
def open_subtitle(path):
|
def open_subtitle(path):
|
||||||
subtitle_public_filepath = get_path(path)
|
subtitle_public_filepath = path
|
||||||
with mg_globals.public_store.get_file(
|
with mg_globals.public_store.get_file(
|
||||||
subtitle_public_filepath, 'rb') as subtitle_public_file:
|
subtitle_public_filepath, 'rb') as subtitle_public_file:
|
||||||
text = subtitle_public_file.read().decode('utf-8','ignore')
|
text = subtitle_public_file.read().decode('utf-8','ignore')
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def save_subtitle(path,text):
|
def save_subtitle(path,text):
|
||||||
subtitle_public_filepath = get_path(path)
|
subtitle_public_filepath = path
|
||||||
with mg_globals.public_store.get_file(
|
with mg_globals.public_store.get_file(
|
||||||
subtitle_public_filepath, 'wb') as subtitle_public_file:
|
subtitle_public_filepath, 'wb') as subtitle_public_file:
|
||||||
subtitle_public_file.write(text)
|
subtitle_public_file.write(text.encode('utf-8','ignore'))
|
@ -35,7 +35,7 @@ from mediagoblin.tools.response import (render_to_response,
|
|||||||
|
|
||||||
import mimetypes
|
import mimetypes
|
||||||
|
|
||||||
from mediagoblin.plugins.subtitles.tools import open_subtitle,save_subtitle,get_path
|
from mediagoblin.plugins.subtitles.tools import open_subtitle,save_subtitle
|
||||||
|
|
||||||
UNSAFE_MIMETYPES = [
|
UNSAFE_MIMETYPES = [
|
||||||
'text/html',
|
'text/html',
|
||||||
@ -46,7 +46,7 @@ UNSAFE_MIMETYPES = [
|
|||||||
@require_active_login
|
@require_active_login
|
||||||
def edit_subtitles(request, media):
|
def edit_subtitles(request, media):
|
||||||
allowed_extensions = ['aqt','gsub','jss','sub','ttxt','pjs','psb',
|
allowed_extensions = ['aqt','gsub','jss','sub','ttxt','pjs','psb',
|
||||||
'rt','smi','rst','stl','ssf','srt','ssa','ass','usf','vtt','lrc']
|
'rt','smi','stl','ssf','srt','ssa','ass','usf','vtt','lrc']
|
||||||
form = forms.EditSubtitlesForm(request.form)
|
form = forms.EditSubtitlesForm(request.form)
|
||||||
|
|
||||||
# Add any subtitles
|
# Add any subtitles
|
||||||
@ -116,8 +116,12 @@ def edit_subtitles(request, media):
|
|||||||
@require_active_login
|
@require_active_login
|
||||||
@get_media_entry_by_id
|
@get_media_entry_by_id
|
||||||
@user_may_delete_media
|
@user_may_delete_media
|
||||||
def custom_subtitles(request,media,path=None):
|
def custom_subtitles(request,media,id=None):
|
||||||
path = request.matchdict['path']
|
id = request.matchdict['id']
|
||||||
|
path = ""
|
||||||
|
for subtitle in media.subtitle_files:
|
||||||
|
if subtitle["id"] == id:
|
||||||
|
path = subtitle["filepath"]
|
||||||
text=""
|
text=""
|
||||||
text = open_subtitle(path)
|
text = open_subtitle(path)
|
||||||
form = forms.CustomizeSubtitlesForm(request.form,
|
form = forms.CustomizeSubtitlesForm(request.form,
|
||||||
@ -135,7 +139,7 @@ def custom_subtitles(request,media,path=None):
|
|||||||
return render_to_response(
|
return render_to_response(
|
||||||
request,
|
request,
|
||||||
"mediagoblin/plugins/subtitles/custom_subtitles.html",
|
"mediagoblin/plugins/subtitles/custom_subtitles.html",
|
||||||
{"path": path,
|
{"id": id,
|
||||||
"media": media,
|
"media": media,
|
||||||
"form": form })
|
"form": form })
|
||||||
|
|
||||||
@ -144,18 +148,18 @@ def custom_subtitles(request,media,path=None):
|
|||||||
@get_media_entry_by_id
|
@get_media_entry_by_id
|
||||||
@user_may_delete_media
|
@user_may_delete_media
|
||||||
def delete_subtitles(request,media):
|
def delete_subtitles(request,media):
|
||||||
path = request.matchdict['path']
|
id = request.matchdict['id']
|
||||||
path = get_path(path)
|
|
||||||
mg_globals.public_store.delete_file(path)
|
|
||||||
delete_container = None
|
delete_container = None
|
||||||
index = 0
|
index = 0
|
||||||
for subtitle in media.subtitle_files:
|
for subtitle in media.subtitle_files:
|
||||||
if str(subtitle["filepath"]) == str(path):
|
if subtitle["id"] == id:
|
||||||
|
path = subtitle["filepath"]
|
||||||
|
mg_globals.public_store.delete_file(path)
|
||||||
delete_container = index
|
delete_container = index
|
||||||
index += 1
|
|
||||||
media.subtitle_files.pop(delete_container)
|
media.subtitle_files.pop(delete_container)
|
||||||
media.save()
|
media.save()
|
||||||
break
|
break
|
||||||
|
index += 1
|
||||||
|
|
||||||
messages.add_message(
|
messages.add_message(
|
||||||
request,
|
request,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user