qrurls/views.py
author Tero Marttila <terom@fixme.fi>
Thu, 22 Aug 2013 02:00:03 +0300
changeset 54 0a2345d1450a
parent 51 6f35a169ef01
child 70 e8a8d490df2f
permissions -rw-r--r--
docdoc
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
54
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
     7
"""
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
     8
    Public frontend UI.
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
     9
"""
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
    10
33
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    11
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
    12
    if shorturl :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    13
        shorturl = shorturl.strip(' /')
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    14
        try :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    15
            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
    16
        except URL.DoesNotExist :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    17
            raise Http404()
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    18
    elif shorturl_id :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    19
        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
    20
        try :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    21
            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
    22
        except URL.DoesNotExist :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    23
            raise Http404()
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    24
    else :
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    25
        raise Http404()
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    26
12
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    27
def index (request) :
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    28
    urls = URL.objects.all()
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    29
    return render(request, 'qrurls/index.html', dict(
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    30
        urls    = urls,
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    31
    ))
7605af83cb14 add qrurls index
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    32
19
0742539e94c3 shorter urls
Tero Marttila <terom@paivola.fi>
parents: 16
diff changeset
    33
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
    34
    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
    35
16
523b3e9eddfa fixbug modelget item upcoming
Tero Marttila <terom@fixme.fi>
parents: 12
diff changeset
    36
    # most recent
34
4ebfe940acd1 fixfix shorturl view typo
Tero Marttila <terom@fixme.fi>
parents: 33
diff changeset
    37
    url_item = url_feed.active_item()
16
523b3e9eddfa fixbug modelget item upcoming
Tero Marttila <terom@fixme.fi>
parents: 12
diff changeset
    38
    
523b3e9eddfa fixbug modelget item upcoming
Tero Marttila <terom@fixme.fi>
parents: 12
diff changeset
    39
    if not url_item :
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    40
        raise Http404()
33
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    41
40
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    42
    # 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
    43
    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
    44
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    45
    return HttpResponseRedirect(url)
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    46
    
43
3b1f1a928283 rename qrurls image view to item view
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
    47
def item (request, shorturl, item_id) :
33
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    48
    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
    49
e4f6ea904257 qrurls item view: only show published items
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    50
    now = timezone.now()
37
e303425cec78 shorturl image view: 404 on invalid item_id
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    51
    try :
42
e4f6ea904257 qrurls item view: only show published items
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
    52
        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
    53
    except URLItem.DoesNotExist :
e303425cec78 shorturl image view: 404 on invalid item_id
Tero Marttila <terom@fixme.fi>
parents: 34
diff changeset
    54
        raise Http404()
40
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    55
    
43
3b1f1a928283 rename qrurls image view to item view
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
    56
    if url_item.url :
3b1f1a928283 rename qrurls image view to item view
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
    57
        return HttpResponseRedirect(url_item.url)
3b1f1a928283 rename qrurls image view to item view
Tero Marttila <terom@fixme.fi>
parents: 42
diff changeset
    58
    elif url_item.image :
51
6f35a169ef01 Make URLImage title optional, use URLFeed title
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    59
        title = url_item.image.title or url_item.shorturl.title
6f35a169ef01 Make URLImage title optional, use URLFeed title
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    60
40
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    61
        return render(request, 'qrurls/image.html', dict(
51
6f35a169ef01 Make URLImage title optional, use URLFeed title
Tero Marttila <terom@fixme.fi>
parents: 43
diff changeset
    62
            title   = title,
40
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    63
            image   = url_item.image,
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    64
        ))
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    65
    else :
33
b714115da724 use seprate frontend view for url_images in url_items
Tero Marttila <terom@fixme.fi>
parents: 19
diff changeset
    66
        raise Http404()