miércoles, 5 de diciembre de 2018

Generar PDF con DJango 2.1 (Vertical y Horizontal - Portrait y Landscape)

#django #pdf #generate #reportlab #Portrait #letter #landscape #articulo #free #class

Para generar pdf con Django, debemos instalar el paquete ReportLab 


 pip install reportlab  

ReportLab sólo tiene una dependencia llamada Pillow.  Si tienes problemas con la instalación de ReportLab, trata primero de instalar el Pillow.

En la siguiente imange puedes ver cómo instalo reportlab y pillow de manera offline.

Una vez instalado, ya podemos trabajar en nuestro proyecto, para esto crearemos una vista de tipo función de la siguiente forma:

 def categoria_print(self, pk=None):  
   import io  
   from reportlab.platypus import SimpleDocTemplate, Paragraph, TableStyle  
   from reportlab.lib.styles import getSampleStyleSheet  
   from reportlab.lib import colors  
   from reportlab.lib.pagesizes import letter  
   from reportlab.platypus import Table  
   
   response = HttpResponse(content_type='application/pdf')  
   buff = io.BytesIO()  
   doc = SimpleDocTemplate(buff,  
               pagesize=letter,  
               rightMargin=40,  
               leftMargin=40,  
               topMargin=60,  
               bottomMargin=18,  
               )  
   categorias = []  
   styles = getSampleStyleSheet()  
   header = Paragraph("Listado de Categorías", styles['Heading1'])  
   categorias.append(header)  
   headings = ('Id', 'Descrición', 'Activo', 'Creación')  
   if not pk:  
     todascategorias = [(p.id, p.descripcion, p.activo, p.creado)  
               for p in Categoria.objects.all().order_by('pk')]  
   else:  
     todascategorias = [(p.id, p.descripcion, p.activo, p.creado)  
               for p in Categoria.objects.filter(id=pk)]   
   t = Table([headings] + todascategorias)  
   t.setStyle(TableStyle(  
     [  
       ('GRID', (0, 0), (3, -1), 1, colors.dodgerblue),  
       ('LINEBELOW', (0, 0), (-1, 0), 2, colors.darkblue),  
       ('BACKGROUND', (0, 0), (-1, 0), colors.dodgerblue)  
     ]  
   ))  
   
   categorias.append(t)  
   doc.build(categorias)  
   response.write(buff.getvalue())  
   buff.close()  
   return response  


En este caso, las importaciones de las dependencias las hice dentro de la función ya que no requeriré en otro lado de dichas importaciones, pero en tu caso, puedes hacerlo de manera global para todas las funciones.

Esta vista imprime las categorías de un determinado producto (parte de lo que imparte en el curso de Desarrollo Web con Python usando Django 2.1) puede recibir el id de la categoría o no.  Si lo recibe imprime ese único registro, sino lo recibe imprime todos los registros.

En este caso:
  • Se genera documento de tamaño carta (verticual o portrait)
  • Se crea variable vacía
  • Se agrega título "Listado de Categorías"
  • Se agrega el título
  • Se agregan encabezado para la tabla a mostrar (Id, Descripción, Activo y Creación).
  • Si a la vista no se le pasa el Id,  filtra de las categorías todos los registros, si se pasa el Id, únicamente filtra el registro que cumpla con el Id dado.
  • Se genera una tabla con encabezado y el resultado del filtro anterior.
  • Se le d formato a la tabla
  • Se agrega tabla
  • Se construye el documento
  • Impresión a la salida
  • Cerrar buffer
  • Devolver response
Luego se debe agregar la ruta que responda a la vista. Una vez importada la vista anterior, se procede a agregar una ruta para que imprima todos los registros (no se le envía id) y la otra que imprima un único registro (se envía Id):

 path('categorias/print', categoria_print, name='categoria_print'),  
 path('categorias/print/<int:pk>', categoria_print, name='categoria_print_one'),  

Ya sólo falta poner la url en un botón para que se imprima, en este caso (basándonos en el curso), el botón imprimir (todos los registros), se puso en la parte superior y el botón imprimr un registro, se agregó en una columna donde están los botones, según se muestra en la siguiente imagen.


El código para cada uno es:
Imprimir todo:

 <a href="{% url 'catalogos:categoria_print' %}" class="btn btn-warning" target="print"><span class="fa fa-print"></span> Imprimir</a>  

Imprimir un único registro, se toma en cuenta que se está recorriendo por medio de la variable item.

 <a href="{% url 'catalogos:categoria_print_one' item.id %}" target="print" class="btn btn-default btn-circle">  
    <span class="fa fa-print"></span>  
 </a>  

Generando la salida, respectivamente imprimir todo y un registro:


Para imprimir en forma horizontal (LandScape), sólo se debe hacer los siguientes cambios.


Básicamente es importar el tamaño landscape y luego al armar el documento, indicarle que el tamaño es carta pero con orientación horizontal (landscape)


Espero que te sea de utilidad este artículo.  Si deseas estar pendiente de las demás actualizaciones, ya sea de artículos y/o descuento de los cursos, puedes registrarte en el siguiente formulario:





Clase Gratis - Descargar SymmetricDS

#Download #Descarga #SymmetricDS @SymmetricDS #Clase #Gratis #Curso #OpenSource #Syncronization #Data #Plataform #DataBase

Syncronizar (o Replicar) tus datos es muy importante para garantizar tener actualizado tus registros en todo momento.
 
En esta ocasión vamos a ver cómo descargar SymmetricDS y copiarlo a un Servidor Linux con #Ubuntu Server.

Cualquier duda, estoy para responder sus preguntas.


Próximamente más clases gratis de este curso.

viernes, 30 de noviembre de 2018

♻ Replicación de Base de Datos con SymmetricDS


#data #database #opensource #replica #basedatos #sqlserver #postgresql #mariadb #mysql #SymmetricDS #integration #udemy #video #clases #curso #course

Elabora solución de replicación multiplataforma, multi BBDD, eficiente, estable, escalable y fácil de configurar

Lo que aprenderás

  • Implementar solución de replicación robusta, escalable, flexible y de fácil configuración sin invertir absolutamente nada en software.
  • Implementar solución de replicación robusta, escalable, flexible y de fácil configuración sin invertir absolutamente nada en software.

Descripción

¿Te gustaría implementar una solución de replicación robusta, eficiente, escalable sin invertir un solo centavo? ¿Eres DBA o quieres serlo?  ¿Eres desarrollador y requieres hacer pruebas en diferentes bases de datos? Entonces debes tomar este curso.

#SymmetricDS es un software de código abierto para replicación de datos asíncrona que permite subscriptores múltiples y sincronización bidireccional. Utiliza tecnologías web y de bases de datos para replicar tablas entre bases de datos relacionales, casi en tiempo real. El software fue diseñado para escalar a un gran número de bases de datos, trabajar con conexiones de bajo ancho de banda, y resistir a periodos de inoperatividad de la red.

Una replicación de base de datos  es una técnica mediante la cual copiamos de forma exacta en otra  ubicación una instancia (o cluster) de la base de datos. Se utiliza en entornos  distribuidos de Sistemas de Gestión de Bases de Datos donde una sola  base de datos tiene que ser utilizada y actualizada en varios lugares de  forma simultánea.

Desde este blog lo puedes tener con precio de lanzamiento, con 87% descuento de su precio original.


87% Descuento Cupos Limitados

martes, 27 de noviembre de 2018

Revertir Migraciones en Django 2.1

#Revertir #Migration #Django #Python #PostgreSQL

En este artículo, veremos un tema muy importante cuando se está desarrollando una aplicación web con Django, las reversiones de migraciones.

El sistema de migraciones de Django fue elaborado y optimizado para trabajar con una gran cantidad de migraciones.

Generalmente, todo debe fluir con normalidad, pero en determinadas ocasiones, se requiere de hacer una limpieza de todo lo aplicado.

Para tener una lista de las migraciones, se debe ejecutar el comando
manage.py showmigrations



La más sencilla de todas es borrar todo, incluyendo la base de datos, el procedimiento sería el siguiente (siempre respaldar antes de ejecutar un comando por lotes):
  1. Borrar todos archivos de migración a excepción del __init__.py, los comando a aplicar tanto en linux como en windows serían algo así:


    1. En Linux:  find . -path "*migrations/*.py" -not -name __init__.py -delete
    2. En Windows:  for /r %i in (migrations\*.py) do if not "%i"=="%~dpi__init__.py" del %i
  2. Borrar Base de Datos
  3. Crear Base de Datos
  4. Crear migraciones nuevamente
    1. manage.py makemigrations
  5. Ejecutar migración
    1. manage.py migrate

La otra opción es reiniciar las migraciones para una aplicación (por ejemplo catalogos)
 manage.py migrate --fake catalogos zero



Si después de reiniciarlas volvemos a consultar las migraciones, el resultado para la aplicación catálogos debería ser algo parecido a:


Como podrás ver la aplicación catálogo no tiene marcada las migraciones.


Bueno, hay otras opciones, ¿cuál otra conoces y puedes contribuir?




Para profundizar en Django 2.1, te invito a que te inscribas en el curso de Desarrollo de Aplicaciones Web con Python Usando Django 2.2 para Principiante (haciendo click sobre este enlace para más detalles).


Si quieres estar informado de nuevos artículos, registrate en el siguiente formulario (si aún no lo has hecho).













miércoles, 14 de noviembre de 2018

Instalar [Install] PostgreSQL en Ubuntu Server 18.04 LTS Bionic Beaver


#Install #Instalar #Instalación #Installation #PostgreSQL #UbuntuServer #Ubuntu #Linux #bionic #Beaver

Comparte para ver.  Share to watch





sábado, 10 de noviembre de 2018

Por tiempo y cupones limitados 100% Curso Entity FrameWork


#Cupones #Free #Udemy #Gratis #FreeCoupon #Course #EntityFrameWork #CSharp #SQLServer 100% #OFF

Por tiempo y cupones limitados, les ofrezco 100% Gratis, comparte para divulgar, muy agradecido

https://www.udemy.com/iniciando-con-entity-framework/?couponCode=EF1112018FREE

Lo que si te pido es que me dejes una buena reseña en este curso.

Si llegas tarde, aún te puedo ofrecer una fantástica promoción del 90%, precio rebajado de USD 99.99 a sólo USD 10.99. 

Para acceder al descuento especial, sólo debes dar click en el enlace siguiente:

http://debsconsultores.blogspot.com/2018/10/descuento-en-cursos-de-hasta-94.html

Puedes suscribirte a la lista de correo para estar atento a futuras promociones y/o descuentos.


lunes, 5 de noviembre de 2018

¿Qué es y qué no es BASH?

#Bash #Scripting #Script #Shell #Linux  #Tutorial

En esta ocasión, iniciaré con una serie de tutoriales sobre Bash.

Bash la abreviación de GNU Bourne Again Shell. Es un lenguaje de programación, específicamente un lenguaje de scripting shell, con un intérprete llamado bash.

El programa bash es usado como un shell, tanto para escribir comandos como una consola interactiva de línea de comandos, apilando comandos desde un script o como un comando único.

¿Qué es y qué no es BASH?

 Hay mucha confusión sobre lo que es o no es Bash.  Acá dejo algunos conceptos erróneoss:

  • Bash no es (necesariamente) parte de linux.  Hay piezas separadas de software.  GNU Bash existe desde hace muchos años antes que el kernel de Linux fuese creado y corre en otros sistemas operativos también.
  • Bash no es lo mismo que SSH.  SSH es un servicio y protocolo de red para ejecutar comandos sobre un equipo (computadora) remota.  Bash puede ser uno de esos comandos.
  • Bash tampoco es tu terminal TTY.  Tu terminal es un dispositivo para enviar/recibir información  desde/hasta una computadora.  Las terminales solían ser dispositivos de hardware con un monitor y teclado. Hoy en día, para la mayoría de los usuarios, son emuladores de terminal o dispositivos de software. Bash es un programa que se ejecuta utilizando su terminal para su entrada y salida.
  • Igualmente, Bash no es la misma cosa que PuTTY, iTerm, o xterm.  Éstas son emuladores de terminal, no shells.  Tu emulador de terminal es un programa que entiende e interpreta programas basados en texto.  Bash es un uno de esos programas.
  • Bash no es la línea de comando, en el sentido estricto.  Bash tiene un modo interactivo, el cual es un ejemplo de una línea de comando, pero muchas otras herramientas tienen línea de comandos y no por eso son systemas Shells.  La herramienta calculadora bc,  es un ejemplo de otra herramienta con línea de comando.
Ahora que sabes esto, si alguien alguna vez te pregunta por una cuenta PuTTY de tu servidor, asegúrate de ubicarlos (jejejeje).


En los siguientes días continuaré con estos pequeños escritos sobre bash.

Si quieres estar enterado, puedes registrarte en la lista de correo.



Reseñas curso Django


#reseña #curso #online #django #coursesonline

Algunas reseñas de usuarios :
-Tengo comprados como 10 cursos de python, django y varias yerbas. Sin duda, este curso de Django es Excelente, todo es muy práctico, hay teoría sí, pero lo basico y necesario para entender. Lo que más me gusta es que desarrolla una aplicación completa. La mayoría de los otros autores utilizan el "django admin" pero él se da el trabajo de hacer el app de 0 y te muestra como. Hay cosas que aprendí que no sabía de django sobretodo con el tema de templates. Buen trabajo señor... muy buen trabajo.  

-El  cursos esta explicado con un lenguaje sencillo, con todas las  concreciones necesarias para la adquisición del conocimiento. Si tienes  alguna cuestión que se te escapa, el profesor te contesta en poco  tiempo, lo cual hace más fácil seguir el contenido. Totalmente  recomendado.  

-Uno de los mejores cursos de Django que vi en esta plataforma Udemy el instructor es de los mejor.

Puedes verlo por ti mismo


https://www.udemy.com/django-practico/?couponCode=DJ_20K_50P

jueves, 1 de noviembre de 2018

Promoción 3x1 en Cursos







En esta ocasión, les dejo una super oferta, compra uno de los cursos (cualquiera de los tres listado abajo) y te llevas los otros dos cursos de manera gratuita.

¿Cómo funciona?  Haces la compra siguiendo alguno de los tres enlaces siguientes, luego de realizada la compra, escríbeme a este blog o a la página de FB (click aquí), yo verifico la compra y te envío los otros dos cursos.

Django 2.1 Práctico:   https://goo.gl/2fFjXw
Programación en Capas: https://goo.gl/FHcQpP
Entity FrameWork:      https://goo.gl/L8xych


Lo importante acá es aplicar el cupón (░░░ PROMODJ3PACK_112018 ░░░) en cualquiera de los tres cursos.

Si no deseas la promoción, aún puedes optar por los cursos individuales haciendo click aquí o sobre cada una de las imágenes siguientes, con un super precio.




https://debsconsultores.blogspot.com/2018/10/desarrolla-de-aplicaciones-en-capas.html
https://debsconsultores.blogspot.com/2018/10/django-creando-una-aplicacion-completa_22.html
https://debsconsultores.blogspot.com/2018/10/iniciando-con-entity-framework.html



OFERTA VÁLIDA ÚNICAMENTE PARA LAS PRIMERAS 10 PERSONAS (SÓLO HAY 10 CUPONES, CUANDO NO PUEDAS COMPRAR INDICARÍA QUE SE HA TERMINADO LA PROMOCIÓN).

En cualquier momento puedes estar en contacto conmigo, por los medios dichos la inicio.



martes, 30 de octubre de 2018

Mostrar Explorador de Soluciones Visual Studio

#VisualStudio #VS #DotNet #Project #ExploradorSoluciones #Multi #Project #Tutorial

En algunas ocasiones requerimos crear más de un proyecto dentro de la solución, especialmente si estamos siguiendo el curso de Programación Por Capas.

El primer inconveniente que podemos tener es la configuración del Visual Studio (cualquier versión que tengamos), que creamos que no podemos crear más de un proyecto, ya que éste se muestra según la imagen siguiente:




Y como hemos visto en el curso, para poder crear un nuevo proyecto dentro de la solución, debemos, en el explorador de soluciones, dar click derecho y seleccionar cre



Pero como pudimos ver en la primer imágen, no tenemos (o no se muestra) la solución. 

Para arreglarlo, es simplemente indicarle al IDE de Visual Studio que muestre dicha opción, iremos al menú Herramientas (Tools), luego Opciones (Options) y en la opción Proyectos y Soluciones (Projects and Solutions), marcar la opción Mostrar Solución Siempre.




 Ya con esto, la ventana del Proyecto se verá (o debería de verse) algo parecido a la siguiente imágen.



Y ya con esto, podemos retomar el proyecto justo donde nos detuvimos.

Cualquier duda, favor abordarla por cualquiera de las siguientes vías





Me puedes encontrar en:

https://debsdaniel03.tumblr.com/ https://twitter.com/DEBSConsultores 

https://plus.google.com/debsconsultores  www.linkedin.com/in/danielbojorge












sábado, 27 de octubre de 2018

Embeber Consola CMDER en Visual Studio Code


#Curso #Python #Django #VSC #VisualStudioCode #Setting #Code #Coding #OnLineCourse #OnLine #Console #Cmder

En esta ocasión vamos configurar Visual Studio Code para poder desarrollar aplicaciones con Django embebiendo la consola CMDER, de esa forma trabajar en la consola sin salir del VSC.

Primero que todo, debes descargar Visual Studio Code, para eso debes entrar al sitio oficial (https://code.visualstudio.com/)
 

Luego click en descargar haciendo click en el botón Download for Windows, una vez instalado, debemos descargar la consola CMDER.

Para la consola CMDER, si aún no la has descargado, debes dirigirte a cmder.net, donde muestra dos opciones de descarga (mini y full), yo recomiendo la opción full, pero por espacio, puedes descargar la versión mini.




Una vez descargado, debes descomprimirlo, ten encuenta la carpeta donde lo has vas a descomprimir.

En esa carpeta, debes crear un archivo bat, y grabarlo ahí en esa carpeta.

En mi caso, lo descomprimí en la carpeta C:\Portables\NoMios\cmder_1.3.6, el contenido del bat, es el siguiente (debes reemplazar la ruta por tu ruta). El nombre que le di fue vsc.bat (puede ser cualquier otro nombre, pero que no tenga espacios)

@echo off
SET CurrentWorkingDirectory=%CD%
SET CMDER_ROOT=C:\Portables\NoMios\cmder_1.3.6
CALL "%CMDER_ROOT%\vendor\init.bat"
CD /D %CurrentWorkingDirectory%







Una vez guardado el archivo, abre el Visual Studio Code y abre la configuración


Ahí debes agregar dos líneas (en la sección derecha), muy atento en la ruta del archivo vsc.bat,


"terminal.integrated.shell.windows":"C:\\WINDOWS\\system32\\cmd.exe",
"terminal.integrated.shellArgs.windows": ["/K","C:\\Portables\\NoMios\\cmder_1.3.6\\vsc.bat"]


Nota importante, es la ruta debe apuntar al archivo bat, poner siempre doble barra invertida (\\).

Guardar los cambios y reiniciar el Visual Studio Code.

Al reiniciarlo, abre la consola 


Se debería de ver a como sigue la imagen:


Como verás, ya tienes la consola integrada (embebida) en Visual Studio Code, de acá ya deberías poder trabajar tus desarrollos, en mi caso es con Django, pero bien puede ser Angular, Node u otro que dependa de la consola.


Si te ha gustado esta clase, te invito a que veas el curso completo con un descuento del 94% por tiempo limitado.


Promoción del 94% Por Tiempo Limitado
 

 
>