Exemple #1
0
def index(req, images=None, 
          template_name='user_image/index.html', context={}):
    if images is None:
        images = UserImage.objects.public_only(req.user)
    form_data = req.GET.copy()
    if not (req.GET.get('calibrated')
            or req.GET.get('processing')
            or req.GET.get('failed')):
        form_data['calibrated'] = 'on'
    form = ShowImagesForm(form_data)
    calibrated = True
    processing = False
    failed = False
    if form.is_valid():
        calibrated = form.cleaned_data.get('calibrated')
        processing = form.cleaned_data.get('processing')
        failed = form.cleaned_data.get('failed')
        
    if calibrated is False:
        images = images.exclude(jobs__status='S')
    if processing is False:
        images = images.exclude(jobs__status='')
    if failed is False:
        images = images.exclude(jobs__status='F')

    images = images.order_by('-submission__submitted_on')
    page_number = req.GET.get('page', 1)
    page = get_page(images, 27, page_number)
    context.update({
        'image_page': page,
        'show_images_form': form,
    })
    return render(req, template_name, context)
Exemple #2
0
def users(req):
    users = User.objects.all()
    form = UserSearchForm(req.GET)
    if form.is_valid():
        query_string = urllib.urlencode(form.cleaned_data)
        query = form.cleaned_data.get('query')
        if query:
            users = users.filter(profile__display_name__icontains=query)

    sort = req.GET.get('sort', 'name')
    order = 'profile__display_name'
    if sort == 'name':
        #profiles = (UserProfilek.extra(select={'lower_name':'lower(profile.display_name)'})
        #             .order_by('lower_name'))
        order = 'profile__display_name'
    elif sort == 'date':
        order = 'date_joined'
    elif sort == 'images':
        users = users.annotate(Count('user_images'))
        order = '-user_images__count'
    
    users = users.order_by(order)
    #users = users.order_by(order)
    page_number = req.GET.get('page',1)
    user_page = get_page(users,20,page_number)
    context = {
        'user_search_form': form,
        'user_page': user_page,
        'query_string': query_string,
    }
    return render(req, 'search/users.html', context)
Exemple #3
0
def index(req, users=User.objects.all(),
          template_name='user/index.html', context={}):

    form = UserSearchForm(req.GET)
    if form.is_valid():
        query = form.cleaned_data.get('query')
        if query:
            users = users.filter(profile__display_name__icontains=query)

    sort = req.GET.get('sort', 'name')
    order = 'profile__display_name'
    if sort == 'name':
        #profiles = (UserProfilek.extra(select={'lower_name':'lower(profile.display_name)'})
        #             .order_by('lower_name'))
        order = 'profile__display_name'
    elif sort == 'date':
        order = 'date_joined'
    elif sort == 'images':
        users = users.annotate(Count('user_images'))
        order = '-user_images__count'
    
    users = users.order_by(order)
    page_number = req.GET.get('page',1)
    user_page = get_page(users,20,page_number)
    context.update({
        'user_page': user_page,
        'user_search_form': form,
    })
    return render(req, template_name, context)
Exemple #4
0
def index(req, tags=Tag.objects.all(), 
          template_name='tag/index.html', context={}):

    logmsg('tags:', tags.count())

    form = TagSearchForm(req.GET)
    if form.is_valid():
        query = form.cleaned_data.get('query')
        if query:
            tags = tags.filter(text__icontains=query)
            logmsg('query for "%s":' % query, tags.count())
        else:
            logmsg('no query')

    tags = tags.annotate(Count('user_images'))
    sort = req.GET.get('sort', 'freq')
    order = '-user_images__count'
    if sort == 'name':
        order = 'text'
    elif sort == 'freq':
        tags = tags.annotate(Count('user_images'))
        order = '-user_images__count'
    
    tags = tags.order_by(order)
    logmsg('tags:', tags.count())
    page_number = req.GET.get('page', 1)
    page = get_page(tags, 50, page_number)
    context.update({
        'tag_page': page,
        'tags': tags,
        'tag_search_form': form,
    })
    return render(req, template_name, context)
Exemple #5
0
def users(req):
    users = User.objects.all()
    form = UserSearchForm(req.GET)
    if form.is_valid():
        query_string = urllib.urlencode(form.cleaned_data)
        query = form.cleaned_data.get('query')
        if query:
            users = users.filter(profile__display_name__icontains=query)

    sort = req.GET.get('sort', 'name')
    order = 'profile__display_name'
    if sort == 'name':
        #profiles = (UserProfilek.extra(select={'lower_name':'lower(profile.display_name)'})
        #             .order_by('lower_name'))
        order = 'profile__display_name'
    elif sort == 'date':
        order = 'date_joined'
    elif sort == 'images':
        users = users.annotate(Count('user_images'))
        order = '-user_images__count'

    users = users.order_by(order)
    #users = users.order_by(order)
    page_number = req.GET.get('page', 1)
    user_page = get_page(users, 20, page_number)
    context = {
        'user_search_form': form,
        'user_page': user_page,
        'query_string': query_string,
    }
    return render(req, 'search/users.html', context)
Exemple #6
0
def dashboard_submissions(req):
    page_number = req.GET.get('page',1)
    page = get_page(req.user.submissions.all().order_by('-submitted_on'),15,page_number)
    context = {
        'submission_page': page
    }
    return render(req, "dashboard/submissions.html", context)
Exemple #7
0
def album(req, album_id=None):
    album = get_object_or_404(Album, pk=album_id)

    comment_form = get_session_form(req.session, PartialCommentForm)

    page_number = req.GET.get('page', 1)
    page = get_page(album.user_images.public_only(req.user), 4 * 3,
                    page_number)
    context = {
        'album': album,
        'comment_form': comment_form,
        'image_page': page,
        'request': req,
    }

    if album.is_public() or (album.user == req.user
                             and req.user.is_authenticated()):
        template = 'album/view.html'
    #elif SharedHideable.objects.filter(shared_with=req.user.id, hideable=album).count():
    #    template = 'album/view.html'
    else:
        messages.error(
            req, "Sorry, you don't have permission to view this content.")
        template = 'album/permission_denied.html'
    return render(req, template, context)
Exemple #8
0
def index(req, images=None, template_name='user_image/index.html', context={}):
    if images is None:
        images = UserImage.objects.public_only(req.user)
    form_data = req.GET.copy()
    if not (req.GET.get('calibrated') or req.GET.get('processing')
            or req.GET.get('failed')):
        form_data['calibrated'] = 'on'
    form = ShowImagesForm(form_data)
    calibrated = True
    processing = False
    failed = False
    if form.is_valid():
        calibrated = form.cleaned_data.get('calibrated')
        processing = form.cleaned_data.get('processing')
        failed = form.cleaned_data.get('failed')

    stats = ['S', 'F', '']
    if calibrated is False:
        stats.remove('S')
    if processing is False:
        stats.remove('')
    if failed is False:
        stats.remove('F')
    if len(stats) < 3:
        images = images.filter(jobs__status__in=stats)
    #print 'index 1:', images.query
    images = images.order_by('-submission__submitted_on')
    #print 'index 2:', images.query
    page_number = req.GET.get('page', 1)
    page = get_page(images, 27, page_number)
    context.update({
        'image_page': page,
        'show_images_form': form,
    })
    return render(req, template_name, context)
Exemple #9
0
def index(req,
          tags=Tag.objects.all(),
          template_name='tag/index.html',
          context={}):

    logmsg('tags:', tags.count())

    form = TagSearchForm(req.GET)
    if form.is_valid():
        query = form.cleaned_data.get('query')
        if query:
            tags = tags.filter(text__icontains=query)
            logmsg('query for "%s":' % query, tags.count())
        else:
            logmsg('no query')

    tags = tags.annotate(Count('user_images'))
    sort = req.GET.get('sort', 'freq')
    order = '-user_images__count'
    if sort == 'name':
        order = 'text'
    elif sort == 'freq':
        tags = tags.annotate(Count('user_images'))
        order = '-user_images__count'

    tags = tags.order_by(order)
    logmsg('tags:', tags.count())
    page_number = req.GET.get('page', 1)
    page = get_page(tags, 50, page_number)
    context.update({
        'tag_page': page,
        'tags': tags,
        'tag_search_form': form,
    })
    return render(req, template_name, context)
Exemple #10
0
def index(req,
          users=User.objects.all(),
          template_name='user/index.html',
          context={}):

    form = UserSearchForm(req.GET)
    if form.is_valid():
        query = form.cleaned_data.get('query')
        if query:
            users = users.filter(profile__display_name__icontains=query)

    sort = req.GET.get('sort', 'name')
    order = 'profile__display_name'
    if sort == 'name':
        #profiles = (UserProfilek.extra(select={'lower_name':'lower(profile.display_name)'})
        #             .order_by('lower_name'))
        order = 'profile__display_name'
    elif sort == 'date':
        order = 'date_joined'
    elif sort == 'images':
        users = users.annotate(Count('user_images'))
        order = '-user_images__count'

    users = users.order_by(order)
    page_number = req.GET.get('page', 1)
    user_page = get_page(users, 20, page_number)
    context.update({
        'user_page': user_page,
        'user_search_form': form,
    })
    return render(req, template_name, context)
Exemple #11
0
def dashboard_submissions(req):
    page_number = req.GET.get('page',1)
    page = get_page(req.user.submissions.all().order_by('-submitted_on'),15,page_number)
    context = {
        'submission_page': page
    }
    return render(req, "dashboard/submissions.html", context)
Exemple #12
0
def user_submissions(req, user_id=None):
    user = get_object_or_404(User, pk=user_id)
    page_number = req.GET.get('page', 1)
    page = get_page(user.submissions.all().order_by('-submitted_on'), 15,
                    page_number)
    context = {'display_user': user, 'submission_page': page}
    return render(req, "user/submissions.html", context)
Exemple #13
0
def dashboard_submissions(req):
    page_number = req.GET.get('page', 1)
    page = get_page(req.user.submissions.all().order_by('-submitted_on'), 15,
                    page_number)
    context = {'submission_page': page}
    return render_to_response("dashboard/submissions.html",
                              context,
                              context_instance=RequestContext(req))
Exemple #14
0
def dashboard_albums(req):
    page_number = req.GET.get('page',1)
    page = get_page(req.user.albums.all(),3*10,page_number)
    context = {
        'user': req.user,
        'album_page': page
    }
    return render(req, 'dashboard/albums.html', context)
Exemple #15
0
def dashboard_user_images(req):
    page_number = req.GET.get('page',1)
    page = get_page(req.user.user_images.public_only(req.user),3*10,page_number)
    context = {
        'user':req.user,
        'image_page':page
    }
    return render(req, 'dashboard/user_images.html', context)
Exemple #16
0
def dashboard_user_images(req):
    page_number = req.GET.get('page',1)
    page = get_page(req.user.user_images.public_only(req.user),3*10,page_number)
    context = {
        'user':req.user,
        'image_page':page
    }
    return render(req, 'dashboard/user_images.html', context)
Exemple #17
0
def dashboard_albums(req):
    page_number = req.GET.get('page',1)
    page = get_page(req.user.albums.all(),3*10,page_number)
    context = {
        'user': req.user,
        'album_page': page
    }
    return render(req, 'dashboard/albums.html', context)
Exemple #18
0
def dashboard_albums(req):
    page_number = req.GET.get('page', 1)
    page = get_page(req.user.albums.all(), 3 * 10, page_number)

    context = {'user': req.user, 'album_page': page}

    return render_to_response('dashboard/albums.html',
                              context,
                              context_instance=RequestContext(req))
Exemple #19
0
def dashboard_submissions(req):
    page_number = req.GET.get('page',1)
    page = get_page(req.user.submissions.all().order_by('-submitted_on'),15,page_number)
    context = {
        'submission_page': page
    }
    return render_to_response("dashboard/submissions.html",
        context,
        context_instance = RequestContext(req))
Exemple #20
0
def user_submissions(req, user_id=None):
    user = get_object_or_404(User, pk=user_id)
    page_number = req.GET.get('page',1)
    page = get_page(user.submissions.all().order_by('-submitted_on'),15,page_number)
    context = {
        'display_user': user,
        'submission_page': page
    }
    return render(req, "user/submissions.html", context)
Exemple #21
0
def user_albums(req, user_id=None):
    user = get_object_or_404(User, pk=user_id)
    page_number = req.GET.get('page',1)
    page = get_page(user.albums.all(),3*10,page_number)
    context = {
        'display_user': user,
        'album_page': page
    }
    return render(req, 'user/albums.html', context)
Exemple #22
0
def user_images(req, user_id=None):
    user = get_object_or_404(User, pk=user_id)
    page_number = req.GET.get('page',1)
    page = get_page(user.user_images.public_only(req.user),3*10,page_number)
    context = {
        'display_user': user,
        'image_page': page,
    }
    return render(req, 'user/user_images.html', context)
Exemple #23
0
def user_images(req, user_id=None):
    user = get_object_or_404(User, pk=user_id)
    page_number = req.GET.get('page',1)
    page = get_page(user.user_images.public_only(req.user),3*10,page_number)
    context = {
        'display_user': user,
        'image_page': page,
    }
    return render(req, 'user/user_images.html', context)
Exemple #24
0
def user_albums(req, user_id=None):
    user = get_object_or_404(User, pk=user_id)
    page_number = req.GET.get('page',1)
    page = get_page(user.albums.all(),3*10,page_number)
    context = {
        'display_user': user,
        'album_page': page
    }
    return render(req, 'user/albums.html', context)
Exemple #25
0
def dashboard_user_images(req):
    page_number = req.GET.get('page', 1)
    page = get_page(req.user.user_images.public_only(req.user), 3 * 10,
                    page_number)

    context = {'user': req.user, 'image_page': page}

    return render_to_response('dashboard/user_images.html',
                              context,
                              context_instance=RequestContext(req))
Exemple #26
0
def user_albums(req, user_id=None):
    user = get_object_or_404(User, pk=user_id)

    page_number = req.GET.get('page', 1)
    page = get_page(user.albums.all(), 3 * 10, page_number)

    context = {'display_user': user, 'album_page': page}

    return render_to_response('user/albums.html',
                              context,
                              context_instance=RequestContext(req))
Exemple #27
0
def dashboard_albums(req):
    page_number = req.GET.get('page',1)
    page = get_page(req.user.albums.all(),3*10,page_number)
    
    context = {
        'user': req.user,
        'album_page': page
    }
    
    return render_to_response('dashboard/albums.html',
        context,
        context_instance = RequestContext(req))
Exemple #28
0
def dashboard_user_images(req):
    page_number = req.GET.get('page',1)
    page = get_page(req.user.user_images.public_only(req.user),3*10,page_number)
    
    context = {
        'user':req.user,
        'image_page':page
    }
    
    return render_to_response('dashboard/user_images.html',
        context,
        context_instance = RequestContext(req))
Exemple #29
0
def user_images(req, user_id=None):
    user = get_object_or_404(User, pk=user_id)

    page_number = req.GET.get('page',1)
    page = get_page(user.user_images.public_only(req.user),3*10,page_number)
    
    context = {
        'display_user': user,
        'image_page': page
    }
    
    return render_to_response('user/user_images.html',
        context,
        context_instance = RequestContext(req))
Exemple #30
0
def user_albums(req, user_id=None):
    user = get_object_or_404(User, pk=user_id)

    page_number = req.GET.get('page',1)
    page = get_page(user.albums.all(),3*10,page_number)
    
    context = {
        'display_user': user,
        'album_page': page
    }
    
    return render_to_response('user/albums.html',
        context,
        context_instance = RequestContext(req))
Exemple #31
0
def user_images(req, user_id=None):
    user = get_object_or_404(User, pk=user_id)

    page_number = req.GET.get('page',1)
    page = get_page(user.user_images.public_only(req.user),3*10,page_number)
    
    context = {
        'display_user': user,
        'image_page': page,
    }
    
    return render_to_response('user/user_images.html',
        context,
        context_instance = RequestContext(req))
Exemple #32
0
def album(req, album_id=None):
    album = get_object_or_404(Album, pk=album_id)

    comment_form = get_session_form(req.session, PartialCommentForm)

    page_number = req.GET.get("page", 1)
    page = get_page(album.user_images.public_only(req.user), 4 * 3, page_number)
    context = {"album": album, "comment_form": comment_form, "image_page": page, "request": req}

    if album.is_public() or (album.user == req.user and req.user.is_authenticated()):
        template = "album/view.html"
    # elif SharedHideable.objects.filter(shared_with=req.user.id, hideable=album).count():
    #    template = 'album/view.html'
    else:
        messages.error(req, "Sorry, you don't have permission to view this content.")
        template = "album/permission_denied.html"
    return render(req, template, context)
Exemple #33
0
def images(req):
    images = UserImage.objects.all_visible()
    form = ImageSearchForm(req.GET)
    if form.is_valid():
        query_string = urllib.urlencode(form.cleaned_data)
        query = form.cleaned_data.get('query')
        if query:
            images = images.filter(tags__text__icontains=query)

    images = images.order_by('submission__submitted_on').distinct()
    page_number = req.GET.get('page',1)
    image_page = get_page(images,3*10,page_number)
    context = {
        'image_search_form': form,
        'image_page': image_page,
        'query_string': query_string,
    }
    return render(req, 'search/user_images.html', context)
Exemple #34
0
def images(req):
    images = UserImage.objects.all_visible()
    form = ImageSearchForm(req.GET)
    if form.is_valid():
        query_string = urllib.urlencode(form.cleaned_data)
        query = form.cleaned_data.get('query')
        if query:
            images = images.filter(tags__text__icontains=query)

    images = images.order_by('submission__submitted_on').distinct()
    page_number = req.GET.get('page', 1)
    image_page = get_page(images, 3 * 10, page_number)
    context = {
        'image_search_form': form,
        'image_page': image_page,
        'query_string': query_string,
    }
    return render(req, 'search/user_images.html', context)
Exemple #35
0
def index(req, images=None, 
          template_name='user_image/index.html', context={}):
    if images is None:
        images = UserImage.objects.public_only(req.user)
    form_data = req.GET.copy()
    if not (req.GET.get('calibrated')
            or req.GET.get('processing')
            or req.GET.get('failed')):
        form_data['calibrated'] = 'on'
    form = ShowImagesForm(form_data)
    calibrated = True
    processing = False
    failed = False
    if form.is_valid():
        calibrated = form.cleaned_data.get('calibrated')
        processing = form.cleaned_data.get('processing')
        failed = form.cleaned_data.get('failed')

    stats = ['S', 'F', '']
    if calibrated is False:
        stats.remove('S')
    if processing is False:
        stats.remove('')
    if failed is False:
        stats.remove('F')
    if len(stats) < 3:
        images = images.filter(jobs__status__in=stats)
    #print 'index 1:', images.query
    # the public_only() view already sorts them
    #images = images.order_by('-submission__submitted_on')
    #print 'index 2:', images.query
    page_number = req.GET.get('page', 1)
    page = get_page(images, 27, page_number)
    context.update({
        'image_page': page,
        'show_images_form': form,
    })
    return render(req, template_name, context)
Exemple #36
0
def search(req):
    if req.GET:
        form_data = req.GET.copy()
        if not (req.GET.get('calibrated') or req.GET.get('processing')
                or req.GET.get('failed')):
            form_data['calibrated'] = 'on'
    else:
        form_data = None

    form = ImageSearchForm(form_data)
    context = {}
    images = UserImage.objects.all_visible()
    page_number = req.GET.get('page', 1)
    category = 'tag'
    calibrated = True
    processing = False
    failed = False

    if form.is_valid():
        calibrated = form.cleaned_data.get('calibrated')
        processing = form.cleaned_data.get('processing')
        failed = form.cleaned_data.get('failed')

        category = form.cleaned_data.get('search_category')
        if category == 'tag':
            tags = form.cleaned_data.get('tags', '')
            if tags.strip():
                images = UserImage.objects.none()
                tag_objs = []
                tags = map(strip, tags.split(','))
                tags = list(set(tags))  # remove duplicate tags

                images = UserImage.objects.all_visible().filter(
                    tags__text__in=tags).distinct()
                tag_objs = Tag.objects.filter(text__in=tags)
                context['tags'] = tag_objs

        elif category == 'user':
            username = form.cleaned_data.get('user', '')

            if username.strip():
                user = User.objects.filter(profile__display_name=username)[:1]
                images = UserImage.objects.none()
                if len(user) > 0:
                    images = UserImage.objects.all_visible().filter(user=user)
                    context['display_user'] = user[0]
                else:
                    context['display_users'] = User.objects.filter(
                        profile__display_name__startswith=username)[:5]
        elif category == 'location':
            ra = form.cleaned_data.get('ra', 0)
            dec = form.cleaned_data.get('dec', 0)
            radius = form.cleaned_data.get('radius', 0)

            if ra and dec and radius:
                ra *= math.pi / 180
                dec *= math.pi / 180
                tempr = math.cos(dec)
                x = tempr * math.cos(ra)
                y = tempr * math.sin(ra)
                z = math.sin(dec)
                r = radius / 180 * math.pi

                # HACK - there's probably a better way to do this..?
                where = (
                    '(x-(%(x)f))*(x-(%(x)f))+(y-(%(y)f))*(y-(%(y)f))+(z-(%(z)f))*(z-(%(z)f)) < (%(r)f)*(%(r)f)'
                    % dict(x=x, y=y, z=z, r=r))
                where2 = '(r <= %f)' % r
                cals = Calibration.objects.extra(where=[where, where2])
                images = UserImage.objects.filter(jobs__calibration__in=cals)
        elif category == 'image':
            image_id = form.cleaned_data.get('image')
            if image_id:
                image = get_object_or_404(UserImage, pk=image_id)
                context['image'] = image
                images = image.get_neighbouring_user_images()

    if calibrated is False:
        images = images.exclude(jobs__status='S')
    if processing is False:
        images = images.exclude(jobs__status__isnull=True)
    if failed is False:
        images = images.exclude(jobs__status='F')

    page = get_page(images, 4 * 5, page_number)
    context.update({
        'form': form,
        'search_category': category,
        'image_page': page
    })
    return render_to_response('user_image/search.html',
                              context,
                              context_instance=RequestContext(req))
Exemple #37
0
def search(req):
    if req.GET:
        form_data = req.GET.copy()
        if not (req.GET.get('calibrated')
                or req.GET.get('processing')
                or req.GET.get('failed')):
            form_data['calibrated'] = 'on'
    else:
        form_data = None

    form = ImageSearchForm(form_data)
    context = {}
    images = UserImage.objects.all_visible()
    page_number = req.GET.get('page',1)
    category = 'tag'
    calibrated = True
    processing = False
    failed = False

    if form.is_valid(): 
        calibrated = form.cleaned_data.get('calibrated')
        processing = form.cleaned_data.get('processing')
        failed = form.cleaned_data.get('failed')

        category = form.cleaned_data.get('search_category');
        if category == 'tag':
            tags = form.cleaned_data.get('tags','')
            if tags.strip():
                images = UserImage.objects.none()
                tag_objs = []
                tags = map(strip,tags.split(','))
                tags = list(set(tags)) # remove duplicate tags
                
                images = UserImage.objects.all_visible().filter(tags__text__in=tags).distinct()
                tag_objs = Tag.objects.filter(text__in=tags)
                context['tags'] = tag_objs

        elif category == 'user':
            username = form.cleaned_data.get('user','')

            if username.strip():
                user = User.objects.filter(profile__display_name=username)[:1]
                images = UserImage.objects.none()
                if len(user) > 0:
                    images = UserImage.objects.all_visible().filter(user=user)
                    context['display_user'] = user[0] 
                else:
                    context['display_users'] = User.objects.filter(profile__display_name__startswith=username)[:5]
        elif category == 'location':
            ra = form.cleaned_data.get('ra', 0)
            dec = form.cleaned_data.get('dec', 0)
            radius = form.cleaned_data.get('radius', 0)

            if ra and dec and radius: 
                ra *= math.pi/180
                dec *= math.pi/180
                tempr = math.cos(dec)
                x = tempr*math.cos(ra)
                y = tempr*math.sin(ra)
                z = math.sin(dec)
                r = radius/180*math.pi
               
                # HACK - there's probably a better way to do this..?
                where = ('(x-(%(x)f))*(x-(%(x)f))+(y-(%(y)f))*(y-(%(y)f))+(z-(%(z)f))*(z-(%(z)f)) < (%(r)f)*(%(r)f)'
                        % dict(x=x,y=y,z=z,r=r))
                where2= '(r <= %f)' % r
                cals = Calibration.objects.extra(where=[where,where2])
                images = UserImage.objects.filter(jobs__calibration__in=cals)
        elif category == 'image':
            image_id = form.cleaned_data.get('image')
            if image_id:
                image = get_object_or_404(UserImage, pk=image_id)
                context['image'] = image
                images = image.get_neighbouring_user_images()

    if calibrated is False:
        images = images.exclude(jobs__status='S')
    if processing is False:
        images = images.exclude(jobs__status__isnull=True)
    if failed is False:
        images = images.exclude(jobs__status='F')

    page = get_page(images, 4*5, page_number)
    context.update({'form': form,
                    'search_category': category,
                    'image_page': page})
    return render_to_response('user_image/search.html',
        context,
        context_instance = RequestContext(req))