github.com/ismailbayram/bigpicture@v0.0.0-20231225173155-e4b21f5efcff/internal/browser/pyproject/cars/service.py (about) 1 from cars.models import Car 2 3 4 class CarService: 5 def create_car(self, licence_plate, car_type, customer_profile, **kwargs): 6 """ 7 :param license_plate: str 8 :param car_type: CarType 9 :param customer_profile: CustomerProfile 10 :return: Car 11 """ 12 car = Car.objects.create( 13 licence_plate=licence_plate, 14 car_type=car_type, 15 customer_profile=customer_profile, 16 ) 17 if customer_profile.cars.count() == 1: 18 self.select_car(car, customer_profile) 19 20 return car 21 22 def update_car(self, car, licence_plate=None, car_type=None, **kwargs): 23 """ 24 :param car: Car 25 :param license_plate: str 26 :param car_type: CarType 27 :return: Car 28 """ 29 if licence_plate: 30 car.licence_plate = licence_plate 31 if car_type: 32 car.car_type = car_type 33 34 car.save() 35 36 return car 37 38 def deactivate_car(self, car): 39 """ 40 :param car: Car 41 """ 42 car.is_active = False 43 car.is_selected = False 44 car.save() 45 46 if car.customer_profile.cars.filter(is_active=True, is_selected=True).count() == 0: 47 car_selected = car.customer_profile.cars.first() 48 self.select_car(car_selected, car.customer_profile) 49 return car 50 51 def select_car(self, car, customer_profile): 52 """ 53 :param car: Car 54 :param customer_profile: CustomerProfile 55 """ 56 57 Car.objects.filter(customer_profile=customer_profile).update(is_selected=False) 58 59 car.is_selected = True 60 car.save() 61 return car