views.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from django.contrib.auth.decorators import login_required
  2. from django.contrib.auth.mixins import LoginRequiredMixin
  3. from django.contrib.auth.views import LogoutView
  4. from django.http import HttpResponseRedirect
  5. from django.shortcuts import render
  6. from django.urls import reverse_lazy
  7. from django.views.generic import ListView, DetailView, CreateView
  8. from .models import *
  9. from .forms import *
  10. class HomePageListView(ListView):
  11. model = Service
  12. template_name = 'main_page.html'
  13. context_object_name = 'services'
  14. def get_queryset(self):
  15. return Service.objects.order_by('-publish_date')[:5]
  16. class ServicesListView(ListView):
  17. model = Service
  18. template_name = 'services.html'
  19. context_object_name = 'services'
  20. class ServiceDetailView(DetailView):
  21. model = Service
  22. template_name = 'service.html'
  23. class UserProfileView(LoginRequiredMixin, ListView):
  24. model = OrderedService
  25. template_name = 'profile.html'
  26. context_object_name = 'ordered_services'
  27. def get_queryset(self):
  28. return OrderedService.objects.filter(user=self.request.user)
  29. class SignupView(CreateView):
  30. form_class = SignupForm
  31. model = AdvUser
  32. template_name = 'registration/signup.html'
  33. success_url = reverse_lazy('login')
  34. class BBLogoutView(LogoutView):
  35. template_name = 'registration/logout.html'
  36. @login_required
  37. def add_to_cart(request, service_id):
  38. service = Service.objects.get(id=service_id)
  39. OrderedService.objects.create(service=service, user=request.user)
  40. return HttpResponseRedirect(reverse_lazy('service', args=(service.id,)))
  41. def search(request):
  42. query = request.GET.get('search')
  43. services = Service.objects.filter(name__icontains=query)
  44. return render(request, 'search_result.html', {'services': services})