def render(self, context): filters = [] request = context['request'] app_name = self.app_name.resolve(context) model_name = self.model_name.resolve(context) field_name = self.field_name.resolve(context) if self.choices_queryset is not None: choices_queryset = self.choices_queryset.resolve(context) else: choices_queryset = None model = models.get_model(app_name, model_name) qsm = QueryStringManager(request) params = qsm.get_params() if params.get('page', None): del params['page'] field = model._meta.get_field(field_name) if field.get_internal_type() == 'FileField': spec = FieldAvailabilityValueFilterSpec(field, request, params, model, None) elif self.multiselection and (field.rel is not None): # is a related field (ForeignKeyField) spec = MultipleRelatedFilterSpec(field, request, params, model, None, choices_queryset) else: # normal filter spec spec = FilterSpec.create(field, request, params, model, None) filter_context = {'title': spec.title(), 'choices' : list(spec.choices(qsm))} tpl = loader.get_template('admin/filter.html') return tpl.render(Context(dict(filter_context, autoescape=context.autoescape)))
def get_standingouts(request=None, limit=0): standingouts = StandingOut.objects.all() qsm = QueryStringManager(request, page_var='page', ignore_params=('set_language', )) filters = qsm.get_filters() standingouts = standingouts.filter(**filters) if limit: return standingouts[:limit] else: return standingouts
def get_content_with_votes(self, request=None, context=None, limit=0, order_by='id'): contents = self.get_queryset(request, context) from copy import copy request_copy = copy_request(request, ['set_language'], copy) qsm = QueryStringManager(request, page_var='page') filters = qsm.get_filters() contents = contents.filter(**filters).distinct().select_related('votes').order_by(order_by) if limit: return contents[:limit] return contents
def generate_feed_from_queryset(request, queryset=None): plugin = get_plugin('rss') if not queryset: contenttypes = plugin.get_config().get( 'contenttypes', []).get_value() query = Q() if not contenttypes or ALL_TYPES in contenttypes: queryset = BaseContent.objects.filter( status='published').order_by('-modification_date') else: classnames = [x for x in contenttypes] for classname in classnames: query = query | Q(class_name=classname.lower()) queryset = BaseContent.objects.filter( status='published').filter( query).order_by('-modification_date') qsm = QueryStringManager(request) queryset = queryset.filter(**qsm.get_filters()) portal_title = plugin.get_config().get( 'portal', '').get_value() f = feedgenerator.Rss201rev2Feed( title=portal_title, link=render_to_string('rss/link.html'), description=render_to_string('rss/description.html'), language=render_to_string('rss/language.html'), author_name=render_to_string('rss/author_name.html'), feed_url=render_to_string('rss/feed_url.html'), ) limit = plugin.get_config().get('limit', None) queryset = queryset[:int(limit.get_value())] link_prefix = 'http://%s' % Site.objects.all()[0].domain for item in queryset: if hasattr(item, 'get_real_instance'): item = item.get_real_instance() if 'modification_date' in item.__dict__: item_date = item.modification_date else: item_date = datetime.now() templates = {'title': ['rss/%s/title.html' % item.class_name, 'rss/items/title.html'], 'description': ['rss/%s/description.html' % item.class_name, 'rss/items/description.html'], } f.add_item( title=render_to_string(templates['title'], {'item': item}), link=u'%s%s' % (link_prefix, item.public_link()), pubdate=item_date, description=render_to_string(templates['description'], {'item': item}), ) return f.writeString('UTF-8')
def generate_feed_from_queryset(request, queryset=None): plugin = get_plugin('rss') if not queryset: contenttypes = plugin.get_config().get('contenttypes', []).get_value() query = Q() if not contenttypes or ALL_TYPES in contenttypes: queryset = BaseContent.objects.filter( status='published').order_by('-modification_date') else: classnames = [x for x in contenttypes] for classname in classnames: query = query | Q(class_name=classname.lower()) queryset = BaseContent.objects.filter(status='published').filter( query).order_by('-modification_date') qsm = QueryStringManager(request) queryset = queryset.filter(**qsm.get_filters()) portal_title = plugin.get_config().get('portal', '').get_value() f = feedgenerator.Rss201rev2Feed( title=portal_title, link=render_to_string('rss/link.html'), description=render_to_string('rss/description.html'), language=render_to_string('rss/language.html'), author_name=render_to_string('rss/author_name.html'), feed_url=render_to_string('rss/feed_url.html'), ) limit = plugin.get_config().get('limit', None) queryset = queryset[:int(limit.get_value())] link_prefix = 'http://%s' % Site.objects.all()[0].domain for item in queryset: if hasattr(item, 'get_real_instance'): item = item.get_real_instance() if 'modification_date' in item.__dict__: item_date = item.modification_date else: item_date = datetime.now() templates = { 'title': ['rss/%s/title.html' % item.class_name, 'rss/items/title.html'], 'description': [ 'rss/%s/description.html' % item.class_name, 'rss/items/description.html' ], } f.add_item( title=render_to_string(templates['title'], {'item': item}), link=u'%s%s' % (link_prefix, item.public_link()), pubdate=item_date, description=render_to_string(templates['description'], {'item': item}), ) return f.writeString('UTF-8')
def _filter_by_request(self, request, items): qsm = QueryStringManager(request, page_var='page', ignore_params=('set_language', )) filters = qsm.get_filters() return self._filter_by_filters(items, filters)