qrurls/admin.py
author Tero Marttila <terom@paivola.fi>
Thu, 25 Jul 2013 00:23:59 +0200
changeset 22 28a72692b749
parent 11 b975f7973402
child 27 ffcffe3024f1
permissions -rw-r--r--
keep shorturl case sensitive, but warn if not uppercase
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
from django.contrib import admin
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
from qrurls.models import URL, URLItem
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
     3
import django.utils.html
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
     5
class URLItemInline (admin.TabularInline) :
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
     6
    model = URLItem
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
     7
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
class URLAdmin (admin.ModelAdmin) :
22
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
     9
    def qrcode_url (self, obj) :
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    10
        warn = None
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    11
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    12
        if obj.shorturl.upper() != obj.shorturl :
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    13
            warn = "Shorturl should be UPPERCASE for most compact QR code"
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    14
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    15
        return '<a href="{url}">{url}</a>{warn}'.format(
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    16
                url     = django.utils.html.escape(obj.qrcode_url()),
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    17
                warn    = '<p class="errornote">{warn}</p>'.format(warn=warn) if warn else '',
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    18
        )
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    19
    qrcode_url.allow_tags = True
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    20
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    21
    def qrcode_img (self, obj) :
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    22
        return '<img src="{img}" />'.format(
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    23
                img=django.utils.html.escape(obj.qrcode_img()),
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    24
        )
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    25
    qrcode_img.allow_tags = True
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    26
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    27
    readonly_fields = (
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    28
        'qrcode_url',
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    29
        'qrcode_img',
7
8202196630d3 better reporting of active/upcoming items
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    30
        'active_item',
8202196630d3 better reporting of active/upcoming items
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    31
        'upcoming_item',
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    32
    )
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
    list_display = (
11
b975f7973402 show absolute url for url admin
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    34
        'get_absolute_url',
8
5c8a19fa6a29 display active/upcoming in list
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    35
        'active_item',
5c8a19fa6a29 display active/upcoming in list
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
    36
        'upcoming_item',
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
    )
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    38
    fieldsets = (
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    39
        (None, {
7
8202196630d3 better reporting of active/upcoming items
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    40
            'fields': ('shorturl', 'active_item', 'upcoming_item')
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    41
        }),
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    42
        ("QRCode", {
7
8202196630d3 better reporting of active/upcoming items
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    43
            'fields': ('qrcode_url', 'qrcode_img'),
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    44
        }),
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    45
    )
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    46
    inlines = (URLItemInline, )
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
class URLItemAdmin (admin.ModelAdmin) :
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
    list_display = (
6
e821a59bf3a7 show published state for url items
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
    50
        'shorturl', 'get_absolute_url', 'published_state',
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    51
    )
6
e821a59bf3a7 show published state for url items
Tero Marttila <terom@fixme.fi>
parents: 4
diff changeset
    52
    readonly_fields = ('published_state',)
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    53
    fieldsets = (
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    54
        ("Publishing", {
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    55
            'fields': ('shorturl', 'published', ),
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    56
        }),
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    57
        ("Target", {
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    58
            'fields': ('url', ),
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    59
        }),
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
    )
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
admin.site.register(URL, URLAdmin)
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
admin.site.register(URLItem, URLItemAdmin)