Guest User

Untitled

a guest
Mar 20th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.32 KB | None | 0 0
  1. from django.urls import path, re_path
  2. from . import views
  3.  
  4. app_name = 'music'
  5.  
  6. urlpatterns = [
  7.  
  8. path('register/', views.register, name='register'),
  9. path('login_user/', views.login_user, name='login_user'),
  10. path('logout_user/', views.logout_user, name='logout_user'),
  11. #path('<int:album_id>/', views.detail, name='detail'),
  12. path('<int:pk>/', views.DetailView.as_view(), name='detail'),
  13. #re_path(r'^(?P<album_id>[0-9]+)/$', views.detail, name='detail'),
  14. #path('<int:album_id>/favorite/', views.favorite, name='favorite'),
  15. path('album/add', views.AlbumCreate.as_view(), name='album-add'),
  16. path('album/<int:pk>/', views.AlbumUpdate.as_view(), name='album-update'),
  17. path('album/<int:pk>/delete/', views.AlbumDelete.as_view(), name='album-delete'),
  18. path('index/', views.IndexView.as_view(), name='index'),
  19. path('', views.login_user)
  20. # path('', views.index, name='index'),
  21.  
  22.  
  23. ]
  24.  
  25. from django.shortcuts import render, redirect
  26. from django.contrib.auth import authenticate, login, logout
  27. from django.views import generic
  28. from django.views.generic import View
  29. from django.views.generic.edit import CreateView, UpdateView, DeleteView
  30. from django.urls import reverse_lazy
  31. from django.contrib.auth.decorators import login_required
  32. from .models import Album, Song
  33. from django.db.models import Q
  34. from .forms import UserForm
  35.  
  36.  
  37. class IndexView(generic.ListView):
  38. template_name = 'music/index.html'
  39. def get_queryset(self):
  40. return Album.objects.all()
  41.  
  42. class DetailView(generic.DetailView):
  43. model = Album
  44. template_name = 'music/detail.html'
  45.  
  46.  
  47. class AlbumCreate(CreateView):
  48. model = Album
  49. fields = ['artist', 'alum_title', 'genre', 'album_logo']
  50.  
  51.  
  52. class AlbumUpdate(UpdateView):
  53. model = Album
  54. fields = ['artist', 'alum_title', 'genre', 'album_logo']
  55.  
  56.  
  57. class AlbumDelete(DeleteView):
  58. model = Album
  59. success_url = reverse_lazy('music:index')
  60.  
  61.  
  62. @login_required(login_url="/login_user/")
  63. class UserFormView(View):
  64. form_class = UserForm
  65. template_name = 'music/registration_form.html'
  66.  
  67. def get(self, request):
  68. form = self.form_class(None)
  69. return render(request, self.template_name,{'form':form})
  70.  
  71. def post(self, request):
  72. form = self.form_class(request.POST)
  73.  
  74. if form.is_valid():
  75.  
  76. user = form.save(commit=False)
  77.  
  78. username = form.cleaned_data['username']
  79. password = form.cleaned_data['password']
  80. user.set_password(password)
  81. user.save()
  82.  
  83. user = authenticate(username=username, password=password)
  84.  
  85. if user is not None :
  86. if user.is_active:
  87. login(request, user)
  88. return redirect('music:index')
  89.  
  90. return render(request, self.template_name,{'form' : form})
  91.  
  92. context = {
  93. "form": form,
  94. }
  95. return render(request, 'music/registration_form.html', context)
  96.  
  97. def logout_user(request):
  98. logout(request)
  99. form = UserForm(request.POST or None)
  100. context = {
  101. "form": form,
  102. }
  103. return render(request, 'music/login.html', context)
  104.  
  105. def login_user(request):
  106. if request.method == "POST":
  107. username = request.POST['username']
  108. password = request.POST['password']
  109. user = authenticate(username=username, password=password)
  110. if user is not None:
  111. if user.is_active:
  112. login(request, user)
  113. albums = Album.objects.filter(user=request.user)
  114. return render(request, 'music/index.html', {'albums': albums})
  115. else:
  116. return render(request, 'music/login.html', {'error_message': 'Your account has been disabled'})
  117. else:
  118. return render(request, 'music/login.html', {'error_message': 'Invalid login'})
  119. else:
  120. return render(request, 'music/login.html')
  121.  
  122.  
  123. def register(request):
  124. form = UserForm(request.POST or None)
  125. if form.is_valid():
  126. user = form.save(commit=False)
  127. username = form.cleaned_data['username']
  128. password = form.cleaned_data['password']
  129. user.set_password(password)
  130. user.save()
  131. user = authenticate(username=username, password=password)
  132. if user is not None:
  133. if user.is_active:
  134. login(request, user)
  135. albums = Album.objects.filter(user=request.user)
  136. return render(request, 'music/index.html', {'albums': albums})
  137. context = {
  138. "form": form,
  139. }
  140. return render(request, 'music/register.html', context)
  141.  
  142. from django.contrib.auth.models import Permission, User
  143. from django.db import models
  144. from django.urls import reverse
  145.  
  146.  
  147. class Album(models.Model):
  148. user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
  149. artist = models.CharField(max_length=20)
  150. alum_title = models.CharField(max_length=20)
  151. genre = models.CharField(max_length=10)
  152. album_logo = models.FileField()
  153.  
  154. def get_absolute_url(self):
  155. return reverse('music:detail', kwargs={'pk':self.pk})
  156. def __str__(self):
  157. return self.alum_title + self.artist
  158.  
  159. class Song(models.Model):
  160. album = models.ForeignKey(Album, on_delete=models.CASCADE)
  161. file_type = models.CharField(max_length=10)
  162. song_title = models.CharField(max_length=20)
  163. is_favorite = models.BooleanField(default=False)
  164.  
  165. def __str__(self):
  166. return self.song_title
Add Comment
Please, Sign In to add comment