Add page with list of all pending moderation requests, and link it
authorMagnus Hagander <magnus@hagander.net>
Sun, 21 Mar 2010 17:25:00 +0000 (18:25 +0100)
committerMagnus Hagander <magnus@hagander.net>
Sun, 21 Mar 2010 17:25:00 +0000 (18:25 +0100)
(somewhat hackishly) onto the header of the administration pages.

pgweb/core/views.py
pgweb/urls.py
templates/admin/base_site.html [new file with mode: 0644]
templates/core/admin_pending.html [new file with mode: 0644]

index 2aba7630f4bc5189ac4ac93e9915004261f23dd1..78df1ca74b81d1bf5a0f81e79a39912a708472f0 100644 (file)
@@ -24,6 +24,11 @@ from survey.models import Survey
 from models import Organisation
 from forms import OrganisationForm
 
+# models needed to generate unapproved list
+from docs.models import DocComment
+from downloads.models import Product
+from profserv.models import ProfessionalService
+
 # Front page view
 def home(request):
        news = NewsArticle.objects.filter(approved=True)[:5]
@@ -88,3 +93,28 @@ def organisationform(request, itemid):
                        'managers': (request.user, ),
                        })
 
+
+# Pending moderation requests (this is part of the /admin/ interface :O)
+def _generate_unapproved(objects):
+       if not len(objects): return None
+       return { 'name': objects[0]._meta.verbose_name_plural, 'entries':
+                        [{'url': '/admin/%s/%s/%s/' % (x._meta.app_label, x._meta.module_name, x.pk), 'title': unicode(x)} for x in objects]
+                        }
+
+
+@login_required
+def admin_pending(request):
+       n = NewsArticle.objects.filter(approved=False)
+       app_list = [
+               _generate_unapproved(NewsArticle.objects.filter(approved=False)),
+               _generate_unapproved(Event.objects.filter(approved=False)),
+               _generate_unapproved(Organisation.objects.filter(approved=False)),
+               _generate_unapproved(DocComment.objects.filter(approved=False)),
+               _generate_unapproved(Product.objects.filter(approved=False)),
+               _generate_unapproved(ProfessionalService.objects.filter(approved=False)),
+               _generate_unapproved(Quote.objects.filter(approved=False)),
+               ]
+
+       return render_to_response('core/admin_pending.html', {
+                       'app_list': [x for x in app_list if x],
+                       })
index c2aa841574d42da0cea8e210afb4064a53e09a26..18b47537da9b38757deebeaf009857710736ed68 100644 (file)
@@ -75,6 +75,8 @@ urlpatterns = patterns('',
     (r'^about/event\.(\d+)$', 'pgweb.legacyurl.views.event'),
     (r'^community/signup', 'pgweb.legacyurl.views.signup'),
 
+       # Override some URLs in admin, to provide our own pages
+       (r'^admin/pending/$', 'pgweb.core.views.admin_pending'),
     # Uncomment the next line to enable the admin:
     (r'^admin/(.*)', admin.site.root),
 
diff --git a/templates/admin/base_site.html b/templates/admin/base_site.html
new file mode 100644 (file)
index 0000000..19d55d5
--- /dev/null
@@ -0,0 +1,7 @@
+{%extends "admin/base.html"%}
+{%block branding%}Welcome to the PostgreSQL website administration site{%endblock%}
+{%block pretitle%}
+<p>
+View <a href="/admin/pending/">pending</a> moderation requests.
+</p>
+{%endblock%}
diff --git a/templates/core/admin_pending.html b/templates/core/admin_pending.html
new file mode 100644 (file)
index 0000000..f51fbc8
--- /dev/null
@@ -0,0 +1,21 @@
+{%extends "admin/base.html"%}
+{%block breadcrumbs%}
+<div class="breadcrumbs"><a href="/admin/">Home</a> &rsaquo; Pending
+{%endblock%}
+
+{%block content%}
+<div id="content-main">
+{%for app in app_list %}
+  <div class="module">
+    <table summary="Pending {{app.name}}" width="600">
+      <caption><a class="section">Pending {{app.name}}</a></caption>
+      {%for entry in app.entries%}
+      <tr class="row{%cycle '1' '2'%}">
+       <td><a href="{{entry.url}}">{{entry.title}}</a></td>
+      </tr>
+      {%endfor%}
+    </table>
+  </div>
+{%endfor%}
+</div>
+{%endblock%}