{ "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 y permite renombrar el fichero.\n\n image_checksums('logo.png') Devuelve un hash como un string que identifica la imagen para ser comparada con otras imagenes.\n\n image_compare(file1,file2) Devuelve 0 si las imagenes comparadas son iguales, en caso contrario devolvera un valor distinto de 0.\n \n image_qrcode('/home/content.png'logo.png') Devuelve datos/informacion en formato qrcode como imagen png\n\nSQLDB \n--------\n\nFacilita la creaci\u00f3n, modificaci\u00f3n, solicitud y eliminaci\u00f3n de tablas o datos al servidor MySQL, gestionando adecuadamente la conexi\u00f3n y permisos.\n\nDB_SQLITE\n---------\n\nFacilita la creaci\u00f3n, modificaci\u00f3n, solicitud y eliminaci\u00f3n de tablas o datos en una bb.dd. SQLite.\n\nSESSION\n-------\n\nCon el m\u00f3dulo SESSION se introduce la identificaci\u00f3n de las conexiones de los usuarios.\n\nMAIL\n-----\n\nCon el m\u00f3dulo MAIL se gestiona el correo electr\u00f3nico.\n\nPar\u00e1metros necesarios : \n\n sendMail()\n _sender - str - enviado desde\n _to - list - enviar a\n _cc - list - enviar copias\n _bcc - list - enviar copias ocultas\n _subject - str - asunto\n _text - str - text/plain del mensaje\n _html - str - text/html del mensaje\n _user - str - usuario\n _password - str - password\n _smtpserver - str - servidor\n _port - str - puerto\n _files - list - ficheros adjuntos\n _output - str - el contenido del mensaje se grabara como un fichero\n\n getMail()\n _user - str - usuario\n _password - str - password\n _imapserver - str - servidor IMAP\n _pop3server - str - servidor POP3\n _port - str - puerto\n _criteria - str - \n ALL - devuelve todos los mensajes que coinciden con el resto del criterio\n ANSWERED - coincide con los mensajes con la bandera \\\\ANSWERED establecida\n BCC \"cadena\" - coincide con los mensajes con \"cadena\" en el campo Bcc:\n BEFORE \"fecha\" - coincide con los mensajes con Date: antes de \"fecha\"\n BODY \"cadena\" - coincide con los mensajes con \"cadena\" en el cuerpo del mensaje\n CC \"cadena\" - coincide con los mensajes con \"cadena\" en el campo Cc:\n DELETED - coincide con los mensajes borrados\n FLAGGED - coincide con los mensajes con la bandera \\\\FLAGGED establecida (algunas veces referidos como Importante o Urgente)\n FROM \"cadena\" - coincide con los mensajes con \"cadena\" en el campo From:\n KEYWORD \"cadena\" - coincide con los mensajes con \"cadena\" como palabra clave\n NEW - coincide con los mensajes nuevos\n OLD - coincide con los mensajes antiguos\n ON \"fecha\" - coincide con los mensajes con Date: coincidiendo con \"fecha\"\n RECENT - coincide con los mensajes con la bandera \\\\RECENT establecida\n SEEN - coincide con los mensajes que han sido le\u00eddos (la bandera \\\\SEEN esta estabecido)\n SINCE \"fecha\" - coincide con los mensajes con Date: despues de \"fecha\"\n SUBJECT \"cadena\" - coincide con los mensajes con \"cadena\" en Subject:\n TEXT \"cadena\" - coincide con los mensajes con el texto \"cadena\"\n TO \"cadena\" - coincide con los mensajes con \"cadena\" en To:\n UNANSWERED - coincide con los mensajes que no han sido respondidos\n UNDELETED - coincide con los mensajes que no est\u00e1n eliminados\n UNFLAGGED - coincide con los mensajes que no tienen bandera\n UNKEYWORD \"cadena\" - coincide con los mensajes que no tienen la palabra clave \"cadena\"\n UNSEEN - coincide con los mensajes que aun no han sido leidos\n _outputdir - str -\n\n deleteIMAP()\n _user - str - usuario\n _password - str - password\n _imapserver - str - servidor IMAP\n _port - str - puerto\n _folder - str - carpeta a tratar\n\n timeZone(zona)\n\nEXCHEQUER\n---------\n\nCon el m\u00f3dulo EXCHEQUER pueden introducirse datos identificativos fiscales en las transacciones comerciales, as\u00ed como validar\nlas identificaciones aportadas seg\u00fan reglas de cada pa\u00eds.\n\nHELPERS\n-------\n\nSe admiten todas las clases o funciones que por su funcionalidad, puedan compartirse entre los restantes m\u00f3dulos o no tengan un f\u00edn funcional asociado a los restantes m\u00f3dulos.\n\n \nRST o reStructuredText\n----------------------\n\nA partir de ficheros con extension .rst y codificados como un reStructuredText se obtienen ficheros HTML5 completos o HTML5 parciales que completar\u00e1n otros ficheros HTML5 principales.\n\n\nCOMMON\n------\n\nProporciona listas de valores universales para todos los m\u00f3dulos.\n\nVERSIONES\n---------\n\nLas versiones estables se indicar\u00e1n con n\u00famero de versi\u00f3n par. Las versiones en desarrollo y que incorporen caracter\u00edsticas experimentales se numerar\u00e1n con versi\u00f3n impar.\n\n\nVer 0.01 21/09/2012 Licencia GPLv3 - en desarrollo -\n Las pruebas de desarrollo se realizan sobre un ordenador RASPBERRY PI 512Mb RAM, 1 GHz CPU y tarjeta SD de 64Gb con una evoluci\u00f3n satisfactoria. El objetivo es desarrollar una librer\u00eda simple y funcional.\n El entorno hardware de desarrollo se complementa con un servidor MySQL 5 y servidor web APACHE 2 con mod_wsgi.\n\nVer 0.02 20/08/2015 Licencia GPLv3 - versi\u00f3n estable -\n\nVer 0.48.4 15/12/2018 Licencia GPLv3 - versi\u00f3n estable -\n\nVer 0.49.0 26/08/2019 Licencia GPLv3 - versi\u00f3n estable - \n \n\nCREDITOS O COLABORACIONES\n-------------------------\n\nCualquier desarrollo que se incorpore a un m\u00f3dulo o la introducci\u00f3n de nuevos desarrollos deben ser aprobados antes de formar parte de la libreria, debiendo respetar la licencia GPLv3. El reconocimiento de los desarrolladores que colaboren a mejorar la librer\u00eda se incorporar\u00e1 en la cabecera 'CREDITS' de los m\u00f3dulos afectados por sus desarrollos.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://pythonhosted.org/pymetrick/", "keywords": "", "license": "GNU/GPLv3", "maintainer": "Fco. Javier Tamarit V", "maintainer_email": "pymetrick@pymetrick.org", "name": "pymetrick", "package_url": "https://pypi.org/project/pymetrick/", "platform": "", "project_url": "https://pypi.org/project/pymetrick/", "project_urls": { "Homepage": "https://pythonhosted.org/pymetrick/" }, "release_url": "https://pypi.org/project/pymetrick/0.49.0/", "requires_dist": null, "requires_python": "", "summary": "Lightweight web framework", "version": "0.49.0" }, "last_serial": 5733623, "releases": { "0.49.0": [ { "comment_text": "", "digests": { "md5": "baff105dfb820ef24864bf22fbf95273", "sha256": "b1535b1630e3d748cb6e2966d53f7b12b673102b9cf1eec5b513695c202217b7" }, "downloads": -1, "filename": "pymetrick-0.49.0.tar.gz", "has_sig": false, "md5_digest": "baff105dfb820ef24864bf22fbf95273", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147183, "upload_time": "2019-08-26T23:03:34", "url": "https://files.pythonhosted.org/packages/1a/f4/6640d2c18f74367c6a8a1156a8b829c14538f80ac0661e3541d63abf2ea4/pymetrick-0.49.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "baff105dfb820ef24864bf22fbf95273", "sha256": "b1535b1630e3d748cb6e2966d53f7b12b673102b9cf1eec5b513695c202217b7" }, "downloads": -1, "filename": "pymetrick-0.49.0.tar.gz", "has_sig": false, "md5_digest": "baff105dfb820ef24864bf22fbf95273", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 147183, "upload_time": "2019-08-26T23:03:34", "url": "https://files.pythonhosted.org/packages/1a/f4/6640d2c18f74367c6a8a1156a8b829c14538f80ac0661e3541d63abf2ea4/pymetrick-0.49.0.tar.gz" } ] }