qrurls/admin.py
author Tero Marttila <terom@fixme.fi>
Sun, 18 Aug 2013 23:12:54 +0300
changeset 47 35a8e63648c8
parent 45 33b4a60ce759
child 49 7c0dcf6603f5
permissions -rw-r--r--
clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
27
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
     1
import datetime
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
     2
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
     3
from django.conf import settings
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
from django.contrib import admin
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
     5
from django.utils import timezone, formats
27
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
     6
import django.utils.html
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
     7
import django.forms.models
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
     8
30
d0f56303d8de URLImage
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
     9
from qrurls.models import URL, URLItem, URLImage
27
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    10
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    11
class URLItemFormset (django.forms.models.BaseInlineFormSet) :
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    12
    """
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    13
        Uses the existing URLItems for the URLFeed to determine the initial publishing
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    14
        times for new items.
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    15
    """
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    16
27
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    17
    def __init__ (self, *args, **kwargs) :
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    18
        urlfeed = kwargs.get('instance')
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    19
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    20
        publishing_date = None
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    21
        publishing_time = datetime.time()
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    22
        
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    23
        # hack to get at the URLFeed to determine our initial values..
32
82eae853e240 tie in URLImage to URLItem
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    24
        if urlfeed and isinstance(urlfeed, URL) :
27
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    25
            publishing_date = urlfeed.last_item().published.date()
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    26
            publishing_time = urlfeed.publishing_time
27
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    27
        
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    28
        def publishing_schedule (count) :
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    29
            if not publishing_date :
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    30
                # starting today
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    31
                start_date = datetime.date.today()
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    32
                offset = 0
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    33
            else :
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    34
                # starting from the following day
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    35
                start_date = publishing_date
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    36
                offset = 1
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    37
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    38
            for days in xrange(offset, count + offset) :
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    39
                yield datetime.datetime.combine(
32
82eae853e240 tie in URLImage to URLItem
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
    40
                        start_date + datetime.timedelta(days=days),
27
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    41
                        publishing_time
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    42
                )
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    43
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    44
        kwargs.update(initial=[
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    45
                dict(published=publish) for publish in publishing_schedule(count=5)
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    46
        ])
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    47
        super(URLItemFormset, self).__init__(*args, **kwargs)
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    49
class URLItemInline (admin.TabularInline) :
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    50
    """
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    51
        Inline set of URLItems for an URLFeed.
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    52
    """
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    53
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    54
    model = URLItem
27
ffcffe3024f1 sane defaults for published in urlitems inline form
Tero Marttila <terom@fixme.fi>
parents: 22
diff changeset
    55
    formset = URLItemFormset
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    56
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
class URLAdmin (admin.ModelAdmin) :
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    58
    def timezone (self, obj) :
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    59
        now = timezone.localtime(obj.now())
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    60
        tz = now.tzinfo
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    61
        td = now.tzinfo.utcoffset(now)
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    62
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    63
        if td :
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    64
            minutes, seconds = divmod(td.total_seconds(), 60)
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    65
            hours, minutes = divmod(minutes, 60)
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    66
            offset = "(UTC%+03d:%02d)" % (hours, minutes)
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    67
        else :
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    68
            offset = ""
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    69
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    70
        return u"%s %s" % (tz, offset)
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    71
22
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    72
    def qrcode_url (self, obj) :
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    73
        warn = None
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    74
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    75
        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
    76
            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
    77
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    78
        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
    79
                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
    80
                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
    81
        )
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    82
    qrcode_url.allow_tags = True
28a72692b749 keep shorturl case sensitive, but warn if not uppercase
Tero Marttila <terom@paivola.fi>
parents: 11
diff changeset
    83
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    84
    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
    85
        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
    86
                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
    87
        )
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    88
    qrcode_img.allow_tags = True
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    89
    
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    90
    # XXX: a whole bunch of ugly datetime-formatting for display...
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    91
    def active (self, obj) :
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    92
        item = obj.active_item()
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    93
        if item :
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    94
            return "%s %s" % (formats.localize(timezone.localtime(item.published)), item)
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    95
        else :
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    96
            return ""
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    97
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    98
    def now (self, obj) :
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    99
        return formats.localize(timezone.localtime(obj.now()))
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   100
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   101
    def upcoming (self, obj) :
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   102
        item = obj.upcoming_item()
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   103
        if item :
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   104
            return "%s %s" % (formats.localize(timezone.localtime(item.published)), item)
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   105
        else :
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   106
            return ""
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
   107
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
   108
    readonly_fields = (
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   109
        'timezone',
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
   110
        'qrcode_url',
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
   111
        'qrcode_img',
7
8202196630d3 better reporting of active/upcoming items
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
   112
        'active_item',
8202196630d3 better reporting of active/upcoming items
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
   113
        'upcoming_item',
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   114
        'active',
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   115
        'now',
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   116
        'upcoming',
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
   117
    )
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
    list_display = (
11
b975f7973402 show absolute url for url admin
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
   119
        'get_absolute_url',
8
5c8a19fa6a29 display active/upcoming in list
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
   120
        'active_item',
5c8a19fa6a29 display active/upcoming in list
Tero Marttila <terom@fixme.fi>
parents: 7
diff changeset
   121
        'upcoming_item',
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
    )
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
   123
    fieldsets = (
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
   124
        (None, {
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   125
            'fields': (
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   126
                'shorturl', 
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   127
                'publishing_time', 
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   128
                'timezone',
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   129
            ),
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
   130
        }),
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
   131
        ("QRCode", {
7
8202196630d3 better reporting of active/upcoming items
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
   132
            '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
   133
        }),
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   134
        ("Item publishing overview", {
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   135
            'fields': (
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   136
                'active',
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   137
                'now',
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   138
                'upcoming',
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   139
            ),
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   140
        }),
4
d56f48f6c94b URL: show qrcode for URL in admin (using google charts)
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
   141
    )
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
   142
    inlines = (URLItemInline, )
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   143
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   144
class URLItemAdmin (admin.ModelAdmin) :
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   145
    list_display = (
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   146
        'shorturl', 'published_state', 'get_absolute_url', 'image', 'published',
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
   147
    )
47
35a8e63648c8 clarify timezones used for URLItem.published, but no actual explicit per-URLFeed timezone..
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
   148
    readonly_fields = ('published_state', 'published')
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
   149
    fieldsets = (
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
   150
        ("Publishing", {
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
   151
            'fields': ('shorturl', 'published', ),
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
   152
        }),
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
   153
        ("Target", {
32
82eae853e240 tie in URLImage to URLItem
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   154
            'fields': ('url', 'image'),
3
e7d3f1a28b24 touchup admin ui
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
   155
        }),
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   156
    )
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   157
30
d0f56303d8de URLImage
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
   158
class URLImageAdmin (admin.ModelAdmin) :
38
ed2fd40bb3f4 improved URLImage admin
Tero Marttila <terom@fixme.fi>
parents: 32
diff changeset
   159
    list_display = (
45
33b4a60ce759 better titles for URLImages
Tero Marttila <terom@fixme.fi>
parents: 40
diff changeset
   160
        'title',
39
e0f2c1597f87 fixup urlimage admin list_display order
Tero Marttila <terom@fixme.fi>
parents: 38
diff changeset
   161
        'uploaded',
38
ed2fd40bb3f4 improved URLImage admin
Tero Marttila <terom@fixme.fi>
parents: 32
diff changeset
   162
    )
30
d0f56303d8de URLImage
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
   163
    # hide the "uploaded" field
38
ed2fd40bb3f4 improved URLImage admin
Tero Marttila <terom@fixme.fi>
parents: 32
diff changeset
   164
    fields = (
ed2fd40bb3f4 improved URLImage admin
Tero Marttila <terom@fixme.fi>
parents: 32
diff changeset
   165
        'image',
40
5eefe5a294dc qrurl image title
Tero Marttila <terom@fixme.fi>
parents: 39
diff changeset
   166
        'title',
38
ed2fd40bb3f4 improved URLImage admin
Tero Marttila <terom@fixme.fi>
parents: 32
diff changeset
   167
    )
30
d0f56303d8de URLImage
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
   168
    readonly_fields = (
d0f56303d8de URLImage
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
   169
        'uploaded',
d0f56303d8de URLImage
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
   170
    )
32
82eae853e240 tie in URLImage to URLItem
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   171
    
82eae853e240 tie in URLImage to URLItem
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   172
    inlines = (URLItemInline, )
30
d0f56303d8de URLImage
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
   173
2
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   174
admin.site.register(URL, URLAdmin)
e838dda048a6 qrurls: basic functionality
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   175
admin.site.register(URLItem, URLItemAdmin)
32
82eae853e240 tie in URLImage to URLItem
Tero Marttila <terom@fixme.fi>
parents: 30
diff changeset
   176
admin.site.register(URLImage, URLImageAdmin)