qrurls/views.py
author Tero Marttila <terom@fixme.fi>
Thu, 15 Aug 2013 01:38:08 +0300
changeset 42 e4f6ea904257
parent 40 5eefe5a294dc
child 43 3b1f1a928283
permissions -rw-r--r--
qrurls item view: only show published items
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
     1
from django.http import HttpResponse, HttpResponseRedirect, Http404
12
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
     2
from django.shortcuts import render
42
e4f6ea904257 qrurls item view: only show published items
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
     3
from django.utils import timezone
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
     4
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
     5
from qrurls.models import URL, URLItem
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
     6
33
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
     7
def _get_url_feed (shorturl=None, shorturl_id=None) :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
     8
    if shorturl :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
     9
        shorturl = shorturl.strip(' /')
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    10
        try :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    11
            return URL.objects.get(shorturl=shorturl)
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    12
        except URL.DoesNotExist :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    13
            raise Http404()
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    14
    elif shorturl_id :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    15
        shorturl_id = int(shorturl_id.strip(' /'))
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    16
        try :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    17
            return URL.objects.get(id=shorturl_id)
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    18
        except URL.DoesNotExist :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    19
            raise Http404()
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    20
    else :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    21
        raise Http404()
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    22
12
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    23
def index (request) :
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    24
    urls = URL.objects.all()
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    25
    return render(request, 'qrurls/index.html', dict(
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    26
        urls    = urls,
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    27
    ))
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    28
19
0742539e94c3 shorter urls
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
    29
def shorturl (request, shorturl=None, shorturl_id=None) :
33
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    30
    url_feed = _get_url_feed(shorturl=shorturl, shorturl_id=shorturl_id)
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    31
16
523b3e9eddfa fixbug modelget item upcoming
Tero Marttila <terom@fixme.fi>
parents: 12
diff changeset
    32
    # most recent
34
4ebfe940acd1 fixfix shorturl view typo
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
    33
    url_item = url_feed.active_item()
16
523b3e9eddfa fixbug modelget item upcoming
Tero Marttila <terom@fixme.fi>
parents: 12
diff changeset
    34
    
523b3e9eddfa fixbug modelget item upcoming
Tero Marttila <terom@fixme.fi>
parents: 12
diff changeset
    35
    if not url_item :
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    36
        raise Http404()
33
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    37
40
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    38
    # redirect, either directly, or to image()
33
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    39
    url = url_item.get_absolute_url()
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    40
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    41
    return HttpResponseRedirect(url)
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    42
    
33
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    43
def image (request, shorturl, item_id) :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    44
    url_feed = _get_url_feed(shorturl=shorturl)
42
e4f6ea904257 qrurls item view: only show published items
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    45
e4f6ea904257 qrurls item view: only show published items
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    46
    now = timezone.now()
37
e303425cec78 shorturl image view: 404 on invalid item_id
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    47
    try :
42
e4f6ea904257 qrurls item view: only show published items
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    48
        url_item = URLItem.objects.get(shorturl=url_feed, id=int(item_id), published__lt=now)
37
e303425cec78 shorturl image view: 404 on invalid item_id
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    49
    except URLItem.DoesNotExist :
e303425cec78 shorturl image view: 404 on invalid item_id
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    50
        raise Http404()
40
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    51
    
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    52
    if url_item.image :
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    53
        return render(request, 'qrurls/image.html', dict(
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    54
            title   = url_item.image.title,
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    55
            image   = url_item.image,
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    56
        ))
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    57
    elif url_item.url :
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    58
        return HttpResponseRedirect(url_item.url)
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    59
    else :
33
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    60
        raise Http404()