コード例 #1
0
ファイル: profile.py プロジェクト: dudarev/cghub
def profile_view(view):
    empty_database()
    empty_cache()
    time.sleep(5)
    request = get_request()
    cart = Cart(request.session)
    # fill cart
    api_request = RequestMinimal(query={'analysis_id': IDS})
    for result in api_request.call():
        cart.add(result)
    cart.update_stats()
    # Call view RUN_COUNT times
    for i in range(RUN_COUNT):
        print 'Run #%d ...' % (i + 1)
        runctx('run_view(view, request)',
                {'run_view': run_view},
                {'view': view, 'request': request}, 'stats')
        p = pstats.Stats('stats')
        p.sort_stats('time').print_stats(20)
    print 'done'
コード例 #2
0
ファイル: views.py プロジェクト: dudarev/cghub
    def post(self, request, **kwargs):
        if 'ids' in request.POST:
            form = AnalysisIDsForm(request.POST)
            if form.is_valid():
                ids = form.cleaned_data['ids']
            else:
                return HttpResponseRedirect(reverse('batch_search_page'))

            if request.POST.get('add_to_cart'):

                cart = Cart(request.session)
                with transaction.commit_on_success():
                    for part in range(0, len(ids), settings.MAX_ITEMS_IN_QUERY):
                        query = {'analysis_id': ids[part : part + settings.MAX_ITEMS_IN_QUERY]}
                        api_request = RequestMinimal(query=query)
                        for result in api_request.call():
                            cart.add(result)
                    cart.update_stats()

                return HttpResponseRedirect(reverse('cart_page'))
            else:
                ids = sorted(ids)
                results = []
                offset, limit = paginator_params(request)
                for i in ids[offset:(offset + limit)]:
                    results.append(i)

                results = get_results_for_ids(results, sort_by='analysis_id')

                response = self.render_to_response({
                        'form': form, 'ids': ids,
                        'results': results})

                if response.status_code == 200:
                    response.set_cookie(
                            settings.PAGINATOR_LIMIT_COOKIE, limit,
                            max_age=settings.COOKIE_MAX_AGE,
                            path=reverse('home_page'))

                return response
        else:
            # submitted search form
            form = BatchSearchForm(request.POST or None, request.FILES or None)
            if form.is_valid():
                submitted_ids = form.cleaned_data['ids']
                unvalidated = form.cleaned_data.get('unvalidated_ids')
                submitted = len(submitted_ids) + len(unvalidated)

                ids = []
                found = {}
                for part in range(0, len(submitted_ids), settings.MAX_ITEMS_IN_QUERY):
                    ids_part = submitted_ids[part : part + settings.MAX_ITEMS_IN_QUERY]
                    search = SearchByIDs(ids=ids_part)
                    for attr in search.results:
                        l = len(search.results[attr])
                        if l:
                            found[attr] = found.get(attr, 0) + l
                    ids += search.get_ids()
                ids = sorted(ids)
                offset, limit = paginator_params(request)
                results = get_results_for_ids(
                        ids[offset:offset + limit],
                        sort_by='analysis_id')

                if not results:
                    form.errors['__all__'] = form.error_class(["No results found."])

                response = self.render_to_response({
                        'form': form, 'found': found, 'ids': ids,
                        'submitted': submitted, 'results': results,
                        'unvalidated': unvalidated})

                if response.status_code == 200:
                    response.set_cookie(
                            settings.PAGINATOR_LIMIT_COOKIE, limit,
                            max_age=settings.COOKIE_MAX_AGE,
                            path=reverse('home_page'))

                return response

            return self.render_to_response({
                        'form': form, 'found': None})