Example #1
0
def async_list(request, app_name, model_name):
    # FIXME: commented checking on anonymous
    # if not request.user.is_anonymous():
    print "async_list"
    model = get_model(app_name, model_name)
    meta = model._meta
    query = request.GET.get('q', '')
    q_list = []
    if query:
        search_fields = meta.admin.search_fields
        for field_name in search_fields:
            field = meta.get_field(field_name)
            # TODO: add here model fields list exported from dojoforms.models
            if field.get_internal_type() not in ['ForeignKey']:
                q_list.append(Q(**{'%s__icontains' % field_name: query}))
            else:
                for rel_field_name in field.rel.to._meta.admin.search_fields:
                    q_list.append(Q(**{'%s__%s__icontains' % (field_name, rel_field_name): query}))
    #Fixme: next line would not work with trunk. Fix asap.
    #q = QOr(*q_list)
    try:
        order_field = model._meta.ordering[0]
    except IndexError:
        order_field = '-modifydate'
    #FIXME: filter does not work 
    #queryset = model.objects.filter(q).order_by(order_field)
    queryset = model.objects.all().order_by(order_field)
    paginate_by = int(request.GET.get('count', 10))
    paginator = Paginator(queryset, paginate_by)
    #TODO: check second parameter for get() on the next line
    page_num = int(request.GET.get('page', 1))
    page = paginator.page(page_num)
    
    params = {
        'is_paginated': paginator.num_pages > 1,
        'results_per_page': paginate_by,
        'has_next': page.has_next(),
        'has_previous': page.has_previous(),
	#TODO: next three lines do not look good
        'page': page_num + 1,
        'next': page_num + 1,
        'previous': page_num - 1,
        'pages': paginator.num_pages,
        'hits' : paginator.count,
        'is_owner': True,
        'obj_list': page.object_list,
        'app': app_name,
        'model': model_name,
    }
    template_name = '%s/%s_list.html' % (get_template_dir(app_name), model_name)
    try:
        template = get_template(template_name)
    except TemplateDoesNotExist:
        template = Template(list_template_for_model(model))
    context = RequestContext(request, params)
    return HttpResponse(template.render(context))
Example #2
0
def test(request):
    #print "Subzero POST data:", request.POST
    #return render_to_response('query.html', {})
    return HttpResponse(list_template_for_model(Org), mimetype="text/plain")
Example #3
0
def async_list(request, app_name, model_name):
    # FIXME: commented checking on anonymous
    # if not request.user.is_anonymous():
    print "async_list"
    model = get_model(app_name, model_name)
    meta = model._meta
    query = request.GET.get('q', '')
    q_list = []
    if query:
        search_fields = meta.admin.search_fields
        for field_name in search_fields:
            field = meta.get_field(field_name)
            # TODO: add here model fields list exported from dojoforms.models
            if field.get_internal_type() not in ['ForeignKey']:
                q_list.append(Q(**{'%s__icontains' % field_name: query}))
            else:
                for rel_field_name in field.rel.to._meta.admin.search_fields:
                    q_list.append(
                        Q(
                            **{
                                '%s__%s__icontains' % (field_name, rel_field_name):
                                query
                            }))
    #Fixme: next line would not work with trunk. Fix asap.
    #q = QOr(*q_list)
    try:
        order_field = model._meta.ordering[0]
    except IndexError:
        order_field = '-modifydate'
    #FIXME: filter does not work
    #queryset = model.objects.filter(q).order_by(order_field)
    queryset = model.objects.all().order_by(order_field)
    paginate_by = int(request.GET.get('count', 10))
    paginator = Paginator(queryset, paginate_by)
    #TODO: check second parameter for get() on the next line
    page_num = int(request.GET.get('page', 1))
    page = paginator.page(page_num)

    params = {
        'is_paginated': paginator.num_pages > 1,
        'results_per_page': paginate_by,
        'has_next': page.has_next(),
        'has_previous': page.has_previous(),
        #TODO: next three lines do not look good
        'page': page_num + 1,
        'next': page_num + 1,
        'previous': page_num - 1,
        'pages': paginator.num_pages,
        'hits': paginator.count,
        'is_owner': True,
        'obj_list': page.object_list,
        'app': app_name,
        'model': model_name,
    }
    template_name = '%s/%s_list.html' % (get_template_dir(app_name),
                                         model_name)
    try:
        template = get_template(template_name)
    except TemplateDoesNotExist:
        template = Template(list_template_for_model(model))
    context = RequestContext(request, params)
    return HttpResponse(template.render(context))
Example #4
0
def test(request):
    #print "Subzero POST data:", request.POST
    #return render_to_response('query.html', {})
    return HttpResponse(list_template_for_model(Org), mimetype="text/plain")