changeset 675:6e6492468bb8

Add admin action to acknowledge flagged links. Fix bug where weblinks js wasn't being included on detail page.
author Brian Neal <bgneal@gmail.com>
date Sat, 03 Aug 2013 22:12:03 -0500
parents 92101013d5ac
children afb17af7948f
files sg101/templates/weblinks/link_detail.html weblinks/admin.py weblinks/models.py weblinks/views.py
diffstat 4 files changed, 44 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/sg101/templates/weblinks/link_detail.html	Mon May 27 15:04:52 2013 -0500
+++ b/sg101/templates/weblinks/link_detail.html	Sat Aug 03 22:12:03 2013 -0500
@@ -1,5 +1,8 @@
 {% extends 'weblinks/base.html' %}
 {% block title %}Web Links: {{ link.title }}{% endblock %}
+{% block weblinks_js %}
+<script type="text/javascript" src="{{ STATIC_URL }}js/weblinks.js"></script>
+{% endblock %}
 {% block weblinks_content %}
 <h3>Link Details: {{ link.title }}</h3>
 <dl>
--- a/weblinks/admin.py	Mon May 27 15:04:52 2013 -0500
+++ b/weblinks/admin.py	Sat Aug 03 22:12:03 2013 -0500
@@ -9,16 +9,16 @@
 
 
 class CategoryAdmin(admin.ModelAdmin):
-    list_display = ('title', 'slug', 'description', 'count')
-    prepopulated_fields = {'slug': ('title', )}
-    readonly_fields = ('count', )
+    list_display = ['title', 'slug', 'description', 'count']
+    prepopulated_fields = {'slug': ['title', ]}
+    readonly_fields = ['count']
 
 
 class PendingLinkAdmin(admin.ModelAdmin):
-    list_display = ('title', 'url', 'user', 'category', 'date_added')
-    raw_id_fields = ('user', )
-    actions = ('approve_links', )
-    readonly_fields = ('update_date', )
+    list_display = ['title', 'url', 'user', 'category', 'date_added']
+    raw_id_fields = ['user']
+    actions = ['approve_links']
+    readonly_fields = ['update_date']
 
     def approve_links(self, request, qs):
         for pending_link in qs:
@@ -41,20 +41,35 @@
 
 
 class LinkAdmin(admin.ModelAdmin):
-    list_display = ('title', 'url', 'category', 'date_added', 'hits', 'is_public')
-    list_filter = ('date_added', 'is_public', 'category')
+    list_display = ['title', 'url', 'category', 'date_added', 'hits', 'is_public']
+    list_filter = ['date_added', 'is_public', 'category']
     date_hierarchy = 'date_added'
-    ordering = ('-date_added', )
-    search_fields = ('title', 'description', 'url', 'user__username')
-    raw_id_fields = ('user', )
-    readonly_fields = ('update_date', )
+    ordering = ['-date_added']
+    search_fields = ['title', 'description', 'url', 'user__username']
+    raw_id_fields = ['user']
+    readonly_fields = ['update_date']
     save_on_top = True
 
 
 class FlaggedLinkAdmin(admin.ModelAdmin):
-    list_display = ('__unicode__', 'url', 'get_link_url', 'user', 'date_flagged')
+    list_display = ['__unicode__', 'url', 'get_link_url', 'user', 'date_flagged']
     date_hierarchy = 'date_flagged'
-    raw_id_fields = ('user', )
+    raw_id_fields = ['user']
+
+    actions = ['hide_links']
+
+    def hide_links(self, request, qs):
+        for flagged_link in qs:
+            flagged_link.link.is_public = False
+            flagged_link.link.save()
+
+        count = len(qs)
+        qs.delete()
+        msg = "1 link" if count == 1 else "%d links" % count
+        self.message_user(request, "%s hidden." % msg)
+
+    hide_links.short_description = "Accept flags & hide links"
+
 
 admin.site.register(Category, CategoryAdmin)
 admin.site.register(PendingLink, PendingLinkAdmin)
--- a/weblinks/models.py	Mon May 27 15:04:52 2013 -0500
+++ b/weblinks/models.py	Sat Aug 03 22:12:03 2013 -0500
@@ -111,7 +111,7 @@
     link = models.ForeignKey(Link)
     user = models.ForeignKey(User)
     date_flagged = models.DateField(auto_now_add = True)
-    approved = models.BooleanField(default = False, 
+    approved = models.BooleanField(default = False,
         help_text = 'Check this and save to remove the referenced link from the database')
 
     objects = FlaggedLinkManager()
--- a/weblinks/views.py	Mon May 27 15:04:52 2013 -0500
+++ b/weblinks/views.py	Sat Aug 03 22:12:03 2013 -0500
@@ -1,8 +1,7 @@
 """
 Views for the weblinks application.
+
 """
-
-import datetime
 import random
 from django.shortcuts import render_to_response
 from django.template import RequestContext
@@ -13,7 +12,6 @@
 from django.contrib.auth.decorators import login_required
 from django.shortcuts import get_object_or_404
 from django.core.urlresolvers import reverse
-from django.db.models import Q
 from django.http import Http404
 from django.views.decorators.http import require_POST
 
@@ -38,7 +36,7 @@
    categories = Category.objects.all()
    total_links = Link.public_objects.all().count()
    return render_to_response('weblinks/index.html', {
-      'categories': categories, 
+      'categories': categories,
       'total_links': total_links,
       },
       context_instance = RequestContext(request))
@@ -55,7 +53,7 @@
       raise Http404
 
    return render_to_response('weblinks/link_summary.html', {
-      'page': the_page, 
+      'page': the_page,
       'title': 'Newest Links',
       },
       context_instance = RequestContext(request))
@@ -71,7 +69,7 @@
    except InvalidPage:
       raise Http404
    return render_to_response('weblinks/link_summary.html', {
-      'page': the_page, 
+      'page': the_page,
       'title': 'Popular Links',
       },
       context_instance = RequestContext(request))
@@ -112,7 +110,7 @@
 # Maps URL component to database field name for the links table:
 
 LINK_FIELD_MAP = {
-   'title': 'title', 
+   'title': 'title',
    'date': '-date_added',
    'hits': '-hits'
 }
@@ -140,8 +138,8 @@
    return render_to_response('weblinks/view_links.html', {
       's' : sort,
       'category' : cat,
-      'page' : the_page, 
-      }, 
+      'page' : the_page,
+      },
       context_instance = RequestContext(request))
 
 #######################################################################
@@ -185,8 +183,8 @@
         return HttpResponseBadRequest("That link doesn't exist.")
 
     FlaggedLink.objects.create(link, request.user)
-    return HttpResponse("The link was reported. A moderator will review the " \
-            "link shortly. Thanks for helping to improve the content on " \
+    return HttpResponse("The link was reported. A moderator will review the "
+            "link shortly. Thanks for helping to improve the content on "
             "this site.")
 
 #######################################################################
@@ -194,6 +192,6 @@
 def link_detail(request, id):
     link = get_object_or_404(Link, pk=id)
     return render_to_response('weblinks/link_detail.html', {
-        'link': link, 
+        'link': link,
         },
         context_instance = RequestContext(request))