views.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import bleach
  2. from django.contrib.auth.decorators import login_required
  3. from django.http import HttpResponse
  4. from django.shortcuts import render
  5. from django.template import loader
  6. from django.views.decorators.http import require_POST
  7. from backend.main.models import Playlist
  8. @login_required
  9. def manage_playlists(request):
  10. return render(request, "manage_playlists.html")
  11. @login_required
  12. def manage_view_page(request, page):
  13. if page == "import":
  14. return render(request, "manage_playlists_import.html",
  15. {"manage_playlists_import_textarea": request.user.profile.manage_playlists_import_textarea})
  16. elif page == "create":
  17. return render(request, "manage_playlists_create.html")
  18. else:
  19. return HttpResponse('Working on this!')
  20. @login_required
  21. @require_POST
  22. def manage_save(request, what):
  23. if what == "manage_playlists_import_textarea":
  24. request.user.profile.manage_playlists_import_textarea = bleach.clean(request.POST["import-playlist-textarea"])
  25. request.user.save()
  26. return HttpResponse("")
  27. @login_required
  28. @require_POST
  29. def manage_import_playlists(request):
  30. playlist_links = [bleach.clean(link) for link in request.POST["import-playlist-textarea"].replace(",", "").split("\n")]
  31. num_playlists_already_in_db = 0
  32. num_playlists_initialized_in_db = 0
  33. num_playlists_not_found = 0
  34. new_playlists = []
  35. old_playlists = []
  36. not_found_playlists = []
  37. done = []
  38. for playlist_link in playlist_links:
  39. if playlist_link.strip() != "" and playlist_link.strip() not in done:
  40. pl_id = Playlist.objects.getPlaylistId(playlist_link.strip())
  41. if pl_id is None:
  42. num_playlists_not_found += 1
  43. continue
  44. status = Playlist.objects.initializePlaylist(request.user, pl_id)["status"]
  45. if status == -1 or status == -2:
  46. print("\nNo such playlist found:", pl_id)
  47. num_playlists_not_found += 1
  48. not_found_playlists.append(playlist_link)
  49. elif status == -3: # playlist already in db
  50. num_playlists_already_in_db += 1
  51. playlist = request.user.playlists.get(playlist_id__exact=pl_id)
  52. old_playlists.append(playlist)
  53. else: # only if playlist exists on YT, so import its videos
  54. print(status)
  55. Playlist.objects.getAllVideosForPlaylist(request.user, pl_id)
  56. playlist = request.user.playlists.get(playlist_id__exact=pl_id)
  57. new_playlists.append(playlist)
  58. num_playlists_initialized_in_db += 1
  59. done.append(playlist_link.strip())
  60. request.user.profile.manage_playlists_import_textarea = ""
  61. request.user.save()
  62. return HttpResponse(loader.get_template("intercooler/manage_playlists_import_results.html")
  63. .render(
  64. {"new_playlists": new_playlists,
  65. "old_playlists": old_playlists,
  66. "not_found_playlists": not_found_playlists,
  67. "num_playlists_already_in_db": num_playlists_already_in_db,
  68. "num_playlists_initialized_in_db": num_playlists_initialized_in_db,
  69. "num_playlists_not_found": num_playlists_not_found
  70. }))
  71. @login_required
  72. @require_POST
  73. def manage_create_playlist(request):
  74. print(request.POST)
  75. return HttpResponse("")
  76. @login_required
  77. @require_POST
  78. def manage_nuke_playlists(request):
  79. print(request.POST)
  80. return HttpResponse("")