views.py 3.3 KB

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