views.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from django.contrib.auth import logout
  2. from django.contrib.auth.mixins import LoginRequiredMixin
  3. from django.contrib.auth.models import User
  4. from django.contrib.auth.views import LogoutView
  5. from django.http import JsonResponse
  6. from django.shortcuts import render, redirect
  7. from django.urls import reverse_lazy
  8. from django.views import generic
  9. from django.views.generic import CreateView
  10. from .forms import RegisterUserForm, SearchForm
  11. from .models import Application
  12. from .models import Product
  13. from .models import*
  14. # Create your views here.
  15. def index(request):
  16. return render(request, 'index.html')
  17. def profil(request):
  18. return render(request, 'profil.html')
  19. def login(request):
  20. return render(request, 'registration/login.html')
  21. def registration(request):
  22. return render(request, 'registration.html')
  23. # def logout(request):
  24. # return render(request, 'logout.html')
  25. class RegisterView(CreateView):
  26. template_name = 'registration.html'
  27. form_class = RegisterUserForm
  28. success_url = reverse_lazy('login')
  29. def validate_username(request):
  30. username = request.GET.get('username', None)
  31. response = {
  32. 'is_taken': User.objects.filter(username__iexact=username).exists()
  33. }
  34. return JsonResponse(response)
  35. class BBLogoutView(LogoutView):
  36. # template_name = 'logout.html'
  37. success_url = reverse_lazy('index')
  38. class ApplicationListView(generic.ListView):
  39. model = Application
  40. template_name = 'index.html'
  41. context_object_name = 'applications'
  42. class ApplicationsByUserListView(LoginRequiredMixin, generic.ListView):
  43. model = Application
  44. template_name = 'profil.html'
  45. context_object_name = 'applications'
  46. def get_queryset(self):
  47. return Application.objects.filter(user=self.request.user)
  48. def search_view(request):
  49. query = request.GET.get('query', '')
  50. results = Product.objects.filter(name__icontains=query)
  51. form = SearchForm({'query': query})
  52. context = {'results': results, 'form': form}
  53. return render(request, 'search.html', context)
  54. class ApplicationDelete(ApplicationListView):
  55. model = Application
  56. context_object_name = 'application'
  57. template_name = 'deleting.html'
  58. success_url = reverse_lazy('request')
  59. def delete_application(self, pk):
  60. application = Application.objects.filter(user=self.request.user, pk=pk)
  61. if application:
  62. application.delete()
  63. return redirect('request')
  64. def logout_view(request):
  65. logout(request)
  66. return redirect('base.html')