from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.views import LoginView, LogoutView from django.shortcuts import render from django.urls import reverse_lazy from django.views.generic import DetailView, ListView, CreateView, TemplateView from .models import Service from .forms import UserRegisterForm, SearchForm class ViewIndex(ListView): model = Service context_object_name = 'services' template_name = 'main/index.html' paginate_by = 5 def get_queryset(self): queryset = Service.objects.all() search_query = self.request.GET.get('search_query') if search_query: queryset = queryset.filter(name__icontains=search_query) return queryset def get_context_data(self, *, object_list=None, **kwargs): context = super().get_context_data(**kwargs) context['search_form'] = SearchForm(self.request.GET) return context class BBLoginView(LoginView): template_name = 'main/login.html' success_url = reverse_lazy('index') class BBLogout(LoginRequiredMixin, LogoutView): template_name = 'main/logout.html' success_url = reverse_lazy('index') class RegistrateUser(CreateView): success_url = reverse_lazy('index') def get(self, request, *args, **kwargs): form = {'form': RegistrateUser()} return render(request, 'main/registration.html', {'form': form}) def post(self, request, *args, **kwargs): form = UserRegisterForm(request.POST, request.FILES) if form.is_valid(): form.save() return render(request, 'main/index.html', {'form': form}) return render(request, 'main/registration.html', {'form': form}) class ViewServices(ListView): model = Service template_name = 'main/service.html' context_object_name = 'services' class ServiceDetail(DetailView): model = Service template_name = 'main/service_id.html' class Profile(ListView): model = Service template_name = 'main/profile.html' context_object_name = 'services' def get_queryset(self): return Service.objects.filter(customer=self.request.user) class SearchResult(DetailView): model = Service context_object_name = 'services' template_name = 'main/index.html' paginate_by = 5 def get_queryset(self): queryset = Service.objects.all() search_query = self.request.GET.get('search_query') if search_query: queryset = queryset.filter(name__icontains=search_query) return queryset def get_context_data(self, *, object_list=None, **kwargs): context = super().get_context_data(**kwargs) context['search_form'] = SearchForm(self.request.GET) return context