views.py 3.5 KB

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