qrurls/models.py
author Tero Marttila <terom@fixme.fi>
Mon, 15 Jul 2013 02:34:23 +0300
changeset 4 d56f48f6c94b
parent 3 e7d3f1a28b24
child 6 e821a59bf3a7
permissions -rw-r--r--
URL: show qrcode for URL in admin (using google charts)
from django.db import models
from django.core.urlresolvers import reverse
import django.utils.http
from django.contrib.sites.models import get_current_site

QRCODE_API = 'https://chart.googleapis.com/chart?cht=qr&chs={width}x{height}&chl={url}'

class URL(models.Model):
    shorturl = models.SlugField(unique=True)

    class Meta:
        verbose_name = u"URL"
        verbose_name_plural = u"URLs"

    def qrcode_img (self, size=512) :
        return QRCODE_API.format(
                width=size, height=size,
                url=django.utils.http.urlquote(self.qrcode_url()),
        )

    def qrcode_url (self) :
        return 'http://{domain}{url}'.format(
                domain = get_current_site(None).domain,
                url = self.get_absolute_url(),
        )

    def get_absolute_url (self) :
        return reverse('shorturl', args=[self.shorturl])

    def __unicode__ (self) :
        return self.shorturl

class URLItem(models.Model):
    shorturl = models.ForeignKey(URL)
    published = models.DateTimeField()
    url = models.URLField()
    
    class Meta:
        verbose_name = u"URL Item"
        verbose_name_plural = u"URL Items"
        ordering = ['published']

    def get_absolute_url (self) :
        return self.url
    
    def __unicode__ (self) :
        return self.url