Advertisement
pacho_the_python

Untitled

Nov 8th, 2022
1,051
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.47 KB | None | 0 0
  1. from django.views import generic
  2. from django.shortcuts import render, redirect
  3. from django.urls import reverse_lazy
  4. from vehicle.forms import ProfileCreateForm, CarCreateForm, CarEditForm, CarDeleteForm, DeleteProfileForm, \
  5.     ProfileEditForm
  6. from vehicle.web.models import Profile, Car
  7.  
  8.  
  9. def get_profile():
  10.     user = Profile.objects.all()
  11.     if user:
  12.         return user[0]
  13.     return None
  14.  
  15.  
  16. def index(request):
  17.     profile = get_profile()
  18.     context = {
  19.         'profile': profile
  20.     }
  21.     return render(request, 'index.html', context)
  22.  
  23.  
  24. class ProfileCreate(generic.CreateView):
  25.     template_name = 'profile-create.html'
  26.     form_class = ProfileCreateForm
  27.     success_url = reverse_lazy('catalogue')
  28.  
  29.  
  30. def show_catalogue(request):
  31.     profile = get_profile()
  32.     cars = Car.objects.all()
  33.     total_cars = len(cars)
  34.     context = {
  35.         'profile': profile,
  36.         'cars': cars,
  37.         'total_cars': total_cars
  38.     }
  39.     return render(request, 'catalogue.html', context)
  40.  
  41.  
  42. class CarCreate(generic.CreateView):
  43.     template_name = 'car-create.html'
  44.     form_class = CarCreateForm
  45.     success_url = reverse_lazy('catalogue')
  46.  
  47.  
  48. class CarDetails(generic.DetailView):
  49.     model = Car
  50.     template_name = 'car-details.html'
  51.     context_object_name = 'car'
  52.  
  53.  
  54. class CarEdit(generic.UpdateView):
  55.     model = Car                                      # Кой Модел да използва
  56.     form_class = CarEditForm                         # Коя форма да използва
  57.     template_name = 'car-edit.html'                  # Кой темплейт да използва
  58.     context_object_name = 'car'                      # Как да се казва обекта. Ако не се зададе по подразбиране е "object"
  59.     success_url = reverse_lazy('catalogue')          # Къде да редиректне
  60.  
  61.  
  62. def car_delete(request, pk):
  63.     car = Car.objects.filter(pk=pk).get()
  64.     if request.method == "POST":
  65.         form = CarDeleteForm(request.POST, instance=car)
  66.         if form.is_valid():
  67.             form.save()
  68.             return redirect('catalogue')
  69.     else:
  70.         form = CarDeleteForm(instance=car)
  71.     context = {
  72.         'car': car,
  73.         'form': form
  74.     }
  75.     return render(request, 'car-delete.html', context)
  76.  
  77.  
  78. def profile_details(request):
  79.     profile = get_profile()
  80.     cars = Car.objects.all()
  81.     car_total_price = sum(car.price for car in cars)
  82.     context = {
  83.         'profile': profile,
  84.         'car_total_price': car_total_price
  85.     }
  86.     return render(request, 'profile-details.html', context)
  87.  
  88.  
  89. def profile_edit(request):
  90.     profile = get_profile()
  91.     if request.method == 'POST':
  92.         form = ProfileEditForm(request.POST, instance=profile)
  93.         if form.is_valid():
  94.             form.save()
  95.             return redirect('profile details')
  96.     else:
  97.         form = ProfileEditForm(instance=profile)
  98.     context = {
  99.         'form': form
  100.     }
  101.     return render(request, 'profile-edit.html', context)
  102.  
  103.  
  104. def profile_delete(request):
  105.     user_profile = get_profile()
  106.     cars = Car.objects.all()
  107.     form = DeleteProfileForm(instance=user_profile)
  108.  
  109.     if request.method == 'POST':
  110.         form = DeleteProfileForm(request.POST, instance=user_profile)
  111.         if form.is_valid():
  112.             cars.delete()
  113.             form.save()
  114.             return redirect('index')
  115.  
  116.     context = {'form': form}
  117.     return render(request, 'profile-delete.html', context)
  118.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement