views.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. from django.contrib.auth.mixins import LoginRequiredMixin
  2. from django.contrib.auth.views import LoginView, LogoutView
  3. from django.shortcuts import render
  4. from django.urls import reverse_lazy
  5. from django.views.generic import DetailView, ListView, CreateView, TemplateView
  6. from .models import Service
  7. from .forms import UserRegisterForm, SearchForm
  8. class ViewIndex(ListView):
  9. model = Service
  10. context_object_name = 'services'
  11. template_name = 'main/index.html'
  12. paginate_by = 5
  13. def get_queryset(self):
  14. queryset = Service.objects.all()
  15. search_query = self.request.GET.get('search_query')
  16. if search_query:
  17. queryset = queryset.filter(name__icontains=search_query)
  18. return queryset
  19. def get_context_data(self, *, object_list=None, **kwargs):
  20. context = super().get_context_data(**kwargs)
  21. context['search_form'] = SearchForm(self.request.GET)
  22. return context
  23. class BBLoginView(LoginView):
  24. template_name = 'main/login.html'
  25. success_url = reverse_lazy('index')
  26. class BBLogout(LoginRequiredMixin, LogoutView):
  27. template_name = 'main/logout.html'
  28. success_url = reverse_lazy('index')
  29. class RegistrateUser(CreateView):
  30. success_url = reverse_lazy('index')
  31. def get(self, request, *args, **kwargs):
  32. form = {'form': RegistrateUser()}
  33. return render(request, 'main/registration.html', {'form': form})
  34. def post(self, request, *args, **kwargs):
  35. form = UserRegisterForm(request.POST, request.FILES)
  36. if form.is_valid():
  37. form.save()
  38. return render(request, 'main/index.html', {'form': form})
  39. return render(request, 'main/registration.html', {'form': form})
  40. class ViewServices(ListView):
  41. model = Service
  42. template_name = 'main/service.html'
  43. context_object_name = 'services'
  44. class ServiceDetail(DetailView):
  45. model = Service
  46. template_name = 'main/service_id.html'
  47. class Profile(ListView):
  48. model = Service
  49. template_name = 'main/profile.html'
  50. context_object_name = 'services'
  51. def get_queryset(self):
  52. return Service.objects.filter(customer=self.request.user)
  53. class SearchResult(DetailView):
  54. model = Service
  55. context_object_name = 'services'
  56. template_name = 'main/index.html'
  57. paginate_by = 5
  58. def get_queryset(self):
  59. queryset = Service.objects.all()
  60. search_query = self.request.GET.get('search_query')
  61. if search_query:
  62. queryset = queryset.filter(name__icontains=search_query)
  63. return queryset
  64. def get_context_data(self, *, object_list=None, **kwargs):
  65. context = super().get_context_data(**kwargs)
  66. context['search_form'] = SearchForm(self.request.GET)
  67. return context