Changeset - f7e45da6ddc8
[Not reviewed]
www/conservancy/apps/blog/models.py
Show inline comments
 
from django.db import models
 
from django.conf import settings
 
from sflc.apps.staff.models import Person
 
from conservancy.apps.staff.models import Person
 
from datetime import datetime, timedelta
 

	
 
class EntryTag(models.Model):
 
    """Tagging for blog entries"""
 

	
 
    label = models.CharField(max_length=100)
 
    slug = models.SlugField()
 

	
 
    class Meta:
 
        db_table = 'techblog_entrytag' # legacy
 

	
 
    def __unicode__(self):
...
 
@@ -44,25 +44,25 @@ class Entry(models.Model):
 
    def get_absolute_url(self):
 
        return (u"/blog/%s/%s/"
 
                % (self.pub_date.strftime("%Y/%b/%d").lower(),
 
                   self.slug))
 

	
 
    def is_recent(self):
 
        return self.pub_date > (datetime.now() - timedelta(days=14))
 
        # question: does datetime.now() do a syscall each time is it called?
 

	
 
    # Ping google blogs and technorati.  Taken from
 
    # http://blog.foozia.com/blog/2007/apr/21/ping-technorati-your-django-blog-using-xml-rpc/
 
    def save(self):
 
        if settings.SFLC_DEVEL or True: # "or True" means it is disabled always
 
        if settings.CONSERVANCY_DEVEL or True: # "or True" means it is disabled always
 
            super(Entry, self).save()
 
            return
 

	
 
        blog_name = 'Software Freedom Law Center Blog'
 
        blog_url =  'http://www.softwarefreedom.org/blog/'
 
        post_url = ('http://www.softwarefreedom.org'
 
                    + self.get_absolute_url())
 

	
 
        import xmlrpclib
 

	
 
        # Ping Technorati
 
        j = xmlrpclib.Server('http://rpc.technorati.com/rpc/ping')
www/conservancy/apps/blog/urls.py
Show inline comments
 
from django.conf.urls.defaults import *
 
from models import Entry, EntryTag # relative import
 
from views import last_name # relative import
 
from sflc.apps.staff.models import Person
 
from conservancy.apps.staff.models import Person
 
from datetime import datetime
 

	
 
extra_context = {}
 

	
 
info_dict = {
 
    'queryset': Entry.objects.all(),
 
    'date_field': 'pub_date',
 
    'extra_context': extra_context,
 
}
 

	
 
urlpatterns = patterns('django.views.generic.date_based',
 
   (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/(?P<slug>[-\w]+)/$', 'object_detail', dict(info_dict, slug_field='slug')),
 
   (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/$', 'archive_day', info_dict),
 
   (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/$', 'archive_month', info_dict),
 
   (r'^(?P<year>\d{4})/$', 'archive_year', dict(info_dict,
 
                                                make_object_list=True)),
 
)
 

	
 
urlpatterns += patterns('sflc.apps.blog.views',
 
urlpatterns += patterns('conservancy.apps.blog.views',
 
   (r'^/?$', 'custom_index', dict(info_dict, paginate_by=10)),
 
   (r'^query/$', 'query'),
 
)
 

	
 
# Code to display authors and tags on each blog page
 

	
 
def all_tags_by_use_amount():
 
    """Returns all tags with an added 'cnt' attribute (how many times used)
 

	
 
    Also sorts the tags so most-used tags appear first.
 
    """
 

	
www/conservancy/apps/blog/views.py
Show inline comments
 
from models import Entry, EntryTag # relative import
 
from django.views.generic.list_detail import object_list
 
from sflc.apps.staff.models import Person
 
from conservancy.apps.staff.models import Person
 
from django.shortcuts import get_object_or_404, render_to_response
 
from datetime import datetime
 

	
 
def OR_filter(field_name, objs):
 
    from django.db.models import Q
 
    return reduce(lambda x, y: x | y,
 
                  [Q(**{field_name: x.id}) for x in objs])
 

	
 
def last_name(person):
 
    return person.formal_name.rpartition(' ')[2]
 

	
 
def custom_index(request, queryset, *args, **kwargs):
www/conservancy/apps/contacts/admin.py
Show inline comments
 
from django.contrib import admin
 
from models import ContactEntry
 

	
 
class ContactEntryAdmin(admin.ModelAdmin):
 
    list_display = ('email', 'subscribe_sflc', 'subscribe_sfc')
 
    list_display = ('email', 'subscribe_conservancy')
 

	
 

	
 
admin.site.register(ContactEntry, ContactEntryAdmin)
www/conservancy/apps/contacts/models.py
Show inline comments
 
from django.db import models
 

	
 
class ContactEntry(models.Model):
 
    """SFLC contact system
 
    """Conservancy contact system
 

	
 
    Hopefully this will be deprecated soon"""
 

	
 
    email = models.EmailField() # should make it unique, but we really cannot
 
    subscribe_sflc = models.BooleanField()
 
    subscribe_sfc = models.BooleanField()
 
    subscribe_conservancy = models.BooleanField()
 

	
 
    class Meta:
 
        ordering = ('email',)
 

	
www/conservancy/apps/contacts/urls.py
Show inline comments
 
from django.conf.urls.defaults import *
 

	
 
urlpatterns = patterns('sflc.apps.contacts.views',
 
urlpatterns = patterns('conservancy.apps.contacts.views',
 
   (r'^/?$', 'subscribe'),
 
)
www/conservancy/apps/contacts/views.py
Show inline comments
...
 
@@ -2,26 +2,25 @@ from django.shortcuts import render_to_response
 
from django import forms
 
from models import ContactEntry
 
from django.forms import ModelForm
 

	
 
def subscribe(request):
 
    """Mailing list subscription form
 
    """
 

	
 
    class ContactEntryForm(ModelForm):
 
        class Meta:
 
            model = ContactEntry
 

	
 
    ContactEntryForm.base_fields['subscribe_sflc'].label = 'Receive Software Freedom Law Center updates'
 
    ContactEntryForm.base_fields['subscribe_sfc'].label = 'Receive Software Freedom Conservancy updates'
 
    ContactEntryForm.base_fields['subscribe_conservancy'].label = 'Receive Software Freedom Conservancy updates'
 

	
 
    if request.method == 'POST':
 
        form = ContactEntryForm(request.POST)
 
        if form.is_valid():
 
            form.save()
 
            return render_to_response('contacts/subscribe_success.html',
 
                                      {'form': form.cleaned_data})
 
    else:
 
        form = ContactEntryForm()
 

	
 
    return render_to_response('contacts/subscribe.html',
 
                              {'form': form})
www/conservancy/apps/events/models.py
Show inline comments
 
from django.db import models
 
from sflc.apps.staff.models import Person
 
from sflc.apps.worldmap.models import EarthLocation
 
from conservancy.apps.staff.models import Person
 
from conservancy.apps.worldmap.models import EarthLocation
 
from datetime import datetime, timedelta
 

	
 
class EventTag(models.Model):
 
    """Tagging for events
 

	
 
    (currently unused)
 
    """
 

	
 
    label = models.CharField(max_length=100)
 

	
 
    date_created = models.DateField(auto_now_add=True)
 

	
...
 
@@ -20,25 +20,25 @@ class PastEventManager(models.Manager):
 
    """Returns all past events"""
 

	
 
    def get_query_set(self):
 
        return super(PastEventManager, self).get_query_set().filter(date__lt=datetime.today())
 

	
 
class FutureEventManager(models.Manager):
 
    """Returns all future events"""
 

	
 
    def get_query_set(self):
 
        return super(FutureEventManager, self).get_query_set().filter(date__gte=datetime.today())
 

	
 
class Event(models.Model):
 
    """Model for SFLC staff member events (presentations, etc)"""
 
    """Model for Conservancy staff member events (presentations, etc)"""
 

	
 
    title = models.CharField(max_length=400)
 
    date = models.DateField()
 
    date_tentative = models.BooleanField()
 
    datetime = models.CharField("Date and Time", max_length=300, blank=True)
 
    slug = models.SlugField(unique_for_year='date')
 
    description = models.TextField(blank=True)
 
    people = models.ManyToManyField(Person, null=True, blank=True)
 
    location = models.CharField(max_length=1000)
 
    earth_location = models.ForeignKey(EarthLocation, null=True, blank=True,
 
                                       help_text="Label will not be displayed")
 
    tags = models.ManyToManyField(EventTag, null=True, blank=True)
www/conservancy/apps/events/urls.py
Show inline comments
...
 
@@ -3,17 +3,17 @@ from models import Event # relative import
 

	
 
info_dict = {
 
    'queryset': Event.objects.all(),
 
    'date_field': 'date',
 
    'allow_future': True,
 
}
 

	
 
urlpatterns = patterns('django.views.generic.date_based',
 
    (r'^(?P<year>\d{4})/$', 'archive_year', dict(info_dict,
 
                                                 make_object_list=True)),
 
)
 

	
 
urlpatterns += patterns('sflc.apps.events.views',
 
urlpatterns += patterns('conservancy.apps.events.views',
 
    (r'^/?$', 'custom_index', dict(info_dict, queryset=Event.past.all(), paginate_by=10)),
 
    (r'^(?P<year>\d{4})/(?P<slug>[-\w]+)/$', 'event_detail', dict(info_dict, slug_field='slug')),
 
    (r'^ics/$', 'future_event_ics', info_dict),
 
)
www/conservancy/apps/news/models.py
Show inline comments
 
from django.db import models
 
from django.conf import settings
 
from sflc.apps.staff.models import Person
 
from sflc.apps.events.models import Event
 
from conservancy.apps.staff.models import Person
 
from conservancy.apps.events.models import Event
 
from django.contrib.sites.models import Site
 
from datetime import datetime, timedelta
 

	
 
class PressRelease(models.Model):
 
    """News release model"""
 

	
 
    headline = models.CharField(max_length=300)
 
    subhead = models.CharField(max_length=300, blank=True)
 
    slug = models.SlugField(unique_for_date="pub_date",
 
                            help_text=("automatically built from headline"))
 
    summary = models.TextField(help_text="First paragraph (raw HTML)")
 
    body = models.TextField(help_text="Remainder of post (raw HTML)",
...
 
@@ -28,29 +28,29 @@ class PressRelease(models.Model):
 
        return self.headline
 

	
 
    def get_absolute_url(self):
 
        return u"/news/%s/%s/" % (self.pub_date.strftime("%Y/%b/%d").lower(),
 
                                  self.slug)
 

	
 
    def is_recent(self):
 
        return self.pub_date > (datetime.now() - timedelta(days=5))
 
        # question: does datetime.now() do a syscall each time is it called?
 

	
 
    def is_in_past_month(self):
 
        # This function is deprecated.  Use the date_within template
 
        # filter instead (example in sflc/templates/frontpage.html)
 
        # filter instead (example in conservancy/templates/frontpage.html)
 
        return self.pub_date > (datetime.now() - timedelta(days=30))
 

	
 
    def save(self):
 
        if settings.SFLC_DEVEL or True:
 
        if settings.CONSERVANCY_DEVEL or True:
 
            super(PressRelease, self).save()
 
            return
 

	
 
        blog_name = 'Software Freedom Law Center News'
 
        blog_url =  'http://www.softwarefreedom.org/news/'
 
        post_url = ('http://www.softwarefreedom.org'
 
                    + self.get_absolute_url())
 

	
 
        import xmlrpclib
 

	
 
        # Ping Technorati
 
        j = xmlrpclib.Server('http://rpc.technorati.com/rpc/ping')
...
 
@@ -69,25 +69,25 @@ class ExternalArticleTag(models.Model):
 
    label = models.CharField(max_length=100)
 

	
 
    date_created = models.DateField(auto_now_add=True)
 

	
 
    def __unicode__(self):
 
        return self.label
 

	
 
class PublicExternalArticleManager(models.Manager):
 
    def get_query_set(self):
 
        return super(PublicExternalArticleManager, self).get_query_set().filter(visible=True)
 

	
 
class ExternalArticle(models.Model):
 
    """A system for displaying SFLC news mentions on the site.
 
    """A system for displaying Conservancy news mentions on the site.
 

	
 
    (Currently unused)
 
    """
 

	
 
    title = models.CharField(max_length=400)
 
    info = models.CharField(help_text="subscribers only? audio? pdf warning?",
 
                            blank=True, max_length=300)
 
    publication = models.CharField("source of article", max_length=300)
 
    url = models.URLField(blank=True, verify_exists=False)
 
    date = models.DateField()
 
    visible = models.BooleanField(help_text="Whether to display on website")
 

	
www/conservancy/apps/news/views.py
Show inline comments
 
from django.views.generic.list_detail import object_list
 
from sflc.apps.news.models import ExternalArticle
 
from sflc.apps.events.models import Event
 
from conservancy.apps.news.models import ExternalArticle
 
from conservancy.apps.events.models import Event
 
from datetime import datetime
 

	
 
def custom_index(request, queryset, *args, **kwargs):
 
    """News index.  Calls a generic list view, but passes additional
 
    context including past and future events, and an index of news by
 
    year.
 
    """
 

	
 
    articles = None
 
    #if not request.GET.has_key("page"):
 
    #    articles = ExternalArticle.public.all().order_by("-date")[:10]
 

	
www/conservancy/apps/podcast/models.py
Show inline comments
 
from django.db import models
 
from django.conf import settings
 
from sflc.apps.staff.models import Person
 
from conservancy.apps.staff.models import Person
 
from datetime import datetime, timedelta
 

	
 
class PodcastTag(models.Model):
 
    """Tagging for podcasts"""
 

	
 
    label = models.CharField(max_length=100)
 
    slug = models.SlugField()
 

	
 
    class Meta:
 
        db_table = 'podcast_tags' # legacy
 

	
 
    def __unicode__(self):
www/conservancy/apps/podcast/urls.py
Show inline comments
 
from django.conf.urls.defaults import *
 
from models import Podcast, PodcastTag # relative import
 
from sflc.apps.staff.models import Person
 
from conservancy.apps.staff.models import Person
 
from datetime import datetime
 

	
 
extra_context = {}
 

	
 
info_dict = {
 
    'queryset': Podcast.objects.all(),
 
    'date_field': 'pub_date',
 
    'extra_context': extra_context,
 
}
 

	
 
urlpatterns = patterns('django.views.generic.date_based',
 
   (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/(?P<slug>[-\w]+)/$', 'object_detail', dict(info_dict, slug_field='slug')),
 
   (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\w{1,2})/$', 'archive_day', info_dict),
 
   (r'^(?P<year>\d{4})/(?P<month>[a-z]{3})/$', 'archive_month', info_dict),
 
   (r'^(?P<year>\d{4})/$', 'archive_year', dict(info_dict,
 
                                                make_object_list=True)),
 
# FIXME HOW DO I MAKE THE SLUG WORK WITH NO DATES IN IT.
 
#   (r'^(?P<slug>[-\w]+)/$', 'object_detail', dict(info_dict, slug_field='slug')),
 
)
 

	
 
urlpatterns += patterns('sflc.apps.podcast.views',
 
urlpatterns += patterns('conservancy.apps.podcast.views',
 
   (r'^/?$', 'custom_index', dict(info_dict, paginate_by=20)),
 
   (r'^query/$', 'query'),
 
)
 

	
 
# Code to display authors and tags on each blog page
 

	
 
def all_tags_by_use_amount():
 
    """Returns all tags with an added 'cnt' attribute (how many times used)
 

	
 
    Also sorts the tags so most-used tags appear first.
 
    """
 

	
www/conservancy/apps/podcast/views.py
Show inline comments
 
from models import Podcast, PodcastTag # relative import
 
from django.views.generic.list_detail import object_list
 
from sflc.apps.staff.models import Person
 
from conservancy.apps.staff.models import Person
 
from django.shortcuts import get_object_or_404, render_to_response
 
from datetime import datetime
 

	
 
def OR_filter(field_name, objs):
 
    from django.db.models import Q
 
    return reduce(lambda x, y: x | y,
 
                  [Q(**{field_name: x.id}) for x in objs])
 

	
 
def last_name(person):
 
    return person.formal_name.rpartition(' ')[2]
 

	
 
def custom_index(request, queryset, *args, **kwargs):
www/conservancy/apps/summit_registration/urls.py
Show inline comments
 
from django.conf.urls.defaults import *
 

	
 
urlpatterns = patterns('sflc.apps.summit_registration.views',
 
urlpatterns = patterns('conservancy.apps.summit_registration.views',
 
   (r'^/?$', 'register'),
 
)
0 comments (0 inline, 0 general)