def update_variant(id, name, description, user_id): name = name.title() response = variant_pb2.Variant(result="failed", status=status.STATUS_404_NOT_FOUND, message="Variant not found!") try: with session_scope() as session: try: variant = session.query(Variant).filter(Variant.id == id, Variant.is_deleted==False).first() except DataError: response = variant_pb2.Variant(result="failed", status=status.STATUS_400_BAD_REQUEST, message="Variant not found!") session.commit return response if variant: variant.name = name variant.description = description variant.updated_at = datetime.now() variant.updated_by = user_id response = variant_pb2.Variant(result="success", status=status.STATUS_200_OK, message="Variant updated successfully!") session.commit() except IntegrityError: response.message = "Variant already exists with same name!" response.status = status.STATUS_403_FORBIDDEN return response except Exception as e: print(e) response.message = "Unexpected error occurred!" response.status = status.STATUS_500_INTERNAL_SERVER_ERROR pass return response
def delete_variant(id, user_id): response = variant_pb2.Variant(result="failed", status=status.STATUS_404_NOT_FOUND, message="Variant not found!") try: with session_scope() as session: try: variant = session.query(Variant).filter(Variant.id == id, Variant.is_deleted==False).first() except DataError: response = variant_pb2.Variant(result="failed", status=status.STATUS_400_BAD_REQUEST, message="Variant not found!") session.commit return response if variant: options = session.query(VariantOption).filter(VariantOption.variant_id == id, VariantOption.is_deleted==False).first() if options: response.message = "Variant have options cannot be deleted!" response.status = status.STATUS_403_FORBIDDEN else: variant.deleted_at = datetime.now() variant.deleted_by = user_id variant.is_deleted = True response.message = "Variant deleted successfully!" response.result = "success" response.status = status.STATUS_204_NO_CONTENT session.commit() except Exception as e: print(e) response.message = "Unexpected error occurred!" response.status = status.STATUS_500_INTERNAL_SERVER_ERROR pass return response
def create_variant(self, user_id, variant_data): variant = pb2.Variant(name=variant_data['name'].strip(), user_id=user_id, description=variant_data['description'].strip()) variant = self.stub.Create(variant) response = MessageToDict(variant) return response
def get_variant(id): response = variant_pb2.Variant(result="failed", status=status.STATUS_404_NOT_FOUND, message="Variant not found!") try: with session_scope() as session: try: variant = session.query(Variant).filter(Variant.id==id, Variant.is_deleted==False).first() except DataError: response = variant_pb2.Variant(result="failed", status=status.STATUS_400_BAD_REQUEST, message="Variant not found!") session.commit return response if variant: response = variant_pb2.Variant(id=str(variant.id), name=variant.name, description=variant.description) session.commit() except Exception as e: print(e) pass return response
def create_variant(name, description, user_id): name = name.title() variant = Variant( name=name, description=description, created_by=user_id ) response = variant_pb2.Variant(result="failed") try: with session_scope() as session: session.add(variant) response = variant_pb2.Variant(result="success", status=status.STATUS_201_CREATED, message="Variant created successfully!") session.commit() except IntegrityError as e: with session_scope() as session: try: variant = session.query(Variant).filter(Variant.is_deleted==True, Variant.name.ilike(name)).first() except DataError: variant = None if variant: variant.name = name variant.description = description variant.created_at = datetime.now() variant.created_by = user_id variant.updated_at = None variant.updated_by = None variant.is_deleted = False variant.deleted_at = None variant.deleted_by = None session.commit() response = variant_pb2.Variant(result="success", status=status.STATUS_201_CREATED, message="Variant created successfully!") return response else: session.commit() response.message = "Variant already exists with same name!" response.status = status.STATUS_403_FORBIDDEN return response except Exception as e: print(e) response.message = "Unexpected error occurred!" response.status = status.STATUS_500_INTERNAL_SERVER_ERROR pass return response
def read_variant_database(): variants_list = [] """Reads the route guide database. Returns: The full contents of the route guide database as a sequence of route_guide_pb2.Features. """ with session_scope() as session: variants = session.query(Variant).filter(Variant.is_deleted==False).all() for item in variants: variant = variant_pb2.Variant(id=str(item.id), name=item.name, description=item.description) variants_list.append(variant) return variants_list
def create_option(name, description, variant_id, user_id): name = name.title() option = VariantOption( name=name, description=description, created_by=user_id ) response = variant_pb2.Variant(result="failed") try: with session_scope() as session: if variant_id: try: variant = session.query(Variant).filter(Variant.id == variant_id, Variant.is_deleted==False).first() if variant: option.variant_id = variant.id else: response = variant_pb2.VariantOption(result="failed", status=status.STATUS_404_NOT_FOUND, message="Variant not found!") session.commit return response except DataError: response = variant_pb2.VariantOption(result="failed", status=status.STATUS_400_BAD_REQUEST, message="Variant not found!") session.commit return response session.add(option) response = variant_pb2.VariantOption(result="success", status=status.STATUS_201_CREATED, message="Variant Option created successfully!") else: response = variant_pb2.VariantOption(result="failed", status=status.STATUS_400_BAD_REQUEST, message="Variant is required!") session.commit() except IntegrityError as e: with session_scope() as session: try: option = session.query(VariantOption).filter(VariantOption.is_deleted==True, VariantOption.name.ilike(name)).first() except DataError: option = None if option: if variant_id: variant = session.query(Variant).filter(Variant.id == variant_id, Variant.is_deleted==False).first() if variant: option.variant_id = variant.id else: response = variant_pb2.VariantOption(result="failed", status=status.STATUS_404_NOT_FOUND, message="Variant not found!") session.commit return response else: response = variant_pb2.VariantOption(result="failed", status=status.STATUS_400_BAD_REQUEST, message="Variant is required!") option.name = name option.description = description option.created_at = datetime.now() option.created_by = user_id option.updated_at = None option.updated_by = None option.is_deleted = False option.deleted_at = None option.deleted_by = None session.commit() response = variant_pb2.Variant(result="success", status=status.STATUS_201_CREATED, message="Variant Option created successfully!") return response else: session.commit() response.message = "Variant Option already exists with same name!" response.status = status.STATUS_403_FORBIDDEN return response except Exception as e: print(e) response.message = "Unexpected error occurred!" response.status = status.STATUS_500_INTERNAL_SERVER_ERROR pass return response
def Destroy(self, request, context): response = variant_pb2.Variant() response = crud.delete_variant(request.id, request.user_id) return response
def Update(self, request, context): response = variant_pb2.Variant() response = crud.update_variant(request.id, request.name, request.description, request.user_id) return response
def Retrieve(self, request, context): response = variant_pb2.Variant() response = crud.get_variant(request.id) return response