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