Devel:GeneralProducts
From WikiNesia
Contents |
Modelo
Hay dos entidades para la generación universal de productos.
- ProductSet. Conjunto de productos generados ante un determinado conjunto de parámetros de entrada.
- Product. Cada uno de los productos dentro del conjunto de productos.
Columnas en ProductSet
- name : identificador del conjunto de productos.
- commandline : línea de comandos del programa que genera los productos.
- product_path_prefix : prefijo para los productos a generar. Se completa con el product_path_suffix de cada Product (ver más abajo).
Columnas en Product
- name : identificador del conjunto de productos al que pertenece este producto.
- orden : orden dentro del resultado en que debiera aparecer este producto.
- title : título del producto.
- kind : tipo de producto ( img / txt / csv )
- product_path_suffix : sufijo de los productos a generar.
La ruta al producto es una ruta relativa a partir de brewernet.productsdir. Dicha ruta se forma uniendo product_path_prefix y product_path_suffix. Se recomienda que la parte común de todos los productos relacionados se encuentre en el prefijo, y lo específico en el sufijo, para simplificar la edición de las tablas. Pero nada impide que prefix esté vacío y el sufijo tenga la ruta relativa completa.
Valores parametrizados
Dentro de commandline, product_path_prefix y product_path_suffix pueden aparecer parámetros, especificados mediante la siguiente sintaxis: ${param_name}. Los nombres de parámetro permitidos son aquellos que vienen desde la página del formulario (brewerid, brewerids y date) y las rutas absolutas correspondientes a algunas variables de configuración (brewernet.bindir, brewernet.productsdir).
Ejemplo
+-------+---------------------------------------------------------------------------------+----------------------------------------+
| name | commandline | product_path_prefix |
+-------+---------------------------------------------------------------------------------+----------------------------------------+
| ozone | ${brewernet.bindir}/producto_o3.pl ${brewerid} ${date} ${brewernet.productsdir} | /ozono/${brewerid}/${brewerid}_${date} |
+-------+---------------------------------------------------------------------------------+----------------------------------------+
+-------------+-------+----------------+------+---------------------+ | product_set | orden | title | kind | product_path_suffix | +-------------+-------+----------------+------+---------------------+ | ozone | 1 | Grafica O3 | img | _O3.png | | ozone | 2 | Grafica HG | img | _HG.png | | ozone | 3 | Grafica O3RAW | img | _O3RAW.png | | ozone | 4 | Grafica SL | img | _SL.png | | ozone | 5 | Datos en crudo | txt | _O3.txt | +-------------+-------+----------------+------+---------------------+
Controlador
El controlador para los productos universales se llama general_products. Se encarga de verificar que los parámetros son válidos, de generar los productos si no han sido generados anteriomente.
Al controlador se le pueden pasar cinco parámetros:
- product_set_name : nombre del conjunto de productos. Indica los productos a generar. Se corresponde con el atributo name de ProductSet.
- force : si se pasa el parámetro y tiene valor "1", se fuerza la generación de los productos.
- brewerid : número de brewer sobre el que se quiere generar el producto. Este parámetro es necesario dependiendo del programa que genera los productos.
- brewerids : números de brewer, separados por comas, sobre los que se quiere generar el producto. Este parámetro es necesario dependiendo del programa que genera los productos.
- date : fecha (en formato %d/%m/%Y) sobre la que se quiere generar el producto. Este parámetro es necesario dependiendo del programa que genera los productos.
Parámetros
Los parámetros se guardan en la variable kwargs. Se realiza una validación de los productos y, a la vez, una conversión.
- date : la fecha pasa a formato %Y-%m-%d
- brewerid : se asegura que el número de brewer es una cadena con formato %03d.
Resultado
El controlador devuelve un diccionario, donde el elemento products es un array de "definiciones" de productos. Cada definición da su url, el tipo, y el título.
