Allow syncing a single channel

This commit is contained in:
Jacob Mansfield [root@Helix] 2019-11-22 17:11:52 +00:00
parent 794b9bd42d
commit 85092935a6
4 changed files with 24 additions and 3 deletions

View File

@ -162,6 +162,10 @@ class Subscription(models.Model):
def delete_subscription(self, keep_downloaded_videos: bool):
self.delete()
def synchronize_now(self):
from YtManagerApp.management.jobs.synchronize import SynchronizeJob
SynchronizeJob.schedule_now_for_subscription(self)
class Video(models.Model):
video_id = models.CharField(null=False, max_length=12)

View File

@ -18,4 +18,17 @@
{% block modal_footer %}
<input class="btn btn-primary" type="submit" value="Save" aria-label="Save">
<input class="btn btn-secondary" type="button" value="Cancel" data-dismiss="modal" aria-label="Cancel">
{% endblock modal_footer %}
<input class="btn btn-secondary" type="button" value="Synchronize Now" aria-label="Synchronize Now" onclick="synchronizeChannelNow()">
{% endblock modal_footer %}
{% block modal_scripts %}
<script>
function synchronizeChannelNow() {
$.post("{% url 'ajax_action_sync_now' form.instance.pk %}", {
csrfmiddlewaretoken: '{{ csrf_token }}'
}, function() {
});
}
</script>
{% endblock %}

View File

@ -37,6 +37,7 @@ urlpatterns = [
# Ajax
path('ajax/action/sync_now/', SyncNowView.as_view(), name='ajax_action_sync_now'),
path('ajax/action/sync_now/<int:pk>', SyncNowView.as_view(), name='ajax_action_sync_now'),
path('ajax/action/delete_video_files/<int:pk>', DeleteVideoFilesView.as_view(), name='ajax_action_delete_video_files'),
path('ajax/action/download_video_files/<int:pk>', DownloadVideoFilesView.as_view(), name='ajax_action_download_video_files'),
path('ajax/action/mark_video_watched/<int:pk>', MarkVideoWatchedView.as_view(), name='ajax_action_mark_video_watched'),

View File

@ -3,12 +3,15 @@ from django.http import JsonResponse
from django.views.generic import View
from YtManagerApp.management.jobs.synchronize import SynchronizeJob
from YtManagerApp.models import Video
from YtManagerApp.models import Video, Subscription
class SyncNowView(LoginRequiredMixin, View):
def post(self, *args, **kwargs):
SynchronizeJob.schedule_now()
if 'pk' in kwargs:
SynchronizeJob.schedule_now_for_subscription(Subscription.objects.get(id=kwargs['pk']))
else:
SynchronizeJob.schedule_now()
return JsonResponse({
'success': True
})