From 462cbc3963546b0353a086cfa516f54e8b2410a5 Mon Sep 17 00:00:00 2001
From: "Bradley M. Kuhn"
Date: Sat, 3 Jan 2015 09:36:22 -0500
Subject: [PATCH] Supporters list built dynamically.
Hitherto the supporters list has been committed directly to the static
sponsors/index.html file. This was never ideal and a quick hack to
build Conservancy's supporters list at the beginning of the supporters
program.
With this change, a Django app now exists that dynamically generates the
supporters list.
The database rows must be built from Conservancy's internal Ledger file,
which will be done in a separate script.
---
www/conservancy/apps/supporters/__init__.py | 0
www/conservancy/apps/supporters/admin.py | 7 +++
www/conservancy/apps/supporters/models.py | 16 ++++++
www/conservancy/apps/supporters/views.py | 4 ++
www/conservancy/sponsors.py | 16 ++++++
www/conservancy/templates/sponsors.html | 58 ++-------------------
www/conservancy/urls.py | 3 ++
7 files changed, 49 insertions(+), 55 deletions(-)
create mode 100644 www/conservancy/apps/supporters/__init__.py
create mode 100644 www/conservancy/apps/supporters/admin.py
create mode 100644 www/conservancy/apps/supporters/models.py
create mode 100644 www/conservancy/apps/supporters/views.py
create mode 100644 www/conservancy/sponsors.py
diff --git a/www/conservancy/apps/supporters/__init__.py b/www/conservancy/apps/supporters/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/www/conservancy/apps/supporters/admin.py b/www/conservancy/apps/supporters/admin.py
new file mode 100644
index 00000000..9654d68f
--- /dev/null
+++ b/www/conservancy/apps/supporters/admin.py
@@ -0,0 +1,7 @@
+from django.contrib import admin
+from models import Supporter
+
+class SupporterAdmin(admin.ModelAdmin):
+ list_display = ('display_name', 'display_until_date')
+
+admin.site.register(Supporter, SupporterAdmin)
diff --git a/www/conservancy/apps/supporters/models.py b/www/conservancy/apps/supporters/models.py
new file mode 100644
index 00000000..e1811cf4
--- /dev/null
+++ b/www/conservancy/apps/supporters/models.py
@@ -0,0 +1,16 @@
+from django.db import models
+
+class Supporter(models.Model):
+ """Conservancy Supporter listing"""
+
+ display_name = models.CharField(max_length=200, blank=False)
+ display_until_date = models.DateTimeField("date until which this supporter name is displayed")
+ ledger_entity_id = models.CharField(max_length=200, blank=False)
+
+ def test(self):
+ return "TESTING"
+ def __unicode__(self):
+ return self.display_name
+
+ class Meta:
+ ordering = ('-ledger_entity_id',)
diff --git a/www/conservancy/apps/supporters/views.py b/www/conservancy/apps/supporters/views.py
new file mode 100644
index 00000000..bc00d1c9
--- /dev/null
+++ b/www/conservancy/apps/supporters/views.py
@@ -0,0 +1,4 @@
+from models import Supporter # relative import
+from django.views.generic.list_detail import object_list
+from django.shortcuts import get_object_or_404, render_to_response
+
diff --git a/www/conservancy/sponsors.py b/www/conservancy/sponsors.py
new file mode 100644
index 00000000..c4be3e4c
--- /dev/null
+++ b/www/conservancy/sponsors.py
@@ -0,0 +1,16 @@
+from django.shortcuts import render_to_response
+from conservancy.apps.supporters.models import Supporter as Supporter
+from datetime import datetime, timedelta
+
+def view(request):
+ """Conservancy Sponsors Page view
+
+ Performs object queries necessary to render the sponsors page.
+ """
+
+ supporters = Supporter.objects.all().filter(display_until_date__gte=datetime.now())
+
+ c = {
+ 'supporters' : supporters
+ }
+ return render_to_response("sponsors.html", c)
diff --git a/www/conservancy/templates/sponsors.html b/www/conservancy/templates/sponsors.html
index 6d48deea..19e44979 100644
--- a/www/conservancy/templates/sponsors.html
+++ b/www/conservancy/templates/sponsors.html
@@ -57,62 +57,10 @@ any of its sponsors.
alphabetical order by surname:
-
- - Aleph Objects, Inc.
- - Russ Allbery
- - Jeremy Allison
- - Christopher Aniszczyk
- - Anonymous (3 people)
- - Martin Ansdell-Smith
- - David Ayers
- - Jono Bacon
- - Daniel Callahan
- - Alison Chaiken
- - Matthew Daniel
- - Mark Cohen
- - Michael Dexter
- - Aurimas Fiseras
- - Karl Fogel
- - Richard Fontana
- - Timothy Freund
- - Philippe Gauthier
- - Scott González
- - Jared Grubb
- - Steven Hamilton
- - Edgar Hill
- - Karl Ove Hufthammer
- - Henrik Ingo
- - maiki interi
- - Ian Kelling
- - Tom Kent
- - Matt Kraai
- - Johannes Krampf
- - Cathy Kuhn
- - Janet Shade Kuhn
- - Michael Linksvayer
- - Tom Marble
- - Darin Miller
- - Michael Miller
- - Martin Michlmayr
- - Pariksheet Nanda
- - Deborah A. Nicholson
- - Samuel and Cristine Noble
- - Donald Robertson
- - Ivan Sandler
- - Prabowo Saputro
- - Christopher Schafer
- - Richard Schmeidler
- - Mats Sjöberg
- - W. John Sullivan
- - David ’novalis” Turner
- - Kat Walsh
- - Christopher Allan Webber
- - Richard Wheeler
- - Mark Wielaard
- - Serge Wroclawski
- - Seymour Zucker
- - 立思科技藝術有限公司
+{% for ss in supporters %}
+- {{ ss.display_name|safe }}
+{% endfor %}
{% endblock %}
diff --git a/www/conservancy/urls.py b/www/conservancy/urls.py
index 99eaca6c..5b09b308 100644
--- a/www/conservancy/urls.py
+++ b/www/conservancy/urls.py
@@ -27,6 +27,9 @@ admin.autodiscover()
urlpatterns = patterns('',
(r'^$', 'conservancy.frontpage.view'),
+ (r'^sponsors$', 'conservancy.frontpage.view'),
+ (r'^sponsors/$', 'conservancy.sponsors.view'),
+ (r'^sponsors/index.html$', 'conservancy.sponsors.view'),
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^admin/', admin.site.urls),
(r'^feeds/blog/?$', BlogFeed()),