Performance improvement to event emission from backend and handling from frontend.

This commit is contained in:
Louis Vézina 2020-08-11 10:36:14 -04:00
parent e2b1726c87
commit f7f30a4157
4 changed files with 55 additions and 21 deletions

View File

@ -77,7 +77,7 @@ class Restart(Resource):
webserver.restart()
class Badges(Resource):
class BadgesSeries(Resource):
@authenticate
def get(self):
missing_episodes = database.execute("SELECT table_shows.tags, table_episodes.monitored, table_shows.seriesType "
@ -87,14 +87,30 @@ class Badges(Resource):
missing_episodes = filter_exclusions(missing_episodes, 'series')
missing_episodes = len(missing_episodes)
result = {
"missing_episodes": missing_episodes
}
return jsonify(result)
class BadgesMovies(Resource):
@authenticate
def get(self):
missing_movies = database.execute("SELECT tags, monitored FROM table_movies WHERE missing_subtitles is not "
"null AND missing_subtitles != '[]'")
missing_movies = filter_exclusions(missing_movies, 'movie')
missing_movies = len(missing_movies)
result = {
"missing_episodes": missing_episodes,
"missing_movies": missing_movies,
"missing_movies": missing_movies
}
return jsonify(result)
class BadgesProviders(Resource):
@authenticate
def get(self):
result = {
"throttled_providers": len(eval(str(settings.general.throtteled_providers)))
}
return jsonify(result)
@ -1796,7 +1812,9 @@ class BrowseRadarrFS(Resource):
api.add_resource(Shutdown, '/shutdown')
api.add_resource(Restart, '/restart')
api.add_resource(Badges, '/badges')
api.add_resource(BadgesSeries, '/badges_series')
api.add_resource(BadgesMovies, '/badges_movies')
api.add_resource(BadgesProviders, '/badges_providers')
api.add_resource(Languages, '/languages')
api.add_resource(Notifications, '/notifications')

View File

@ -198,6 +198,7 @@ def provider_throttle(name, exception):
logging.info("Throttling %s for %s, until %s, because of: %s. Exception info: %r", name,
throttle_description, throttle_until.strftime("%y/%m/%d %H:%M"), cls_name, exception.args[0]
if exception.args else None)
update_throttled_provider()
def throttled_count(name):
@ -255,7 +256,7 @@ def update_throttled_provider():
with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle:
settings.write(handle)
event_stream(type='badges')
event_stream(type='badges_providers')
def list_throttled_providers():

View File

@ -236,7 +236,7 @@ def list_missing_subtitles(no=None, epno=None, send_event=True):
if send_event:
event_stream(type='episode', action='update', series=missing_subtitles_item[2],
episode=missing_subtitles_item[1])
event_stream(type='badges')
event_stream(type='badges_series')
def list_missing_subtitles_movies(no=None, send_event=True):
@ -297,7 +297,7 @@ def list_missing_subtitles_movies(no=None, send_event=True):
if send_event:
event_stream(type='movie', action='update', movie=missing_subtitles_item[1])
event_stream(type='badges')
event_stream(type='badges_movies')
def series_full_scan_subtitles():

View File

@ -374,7 +374,9 @@
<script>
{% if not request.endpoint == 'login_page' %}
$(document).ready(function () {
BadgesAjax();
BadgesAjax('series');
BadgesAjax('movies');
BadgesAjax('providers');
$(window).on( 'ready orientationchange resize', function() {
adjustResponsiveUI();
@ -412,30 +414,43 @@
events.on('event', function (event) {
var event_json_badges = JSON.parse(event);
if (event_json_badges.type === 'badges') {
BadgesAjax();
if (event_json_badges.type === 'badges_series') {
BadgesAjax('series');
} else if (event_json_badges.type === 'badges_movies') {
BadgesAjax('movies');
} else if (event_json_badges.type === 'badges_providers') {
BadgesAjax('providers');
}
});
function BadgesAjax() {
function BadgesAjax(type) {
if (type=='series') {
var url = "{{url_for('api.badgesseries')}}";
} else if (type=='movies') {
var url = "{{url_for('api.badgesmovies')}}";
} else if (type=='providers') {
var url = "{{url_for('api.badgesproviders')}}";
} else {
return;
}
$.ajax({
url: "{{url_for('api.badges')}}",
url: url,
async: true,
success: function (data) {
if (data['throttled_providers']) {
$('.throttled_providers_count').html('<span class="badge badge-secondary">' + data['throttled_providers'] + '</span>');
} else {
if (data['throttled_providers'] == 0) {
$('.throttled_providers_count').html('');
} else if (data['throttled_providers'] > 0) {
$('.throttled_providers_count').html('<span class="badge badge-secondary">' + data['throttled_providers'] + '</span>');
}
if (data['missing_episodes']) {
$('.wanted_series_badge').html('<span class="badge badge-secondary">' + data['missing_episodes'] + '</span>');
} else {
if (data['missing_episodes'] == 0) {
$('.wanted_series_badge').html('');
} else if (data['missing_episodes'] > 0) {
$('.wanted_series_badge').html('<span class="badge badge-secondary">' + data['missing_episodes'] + '</span>');
}
if (data['missing_movies']) {
$('.wanted_movies_badge').html('<span class="badge badge-secondary">' + data['missing_movies'] + '</span>');
} else {
if (data['missing_movies'] == 0) {
$('.wanted_movies_badge').html('');
} else if (data['missing_movies'] > 0) {
$('.wanted_movies_badge').html('<span class="badge badge-secondary">' + data['missing_movies'] + '</span>');
}
},