Procesar etiquetas personalizadas de plantilla dentro de un campo en Django

django-logo-positive

 

Hace una horas mientras programaba se presentó la necesidad de que Django sea capaz de procesar etiquetas personalizadas de plantilla (custom template tag en inglés) que se encuentra dentro del campo de un modelo.

Estuve buscando mucho por diferentes lugares la solución hasta que la encontré y es la siguiente:

Estructura de los archivos

Usaré el ejemplo común de Django, que tiene la siguiente estructura de archivos:

polls/
    __init__.py
    models.py
    templatetags/
        __init__.py
        poll_extras.py
    views.py

Entonces el archivo poll_extras.py que contiene todas nuestras etiquetas personalizadas, agregaremos una nueva:

polls/templatetags/poll_extras.py
'''
En las líneas anteriores está nuestras etiquetas ya escritas
'''
@register.tag(name="evaluate")
def do_evaluate(parser, token):
  """
  uso de la etiqueta {% evaluate object.textfield %}
  """
  try:
    tag_name, variable = token.split_contents()
  except ValueError:
    raise template.TemplateSyntaxError, "%r tag requires a single argument" % token.contents.split()[0]
 
  return EvaluateNode(variable)
 
class EvaluateNode(template.Node):
  def __init__(self, variable):
    self.variable = template.Variable(variable)
 
  def render(self, context):
    try:
      content = self.variable.resolve(context)
      t = template.Template(content)
      return t.render(context)
    except template.VariableDoesNotExist, template.TemplateSyntaxError:
      return 'Error rendering', self.variable

También es necesario que al momento de cargar el campo en la plantilla se llame a poll_extras de lo contrario nos arrojará un error diciendo que la etiqueta no existe

pollS/models.py
class Poll(models.Model):
  contenido = models.TextField()
  '''
    Campos de la tabla
  '''
 
  def contenido_eval(self):
    return '{% load poll_extras %}' + self.contenido

Por último en nuestra plantilla no llamaremos al campo sino al método que hemos creado para que así analice las etiquetas presentes allí.

{% extends 'template_base.html' %}
{% load poll_extras %}
{% block content %}
 
<h1>Contenido</h1>
{% evaluate poll.contenido_eval %}
 
{% endblock %}
Etiquetas:

Activar el nuevo reproductor de YouTube

youtube-1

 

Para quienes aún no lo saben YouTube está probando un nuevo reproductor que a mi parecer está buenísimo. Trae consigo los siguientes beneficios:

  • Una visibilidad ampliada del video con la menor cantidad posible de obstrucciones.
  • Una fuente más grande para cuando veas el video pantallas pequeñas o en pantalla completa no tengas que forzar la vista para saber en qué estás haciendo clic
  • Se siente mucho más natural y amigable

Francamente, me gustaría que Netflix duplicara éste estilo de reproductor de YouTube para así tener allí también una vista parcial sin que los botones de reproducción nos corten parte del video.

Finalmente los dejo con los pasos para que hagan ésto posible, simplemente sigan éstos dos pasos (recuerda que botón “¡Probar algo nuevo!” lo encuentras en el pie de página de YouTube):

 

youtube-2

 

 

youtube-3

Etiquetas:

¿Cómo revisar las etiquetas de Facebook antes de que aparezcan en tu muro?

Ya sea para evitar alguna etiqueta no deseada aparezca en tu muro. que te etiqueten en una foto en la que no estás, o que te etiqueten en alguna publicación maliciosa existe una manera de como controlar todo ésto a través de las revisiones de etiquetas.

Para activar la revisión de etiquetas sigue los siguientes pasos:

Fb-1

Fb-2

Fb-3

¿Cómo autorizar un etiqueta para que sea publicada en tu muro?

Para autorizar una etiqueta que te han hecho sigue los siguientes pasos:

Fb-4

Fb-5

Fb-6

Etiquetas:

Almacenar varios tamaños de imagen en Django

django

 

Django es uno de los más conocidos frameworks el cual está escrito en Python, es un framework de fácil uso el cual se los recomiendo a probar si aún no lo han hecho. En ésta oportunidad quiero mostrarles como almacenar o guardar varios tamaños de imagen con subir solo una (muy similar a lo que sucede en WordPress con la función add_image_size()). En Django se hace de la siguiente manera:

Todo lo que vamos a realizar se hace en el archivo models.py y tiene la siguiente estructura:

class Tabla(models.Model):
  nombre        = models.CharField(max_length=50) # Campo de referencia, no es obligatorio
  imagen        = models.ImageField(max_length=150, upload_to='imagenes/')
  # Deshabilitamos la edición de los otros campos de imágenes pues dependen de la principal
  imagen_thumb  = models.ImageField(max_length=150, upload_to='imagenes/thumb/', editable=False)
  imagen_slider = models.ImageField(max_length=150, upload_to='imagenes/slider/', editable=False)
  imagen_post   = models.ImageField(max_length=150, upload_to='imagenes/post/', editable=False)
 
  def save(self, *args, **kwargs):
    # Requerimientos
    from PIL import Image
    import StringIO
 
    # Aquí empieza la magia
    imgFile   = Image.open(self.imagen.path) # Abrimos la imagen
 
    if imgFile.mode not in ('L', 'RGB'):
      imgFile = imgFile.convert('RGB') # Convertimos en RGB de ser necesario
 
    # Eso es muy importante, los tamaños que ven a continuación
    # tienen que coincidir con los campos de la tabla
    # podemos agregar todos los que deseemos
    # de lo contrario arrojará un error
    IMAGESIZES = {
      'imagen_thumb'  : (150, 75),
      'imagen_slider' : (710, 450),
      'imagen_post'   : (510, 300)
    }
 
    for field_name, size in IMAGESIZES.iteritems():
      field   = getattr(self, field_name)
      working = imgFile.copy()
      working = working.resize(size, Image.ANTIALIAS) # Podemos usar resize o thumbnail (linea inferior)
      # working.thumbnail(size, Image.ANTIALIAS)
      fp      = StringIO.StringIO()
      working.save(fp, 'JPEG', quality=95)
      cf      = ContentFile( fp.getvalue() )
      field.save(name=self.imagen.name, content=cf, save=False);
 
    super(Tabla, self).save(*args, **kwargs)

Espero te sirva de mucho y si tienes algún otro tutorial que desees saber o alguna duda respecto a éste tutorial, escríbelo en los comentarios.

Etiquetas:

Alienware Alpha, PC compacta para video juegos

alienware-logo-black

 

Alienware como muchos saben es la subsidiaria de Dell cuyo principal objetivo es desarrollar ordenadores para gamers con características superiores a los orderadores convecionales además con una apariencia única, característica de la marca Alienware.

 

Hace ya algunos meses Alienware inició el proyecto de desarrollar una PC que tenga tamaño similar al de un Xbox 360 con características superiores a éste o al PlayStation 4, es allí donde nace “Alienware Alpha”. El cual ya se encuentra disponible para ser adquirido en el mercado americano. Aquí en Perú, quizás algunas empresas lo vendan de manera particular pero de manera oficial Alienware no realiza operaciones en Perú puesto que el mercado no brinda aún las condiciones adecuadas para que sea así, esperemos pronto cambie eso.

 

alienware-alpha-1920

Características

$599.00

$699.00

$799.00

$899.00

Procesador Intel® Core™ i3-4130T Dual-Core processor (3M Cache, 2.9GHz) Intel® Core™ i3-4130T Dual-Core processor (3M Cache, 2.9GHz) Intel® Core™ i5-4590T Quad-Core processor (6M Cache, up to 3.0GHz) Intel® Core™ i7-4765T Quad-Core processor (8M Cache, up to 3.0 GHz)
Memoria 4 GB 8 GB 8 GB 8 GB
Video NVIDIA® GeForce® GTX GPU 2GB GDDR5 NVIDIA® GeForce® GTX GPU 2GB GDDR5 NVIDIA® GeForce® GTX GPU 2GB GDDR5 NVIDIA® GeForce® GTX GPU 2GB GDDR5
Disco Duro 500 GB 1TB 1 TB 2 TB

 

Todas las configuraciones vienen con un control de Xbox 360 (Negro) con adaptador USB, Windows 8.1 y si deseas puedes usarla como una computadora de escritorio (ya que lo es) y sería una computadora de escritorio muy poderosa. No incluye monitor, mouse o teclado.

 

El uso ideal de ésta PC es para ponerla debajo de tu televisor y disfrutar de todos los juegos que tengas en tu biblioteca de Steam y a través de Steam Big Picture y haciendo uso de tu control de Xbox 360, su tamaño compacto y su gran hardware harán que no quieras dejar de jugar y se los digo porque tengo una Alienware M14X R2 la cual he mejorado (y seguro ya haré un review) con un disco duro HyperX SSD de 250Gb y Memoria HyperX Impact de 16Gb (2 x 8Gb) C11, éste upgrade ha valido la pena y según veo las especificaciones también pueden hacerlo al Alienware Alpha.

 

Review

Techcrunch realizó un review (en inglés obviamente) del Alienware Alpha.

Etiquetas:

Counter-Strike: Global Offensive reestructura el mapa Train

Train 1

 

Train, Nuke, Dust, Dust 2, Aztec y algunos otros mapas cuyos nombres no se me vienen a la mente en éste momento siguen siendo los mapas clásicos que Counter-Strike posee ya por muchos años. Y bueno siempre es bueno mantener vigentes los gráficos, reanalizar la estructura de los mapas para mantener el equilibrio del juego es por ello que Train ha sido reestructurado para la nueva actualización de CSGO.

 

Novededades

Train ha sido reestructurado desde sus cimientos lo que representa novedosos gráficos, además se han agregados elementos que hacen al mapa más intuitivo, lo cual ayuda los jugadores a familiarizarse más fácilmente con el mapa y está disponible en la “Operacion Vanguard” en la mayoría de modos de juego.

 

La lista completa de cambios o changelog de ésta actualización puedes encontrarla en el siguiente enlace.

 

Train en Counter-Strike: Global Offensive

 

¿Dónde puedo comprar Counter-Strike: Global Offensive?

Puedes adquirirlo a través de la plataforma de video juegos de Steam. (Haz clic aquí). Nisiquiera intentes conseguirlo en pirata pues no podrás ingresar a la comunidad de CSGO donde se registran tus estadísticas y donde se concentran todos los modos de juegos. Más información con respecto al mapa puedes encontrar aquí.

 

Su precio en Steam es de $14.99 que representan aproximadamente S/. 44.50. Pero recuerda que también puedes buscarlo a un precio especial en G2A.com, plataforma de intercambio de números de series de juegos. Allí lo puedes encontrar a 7.49 Euros que serían alrededor  de S/. 28.00. Donde sea que lo compres obtendrás los mismos beneficios pues ambos podrás activarlos en Steam y recibirás todas las actualizaciones.

Etiquetas:

Microsoft Flight Simulator X será relanzado en Steam

FSX_Logo_title

Han pasado ya más 8 años desde que Microsoft lanzó la última versión de su simulador de vuelo “Flight Simulator X”, como juego no es tan popular, sin embargo como simulador la historia es totalmente distinta, pues como mencioné anteriormente han pasado ya más de 8 y aún sigue usándose, claro que ahora ya existen nuevos simuladores como Prepar3D ó X-Plane pero estoy seguro que ninguno ellos tiene más adeptos que el popular Flight Simulator X y es que gracias a su poderoso Software Devolopment Kit (SDK) ha sido capáz de manterse vigente en el mercado pese a que Microsoft decidó dejar de lado éste gran proyecto, el cuál años después, en Julio del 2014 gracias a un acuerdo entre Microsoft y Dovetail (creador de Train Simulator) generó un nuevo y mejorado rumbo para éste gran simulador.

 

Actualidad

El día de hoy una gran noticia en PC Pilot, Steam ha autorizado a Dovetail para lanzar “Microsoft Flight Simulator X: Steam  Edition”. El cual brindará soporte para Windows 8.1, traerá consigo actualizadas funciones de multi-jugador, cerca de 24 000 aeropuertos y muchas actualizaciones más.

 

Contenido de Dercarga (DLC)

Los simuladores se convierten en una potencial fuente de ingresos para los desarrolladores pues como es el caso de FSX su poderoso SDK ha permitido crear y seguir creando contenido descargable a los desarrolladores por ya más de 5 años, en un rango de precios que va desde los $10 hasta más de $100 por DLC. Y es que los entusiastas por la aviación no son muchos. Para quienes entienden algo de inglés aquí un vídeo con más información al respecto.

 

Froogle nos cuenta su punto de vista con respecto a la piratería en FSX.

 

¿Lo siguiente?

Les aseguro que tan pronto tenga en mis cuenta de Steam el Flight Simulator X, les aseguro les contaré más acerca de él.

Etiquetas:

JustAquit Linode Admin Center

Linode_logo

This plugins allows you to create accounts into you Linode Server saving you the trouble to make this steps:

  • Create Linode DNS Record.
  • Create folder on the server.
  • Create a database with a unique userfor each database.
  • Create Virtual Host on Apache.
  • Activate the VirtualHost.
  • Reload and Restart Apache.
  • As you can see this plugin is the perfect tool to manage your Linode Server, saving you a lot of time.

Requirements

Before go to settings run this commands on the bash of your Linode Server:

  • sudo pear install Net_URL2-0.3.1
  • sudo pear install HTTP_Request2-0.5.2
  • sudo pear channel-discover pear.keremdurmus.com
  • sudo pear install krmdrms/Services_Linode

Your WordPress installation should be running as root and your wp-config.php “user” and “password” should be ones of your MySQL root otherwise won’t see the magic of this script.

Firsts tasks:

  • Go to settings and setup your Linode API Key.
  • Your Linode IP number.
  • Folder locations.
  • User owner.
  • Database prefix.

Comming soon:

  • Use wp_nonce_fieldin forms.
  • Add test mode.
  • Use Name.comAPI for domain management.
  • More Linode functions.
  • Add/manage clusters.

Forked in GitHub | Report an issue

Creator: Irving Kcam | Email: me@ikcam.com | License: GPL2

Etiquetas:

Infografía del lanzamiento mundial de IPv6

IPv6

El 6 de Junio de éste año se lanzó de manera oficial y mundial IPv6, dos semanas después del lanzamiento a continuación una infografía que nos cuenta acerca de todos los datos pre y post lanzamiento del nuevo protocolo de Internet que logrará satisfacer las necesidades de direcciones IP que se empezaban a generar por los límites de IPv4.

Leer Más »

Etiquetas: