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:

- {% 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()),