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))