Exemple #1
0
	def put(self, product_id: int):
		"""
		Actualiza los detalles de un producto si pertenece al vendedor.
		"""
		product = ProductModel.find_by_id(product_id)
		if not product:
			return {"message": f"El producto con ID {product_id!r} no ha sido encontrado."}, 404

		if product.user_id != current_identity.id or current_identity.user_type != user_types['vendor']:
			return {"message": "No tiene permitido modificar este producto."}, 401

		data = Product.parser.parse_args()

		if imgurlRegex.match(data['image']) is None:
			return {"message": "La imagen debe ser una URL."}, 400

		product.category_id = data['category_id']
		product.name = data['name']
		product.description = data['description']
		product.price = data['price']
		product.image = data['image']
		product.visible = data['visible']
		product.save_to_db()

		return product.json()
Exemple #2
0
	def post(self):
		"""
		Agregar un nuevo producto a la base de datos. Permitir solo para vendedores.
		"""
		if current_identity.user_type != user_types['vendor']:
			return {"message": "Se requiere ser vendedor para agregar productos."}, 401

		data = ProductList.parser.parse_args()

		if not CategoryModel.find_by_id(data['category_id']):
			return {"message": f"La categoría con ID {data['category_id']!r} no ha sido encontrada."}, 404

		if imgurlRegex.match(data['image']) is None:
			return {"message": "La imagen debe ser un enlace de una imagen."}, 400

		new_product = ProductModel(current_identity.id, **data)
		new_product.save_to_db()

		return new_product.json(), 201
Exemple #3
0
    def put(self, user_id: int):
        """
		Actualiza la imagen del perfil (debe ser una URL).
		"""
        if current_identity.id != user_id:
            return {
                "message":
                "No tiene permitido modificar la imagen de perfil de la cuenta."
            }, 401

        data = UserPicture.parser.parse_args()
        user = UserModel.find_by_id(user_id)

        if data['picture'] is not None and imgurlRegex.match(
                data['picture']) is None:
            return {
                "message":
                "Se debe proporcionar un enlace de una imagen o null."
            }, 400

        user.picture = data['picture']
        user.save_to_db()

        return user.json()
Exemple #4
0
 def test_dominio_con_espacios(self):
     """El dominio de la imagen tiene espacios."""
     self.assertIsNone(
         imgurlRegex.match('https://sitio no valido.com/imagen.png'))
Exemple #5
0
 def test_no_imagen(self):
     """El archivo no es de tipo imagen."""
     self.assertIsNone(imgurlRegex.match('https://sitio.com/archivo.txt'))
Exemple #6
0
 def test_imagen_folder2(self):
     """Imagen dentro de varios directorios."""
     self.assertIsNotNone(
         imgurlRegex.match('https://sitio.com/dir1/dir2/imagen.jpg'))
Exemple #7
0
 def test_imagen_folder(self):
     """Imagen dentro de un directorio en sitio web."""
     self.assertIsNotNone(
         imgurlRegex.match('https://sitio.com/dir1/imagen.jpg'))
Exemple #8
0
 def test_imagen_raiz(self):
     """Imagen en la raíz de un sitio web."""
     self.assertIsNotNone(imgurlRegex.match('https://sitio.com/imagen.jpg'))
Exemple #9
0
 def test_nombre_imagen_invalido(self):
     """El nombre de la imagen tiene caracteres inválidos."""
     self.assertIsNone(imgurlRegex.match('https://sitio.com/"imagen.png"'))