Example #1
0
def dashboard(request):
    """
    View all couch error data
    """
    show = request.GET.get("show", "inbox")
    # there's a post mechanism to do stuff here.  currently all it can do is 
    # bulk archive a search
    if request.method == "POST":
        op = request.POST.get("op", "")
        query = request.POST.get("query", "")
        if query:
            def get_matching_records(query, include_archived):
                if config.LUCENE_ENABLED:
                    if not include_archived:
                        query = "%s AND NOT archived" % query
                    limit = ExceptionRecord.get_db().search(config.COUCHLOG_LUCENE_VIEW, handler="_fti/_design",
                                            q=query, limit=1).total_rows
                    matches = ExceptionRecord.get_db().search(config.COUCHLOG_LUCENE_VIEW, handler="_fti/_design",
                                              q=query, limit=limit, include_docs=True)
                    return [ExceptionRecord.wrap(res["doc"]) for res in matches]
                    
                else:
                    if include_archived:
                        return ExceptionRecord.view("couchlog/all_by_msg", reduce=False, key=query, include_docs=True).all() 
                    else:
                        return ExceptionRecord.view("couchlog/inbox_by_msg", reduce=False, key=query, include_docs=True).all() 
            if op == "bulk_archive":
                records = get_matching_records(query, False)
                for record in records:
                    record.archived = True
                ExceptionRecord.bulk_save(records)    
                messages.success(request, "%s records successfully archived." % len(records))
            elif op == "bulk_delete":
                records = get_matching_records(query, show != "inbox")
                rec_json_list = [record.to_json() for record in records]
                ExceptionRecord.get_db().bulk_delete(rec_json_list)
                messages.success(request, "%s records successfully deleted." % len(records))
    
    single_url_base = reverse('couchlog_single', args=['throwaway']).replace('throwaway/', '')
    return render_to_response('couchlog/dashboard.html',
                              {"show" : show, "count": True,
                               "lucene_enabled": config.LUCENE_ENABLED,
                               "support_email": config.SUPPORT_EMAIL,
                               "config": config.COUCHLOG_TABLE_CONFIG,
                               "display_cols": config.COUCHLOG_DISPLAY_COLS,
                               "single_url_base": single_url_base,
                               "couchlog_config": config},
                               context_instance=RequestContext(request))