|
@@ -58,7 +58,7 @@ def home(request):
|
|
|
return render(request, "import_in_progress.html")
|
|
|
|
|
|
|
|
|
- playlist_tags = request.user.playlist_tags.order_by('-times_viewed')
|
|
|
+ playlist_tags = request.user.playlist_tags.filter(times_viewed_per_week__gte=1).order_by('-times_viewed_per_week')
|
|
|
|
|
|
videos = request.user.videos.filter(Q(is_unavailable_on_yt=False) & Q(was_deleted_on_yt=False))
|
|
|
|
|
@@ -78,7 +78,7 @@ def home(request):
|
|
|
def favorites(request):
|
|
|
favorite_playlists = request.user.playlists.filter(Q(is_favorite=True) & Q(is_in_db=True)).order_by(
|
|
|
'-last_accessed_on')
|
|
|
- favorite_videos = request.user.videos.filter(is_favorite=True).order_by('updated_at')
|
|
|
+ favorite_videos = request.user.videos.filter(is_favorite=True).order_by('-num_of_accesses')
|
|
|
|
|
|
return render(request, 'favorites.html', {"playlists": favorite_playlists,
|
|
|
"videos": favorite_videos})
|
|
@@ -86,13 +86,13 @@ def favorites(request):
|
|
|
|
|
|
@login_required
|
|
|
def planned_to_watch(request):
|
|
|
- planned_to_watch_playlists = request.user.playlists.filter(Q(marked_as='plan-to-watch') & Q(is_in_db=True)).order_by(
|
|
|
+ planned_to_watch_playlists = request.user.playlists.filter(
|
|
|
+ Q(marked_as='plan-to-watch') & Q(is_in_db=True)).order_by(
|
|
|
'-last_accessed_on')
|
|
|
- planned_to_watch_videos = request.user.videos.filter(is_planned_to_watch=True).order_by('updated_at')
|
|
|
+ planned_to_watch_videos = request.user.videos.filter(is_planned_to_watch=True).order_by('-num_of_accesses')
|
|
|
|
|
|
return render(request, 'planned_to_watch.html', {"playlists": planned_to_watch_playlists,
|
|
|
- "videos": planned_to_watch_videos})
|
|
|
-
|
|
|
+ "videos": planned_to_watch_videos})
|
|
|
|
|
|
|
|
|
@login_required
|
|
@@ -192,8 +192,6 @@ def view_playlist(request, playlist_id):
|
|
|
})
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
@login_required
|
|
|
def tagged_playlists(request, tag):
|
|
|
tag = get_object_or_404(Tag, created_by=request.user, name=tag)
|
|
@@ -540,7 +538,6 @@ def mark_video_planned_to_watch(request, video_id):
|
|
|
return HttpResponse('<i class="fas fa-clock" style="color: #000000"></i>')
|
|
|
|
|
|
|
|
|
-
|
|
|
@login_required
|
|
|
def mark_video_watched(request, playlist_id, video_id):
|
|
|
playlist = request.user.playlists.get(playlist_id=playlist_id)
|
|
@@ -565,7 +562,6 @@ def mark_video_watched(request, playlist_id, video_id):
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
@login_required
|
|
|
def load_more_videos(request, playlist_id, order_by, page):
|
|
|
playlist = request.user.playlists.get(playlist_id=playlist_id)
|
|
@@ -897,12 +893,15 @@ def add_playlist_tag(request, playlist_id):
|
|
|
if tag_name == 'Pick from existing unused tags':
|
|
|
return HttpResponse("Pick something! >w<")
|
|
|
|
|
|
+ try:
|
|
|
+ tag = request.user.playlist_tags.get(name__iexact=tag_name)
|
|
|
+ except:
|
|
|
+ return HttpResponse("Uh-oh, looks like this tag was deleted :(")
|
|
|
+
|
|
|
playlist = request.user.playlists.get(playlist_id=playlist_id)
|
|
|
|
|
|
playlist_tags = playlist.tags.all()
|
|
|
if not playlist_tags.filter(name__iexact=tag_name).exists():
|
|
|
- tag = Tag.objects.filter(Q(created_by=request.user) & Q(name__iexact=tag_name)).first()
|
|
|
-
|
|
|
|
|
|
playlist.tags.add(tag)
|
|
|
else:
|
|
@@ -1074,6 +1073,28 @@ def add_video_user_label(request, video_id):
|
|
|
return redirect('video', video_id=video_id)
|
|
|
|
|
|
|
|
|
+@login_required
|
|
|
+@require_POST
|
|
|
+def edit_tag(request, tag):
|
|
|
+ tag = request.user.playlist_tags.get(name=tag)
|
|
|
+
|
|
|
+ if 'tag_name' in request.POST:
|
|
|
+ tag.name = bleach.clean(request.POST["tag_name"])
|
|
|
+ tag.save(update_fields=['name'])
|
|
|
+ messages.success(request, "Successfully updated the tag's name!")
|
|
|
+
|
|
|
+ return redirect('tagged_playlists', tag=tag.name)
|
|
|
+
|
|
|
+
|
|
|
+@login_required
|
|
|
+@require_POST
|
|
|
+def delete_tag(request, tag):
|
|
|
+ tag = request.user.playlist_tags.get(name__iexact=tag)
|
|
|
+ tag.delete()
|
|
|
+ messages.success(request, f"Successfully deleted the tag '{tag.name}'")
|
|
|
+ return redirect('/library/home')
|
|
|
+
|
|
|
+
|
|
|
@login_required
|
|
|
@require_POST
|
|
|
def add_playlist_user_label(request, playlist_id):
|
|
@@ -1107,7 +1128,7 @@ def playlist_add_new_videos(request, playlist_id):
|
|
|
elif max_limit_reached and added != 0:
|
|
|
message = f"Only added the first {added} video link(s) to this playlist as the max playlist limit has been reached :("
|
|
|
messages.warning(request, message)
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -1118,6 +1139,7 @@ def playlist_add_new_videos(request, playlist_id):
|
|
|
</script>
|
|
|
""")
|
|
|
|
|
|
+
|
|
|
@login_required
|
|
|
@require_POST
|
|
|
def playlist_create_new_playlist(request, playlist_id):
|
|
@@ -1128,7 +1150,8 @@ def playlist_create_new_playlist(request, playlist_id):
|
|
|
|
|
|
unclean_playlist_item_ids = request.POST.getlist("video-id", default=[])
|
|
|
clean_playlist_item_ids = [bleach.clean(playlist_item_id) for playlist_item_id in unclean_playlist_item_ids]
|
|
|
- playlist_items = request.user.playlists.get(playlist_id=playlist_id).playlist_items.filter(playlist_item_id__in=clean_playlist_item_ids)
|
|
|
+ playlist_items = request.user.playlists.get(playlist_id=playlist_id).playlist_items.filter(
|
|
|
+ playlist_item_id__in=clean_playlist_item_ids)
|
|
|
|
|
|
if not playlist_items.exists():
|
|
|
return HttpResponse("Select some videos first!")
|
|
@@ -1154,4 +1177,4 @@ def playlist_create_new_playlist(request, playlist_id):
|
|
|
else:
|
|
|
message = f"""Successfully created '{playlist_name}' and added {added} videos to it. Visit the <a href="/home/" target="_blank" style="text-decoration: none; color: white" class="ms-1 me-1">dashboard</a> to import it into UnTube."""
|
|
|
|
|
|
- return HttpResponse(message)
|
|
|
+ return HttpResponse(message)
|