{ "info": { "author": "Fco. Javier Tamarit V", "author_email": "javtamvi@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application" ], "description": "PYMETRICK\n=========\nPymetrick version 0.49.0\n\nMini marco de desarrollo web basado en Python 3.x ( TODO EN UNO ), al disponer de todos los m\u00f3dulos necesarios para cualquier desarrollo web (templates, session/cookies, routing de solicitudes, gesti\u00f3n MySQL y SQLite, rst - reStructuredText, identificaci\u00f3n de conexiones, tratamiento de imagenes, tratamiento de correos,...etc) permite prescindir de librerias ajenas a las librer\u00edas est\u00e1ndar de PYTHON, aunque el uso de librer\u00edas externas no se excluye completamente.\n\nNo dispone de un servidor de aplicaciones. Por lo que los desarrollos realizados, deber\u00e1n configurarse con mod_wsgi si se ejecutan en el servidor Apache 2 o bien adaptarlos a otros servidores de aplicaciones disponibles ( CherryPy, Tornado, waitress,... ).\n\nSe aceptan contribuciones de codigo que permitan la adaptaci\u00f3n a desarrollos empresariales, con igual licencia que PYMETRICK.\n\n\nINDICE DE MODULOS\n-----------------\n\n- TEMPLATE o c\u00f3mo interpretar plantillas .tpl y transformarlas en HTML5\n- DEVICE o c\u00f3mo identificar accesos con dispositivos, navegadores, motores e idiomas.\n- ROUTING o c\u00f3mo manipular direcciones HTTP a funciones ( controller )\n- IMAGE o c\u00f3mo gestionar imagenes\n- SQLDB y DB_SQLITE o c\u00f3mo gestionar BB.DD.\n- SESSION o como identificar usuarios y seguridad de acceso\n- MAIL tratamiento de correo\n- EXCHEQUER tratamiento fiscal e identificaci\u00f3n (NIF/CIF/NIE/VAT)\n- HELPERS o gesti\u00f3n de utilidades universales de uso com\u00fan\n- RST o reStructuredText gestiona el formato de textos convirtiendolo en html\n- COMMON o d\u00f3nde identificar valores universales\n\n\nTEMPLATE\n--------\n\nRealiza la gesti\u00f3n de plantillas ( con extensi\u00f3n .tpl ), generando c\u00f3digo HTML5. Similar a JINJA2 pero mucho m\u00e1s simple.\n\nA continuaci\u00f3n se identifica c\u00f3digo para realizar plantillas :\n\n<% ..... %> \nSe puede introducir cualquier tipo de informaci\u00f3n, si los datos se separan con el car\u00e1cter | se enviar\u00e1 como una lista de elementos o si adem\u00e1s, los elementos est\u00e1n separados por clave valor con = se enviar\u00e1 un diccionario. La informaci\u00f3n enviada entre estas etiquetas, se procesar\u00e1 en funci\u00f3n del primer elemento. Si no pudiera ser procesado por el primer elemento, se incluir\u00e1 igual que si se hubiera inclu\u00eddo entre etiquetas {%literal%} {%endliteral%}.\nPor ejemplo, para incluir en el bloque \\
\n\n <%title|Prueba Html5%>\n <%author|Fco.Javier Tamarit%>\n <%description|Prueba Html5%>\n <%script|../../web/js/jquery.min.js||text/javascript%>\n <%script|../../web/js/jquery-ui.min.js||text/javascript%>\n\no para incluir en el bloque \\\n\n <%type=\"hidden\"|id=\"sessionID\"|value=\"\"%>\n <%type=\"number\"|id=\"numero\"|label=\"Numero\"|placeholder=\"Introduzca numero\"|br=\"\"%>\n <%type=\"tel\"|id=\"telefono\"|label=\"Telefono\"|placeholder=\"Introduzca telefono\"|br=\"\"%>\n <%type=\"submit\"|id=\"s\"|value=\"Acceso\"|size=10%>\n <%type=\"submit\"|id=\"r\"|value=\"Registrarse\"%>\n\n{% ..... %} \nSepara la informaci\u00f3n por bloques, el inicio de bloque se nombrar\u00e1 como {%block body%} y el final como {%endblock body%}. Esto crear\u00e1 una etiqueta \\ y al finalizar, otra etiqueta \\. Los bloques permitidos son html, head, body, footer, article, section, aside, form, header, hgroup, table, nav.\nAlgunos bloques pueden incluir informaci\u00f3n en su etiqueta inicial como :\n\n {%block html|lang=\"es\"%}\n {%block body|onload=\"MideScreen()\"%}\n {%block form|id=\"Login\",method=\"POST\",action=\"/input\"%}\n\nObserve que los par\u00e1metros estan separados de la etiqueta mediante |\n\nLos bloques iniciados y no cerrados, se cerrar\u00e1n de forma autom\u00e1tica al finalizar el proceso de la plantilla.\n\n{%literal%} ..... {%endliteral%}\nLa informaci\u00f3n incluida entre estas dos etiquetas, no tendr\u00e1 ninguna tranformaci\u00f3n, se incluir\u00e1 exactamente como se haya introducido.\n\n {%literal%}\n script type=\"text/javascript\"> \n document.createElement(\"nav\"); \n document.createElement(\"header\"); \n document.createElement(\"footer\"); \n document.createElement(\"section\"); \n document.createElement(\"article\"); \n document.createElement(\"aside\"); \n document.createElement(\"hgroup\");\n \nLa informaci\u00f3n contenida entre estas dos etiquetas, se entender\u00e1 que corresponde a un comentario y no se procesar\u00e1 en el c\u00f3digo resultado.\n\n{%extend fichero_template.tpl%}\nLa etiqueta {%extend se emplear\u00e1 para incluir un fichero con formato de plantilla en la plantilla que se est\u00e1 procesando. De forma que no se repita el mismo c\u00f3digo en todas las plantillas y pueda unificarse en un solo fichero de plantilla externo. El nombre de fichero no puede contener espacios.\n\n{%merge fichero_externo.txt%}\nLa etiqueta {%merge tambi\u00e9n importa un fichero externo, pero su contenido no ser\u00e1 procesado y se incluir\u00e1 tal cual se importe. El nombre de fichero no puede contener espacios.\n\n\n{{ ..... }} \nLos datos inclu\u00eddos entre doble llave, se consideran variables o funciones a procesar, que igualmente deben devolver un valor.\n \nDEVICE\n------\n\nA partir del 'user-agent' proporcionado por el cliente, es posible identificar : S.O., navegador, motor, idiomas admitidos, dispositivo origen y adaptar la respuesta.\n\nROUTING\n-------\n\nCon su ayuda, se construyen las reglas de actuaci\u00f3n ante las posibles solicitudes de los clientes, permitiendo respuestas flexibles en funci\u00f3n de par\u00e1metros din\u00e1micos.\n\nImportar routing:\n\nfrom pymetrick.routing import *\n\nPrimero debe crear una ruta al subdominio de la siguiente forma :\n\n rules_web = Map(default_subdomain='www',redirect_defaults='/')\n\n Las rutas a p\u00e1ginas se crean de la siguiente forma :\n\n rules_web.add(rule='/login',controller='login')\n rules_web.add(rule='/login/nada',controller='login')\n rules_web.add(rule='/login/nada/todo',controller='login')\n rules_web.add(rule='/registro',controller='registro')\n rules_web.add(rule='/prueba',controller='prueba')\n\n Ahora, cuando busque una ruta debe indicarlo como :\n\n rules_web.match('login')\n rules_web.match('/login/nada/todo')\n rules_web.match('/varios')\n\n esto ejecutara el controlador parametrizado.\n\n Si la ruta obtenida del cliente, contiene datos del tipo\n '/auth?user=javier&passw=tonto'\n se eliminaran para evaluar correctamente la ruta\n\n Y si no existe la ruta, devolvera 404 y podremos redirigirlo\n if rules_web.match('/no_existe')==\"404\":\n rules_web.match('/')\n ''')\n\nIMAGE\n-----\n\nEste m\u00f3dulo permite la adaptaci\u00f3n o manipulaci\u00f3n de las im\u00e1genes a cualquier necesidad, desde el peso de las im\u00e1genes hasta su formato.\n\nImportar Image:\n\nfrom pymetrick.image import *\n\nUtilidades con imagenes :\n image_size(__path__) Comprueba las dimensiones de la imagen.\n\n image_resize(__path__,__factor__=1,__resized_path__='') Convierte fichero de imagen a un tama\u00f1o diferente, ademas es posible cambiar el tipo de imagen de png, jpeg o gif a otro cuando se renombra el fichero de imagen resultante.\n\n strip_metadata(image_path,newImage=None) Elimina los metadatos EXIF de una imagen, guardando en el mismo nombre de imagen o bien en otra imagen nueva.\n\n image2html('logo.png') Devuelve una imagen en base64 como un string de forma que se pueda utilizar como imagen embebida en css o html.\n\n image2base64('logo.png') Devuelve una imagen en base64 extendido ( file_name$string_base64).\n\n image_download('http://nadadenada.com/coche.png', '/img/coche_2.png') Descarga una imagen desde una url con