示例#1
0
 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)))
示例#2
0
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
示例#3
0
 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
示例#4
0
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')
示例#5
0
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
示例#6
0
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')
示例#7
0
 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)
 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)