Add set_queuefile_extension method, endpoint, and ui.

This commit is contained in:
voussoir 2020-09-16 10:23:38 -07:00
parent 223d3d01fb
commit 741cddc2e4
4 changed files with 57 additions and 0 deletions

View file

@ -134,3 +134,12 @@ def post_set_automark(channel_id):
flask.abort(400)
return jsonify.make_json_response({})
@site.route('/channel/<channel_id>/set_queuefile_extension', methods=['POST'])
def post_set_queuefile_extension(channel_id):
extension = request.form['extension']
channel = common.ycdldb.get_channel(channel_id)
channel.set_queuefile_extension(extension)
return jsonify.make_json_response({})

View file

@ -47,6 +47,15 @@ function set_automark(channel_id, state, callback)
return common.post(url, data, callback);
}
api.channels.set_queuefile_extension =
function set_queuefile_extension(channel_id, extension, callback)
{
const url = `/channel/${channel_id}/set_queuefile_extension`;
const data = new FormData();
data.append("extension", extension);
return common.post(url, data, callback);
}
api.channels.callback_go_to_channels =
function callback_go_to_channels(response)
{

View file

@ -265,6 +265,11 @@ https://stackoverflow.com/a/35153397
<span id="set_automark_spinner" class="hidden">Working...</span>
</div>
<div>
<input type="text" id="set_queuefile_extension_input" placeholder="Queuefile extension" value="{{channel.queuefile_extension or ''}}"/>
<button id="set_queuefile_extension_button" class="button_with_spinner" onclick="return set_queuefile_extension_form();">Set extension</button>
</div>
<button class="red_button button_with_confirm"
data-prompt="Delete channel and all videos?"
data-onclick="return delete_channel_form();"
@ -540,5 +545,22 @@ function set_automark_callback(response)
set_automark_spinner.hide();
}
}
set_queuefile_extension_input = document.getElementById("set_queuefile_extension_input");
set_queuefile_extension_button = document.getElementById("set_queuefile_extension_button");
common.bind_box_to_button(set_queuefile_extension_input, set_queuefile_extension_button);
function set_queuefile_extension_form(event)
{
const extension = set_queuefile_extension_input.value.trim();
api.channels.set_queuefile_extension(CHANNEL_ID, extension, set_queuefile_extension_callback);
}
function set_queuefile_extension_callback(response)
{
if (response.meta.status == 200)
{
window[set_queuefile_extension_button.dataset.spinnerCloser]();
}
}
</script>
</html>

View file

@ -80,6 +80,23 @@ class Channel(Base):
if commit:
self.ycdldb.commit()
def set_queuefile_extension(self, extension, commit=True):
if not extension:
extension = None
if extension is not None:
extension = extension.strip()
pairs = {
'id': self.id,
'queuefile_extension': extension,
}
self.ycdldb.sql_update(table='channels', pairs=pairs, where_key='id')
self.queuefile_extension = extension
if commit:
self.ycdldb.commit()
def set_uploads_playlist_id(self, playlist_id, commit=True):
if not isinstance(playlist_id, str):
raise TypeError(f'Playlist id must be a string, not {type(playlist_id)}.')