def get_feeds(): """Return a dictionary containing `configuration_key` and feed class pairs for all configurations that have `use_generic_feeds` set to True. """ feeds = {} for _configuration_key, _configuration in blogs.all(): if not _configuration.use_generic_feeds: continue class EntryFeed(Feed): configuration = _configuration configuration_key = _configuration_key title_template = _configuration.feed_title_template_name description_template = \ _configuration.feed_description_template_name feed_type = feedgenerator.Rss201rev2Feed def get_site(self): if not hasattr(self, '_current_site'): self._current_site = Site.objects.get_current() return self._current_site def title(self): if self.configuration.feed_title is not None: return self.configuration.feed_title return self.get_site().name def link(self): if self.configuration.feed_link is not None: return self.configuration.feed_link return "http://%s/" % (self.get_site().domain) def description(self): if self.configuration.feed_description is not None: return self.configuration.feed_description return "Latest entries on %s" % self.get_site().name def items(self): items = self.configuration.model.live.all() return items[:self.configuration.feed_limit] def item_pubdate(self, obj): return obj.pub_date def item_link(self, obj): return self.configuration.get_entry_absolute_url(obj) if _configuration.feed_format == feed_formats.ATOM: # Alter the class to support Atom feeds instead of RSS. EntryFeed.feed_type = feedgenerator.Atom1Feed EntryFeed.subtitle = EntryFeed.description feeds[_configuration_key] = EntryFeed return feeds
from django import forms from django.contrib import admin from django.utils.translation import ugettext_lazy as _ from blog_base.models import Category from blog_base import blogs class CategoryOptions(admin.ModelAdmin): prepopulated_fields = { 'slug': ('name', ) } # Create and register dynamic ModelAdmin subclasses for each configuration # that has use_generic_admin set to True. for (_configuration_key, _configuration) in blogs.all(): if not _configuration.use_generic_admin: continue # Define a custom form to set initial value of input format field. class Form(forms.ModelForm): def __init__(self, *args, **kwargs): super(Form, self).__init__(*args, **kwargs) self.fields['input_format'].initial = _configuration.markup_format class Meta: model = _configuration.model class Admin(admin.ModelAdmin): configuration = _configuration configuration_key = _configuration_key