gremmie@1: """This file contains the automatic admin site definitions for the weblinks models"""
bgneal@204: import datetime
gremmie@1: 
gremmie@1: from django.contrib import admin
gremmie@1: from weblinks.models import Category
bgneal@204: from weblinks.models import PendingLink
gremmie@1: from weblinks.models import Link
gremmie@1: from weblinks.models import FlaggedLink
gremmie@1: 
bgneal@193: 
bgneal@193: class CategoryAdmin(admin.ModelAdmin):
bgneal@242:     list_display = ('title', 'slug', 'description', 'count')
bgneal@242:     prepopulated_fields = {'slug': ('title', )}
bgneal@193:     readonly_fields = ('count', )
bgneal@193: 
bgneal@193: 
bgneal@204: class PendingLinkAdmin(admin.ModelAdmin):
bgneal@204:     list_display = ('title', 'url', 'user', 'category', 'date_added')
bgneal@204:     raw_id_fields = ('user', )
bgneal@204:     actions = ('approve_links', )
bgneal@277:     readonly_fields = ('update_date', )
bgneal@204: 
bgneal@204:     def approve_links(self, request, qs):
bgneal@204:         for pending_link in qs:
bgneal@204:             link = Link(category=pending_link.category,
bgneal@204:                     title=pending_link.title,
bgneal@204:                     url=pending_link.url,
bgneal@204:                     description=pending_link.description,
bgneal@204:                     user=pending_link.user,
bgneal@204:                     date_added=datetime.datetime.now(),
bgneal@204:                     hits=0,
bgneal@204:                     is_public=True)
bgneal@204:             link.save()
bgneal@204:             pending_link.delete()
bgneal@204: 
bgneal@398:         count = len(qs)
bgneal@398:         msg = "1 link" if count == 1 else "%d links" % count
bgneal@398:         self.message_user(request, "%s approved." % msg)
bgneal@398: 
bgneal@204:     approve_links.short_description = "Approve selected links"
bgneal@204: 
bgneal@204: 
gremmie@1: class LinkAdmin(admin.ModelAdmin):
gremmie@1:     list_display = ('title', 'url', 'category', 'date_added', 'hits', 'is_public')
gremmie@1:     list_filter = ('date_added', 'is_public', 'category')
gremmie@1:     date_hierarchy = 'date_added'
gremmie@1:     ordering = ('-date_added', )
gremmie@1:     search_fields = ('title', 'description', 'url', 'user__username')
gremmie@1:     raw_id_fields = ('user', )
bgneal@277:     readonly_fields = ('update_date', )
gremmie@1:     save_on_top = True
gremmie@1: 
bgneal@193: 
gremmie@1: class FlaggedLinkAdmin(admin.ModelAdmin):
bgneal@165:     list_display = ('__unicode__', 'url', 'get_link_url', 'user', 'date_flagged')
gremmie@1:     date_hierarchy = 'date_flagged'
gremmie@1:     raw_id_fields = ('user', )
gremmie@1: 
bgneal@193: admin.site.register(Category, CategoryAdmin)
bgneal@204: admin.site.register(PendingLink, PendingLinkAdmin)
gremmie@1: admin.site.register(Link, LinkAdmin)
gremmie@1: admin.site.register(FlaggedLink, FlaggedLinkAdmin)