コード例 #1
0
ファイル: views.py プロジェクト: abegong/textbadger
def export_batch(request, mongo, batch_id):
    #! These should be populated from a form, but said form doesn't exist yet.
    include_empty_rows = False
    include_doc_content = False

    #Retrieve the relevant objects
    batch = mongo.get_collection("tb_app_batch").find_one(
        {"_id": ObjectId(batch_id)})
    documents = batch["documents"]
    collection = mongo.get_collection("tb_app_collection").find_one(
        {"_id": ObjectId(batch["profile"]["collection_id"])})
    codebook = mongo.get_collection("tb_app_codebook").find_one(
        {"_id": ObjectId(batch["profile"]["codebook_id"])})

    #Get column names...
    col_names = models.gen_codebook_column_names(codebook)
    col_index = models.gen_col_index_from_col_names(col_names)

    #Generate filename
    filename = sluggify(
        batch["profile"]["name"]) + "-" + datetime.datetime.now().strftime(
            "%Y-%m-%d") + ".csv"

    #Begin constructing a response
    #response = HttpResponse(mimetype='text')

    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename=' + filename
    writer = csv.writer(response)

    #Generate and write column headers
    header = ['index', 'doc_index', 'username']
    if include_doc_content:
        header += ['document']
    header += col_names
    writer.writerow(header)

    for i, doc in enumerate(documents):
        for coder in doc["labels"]:
            answer_set = models.get_most_recent_answer_set(
                doc["labels"][coder])
            if answer_set != {} or include_empty_rows:
                row = [i + 1, doc["index"], coder]
                if include_doc_content:
                    row += [collection["documents"][i]["content"]]
                row += models.gen_csv_column_from_batch_labels(
                    answer_set, col_index)
                print row
                writer.writerow(row)

    return response
コード例 #2
0
ファイル: views.py プロジェクト: abegong/textbadger
def export_batch(request, mongo, batch_id):
    #! These should be populated from a form, but said form doesn't exist yet.
    include_empty_rows = False
    include_doc_content = False

    #Retrieve the relevant objects
    batch = mongo.get_collection("tb_app_batch").find_one( {"_id": ObjectId(batch_id)} )
    documents = batch["documents"]
    collection = mongo.get_collection("tb_app_collection").find_one({"_id": ObjectId(batch["profile"]["collection_id"])} )
    codebook = mongo.get_collection("tb_app_codebook").find_one({"_id": ObjectId(batch["profile"]["codebook_id"])} )

    #Get column names...
    col_names = models.gen_codebook_column_names(codebook)
    col_index = models.gen_col_index_from_col_names(col_names)

    #Generate filename
    filename = sluggify(batch["profile"]["name"])+"-"+datetime.datetime.now().strftime("%Y-%m-%d")+".csv"

    #Begin constructing a response
    #response = HttpResponse(mimetype='text')

    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename='+filename
    writer = csv.writer(response)

    #Generate and write column headers
    header = ['index', 'doc_index', 'username']
    if include_doc_content:
        header += ['document']
    header += col_names
    writer.writerow(header)

    for i,doc in enumerate(documents):
        for coder in doc["labels"]:
            answer_set = models.get_most_recent_answer_set(doc["labels"][coder])
            if answer_set != {} or include_empty_rows:
                row = [i+1, doc["index"], coder]
                if include_doc_content:
                    row += [collection["documents"][i]["content"]]
                row += models.gen_csv_column_from_batch_labels(answer_set, col_index)
                print row
                writer.writerow(row)


    return response
コード例 #3
0
ファイル: views.py プロジェクト: abegong/textbadger
def review(request, mongo, batch_index):
    batch = mongo.get_collection("tb_app_batch").find_one(
        {"profile.index": int(batch_index)}, {
            "profile": 1,
            "reports": 1,
            "documents": 1
        })
    codebook = mongo.get_collection("tb_app_collection").find_one(
        {"_id": ObjectId(batch["profile"]["codebook_id"])}, {})

    #print json.dumps(batch, cls=MongoEncoder, indent=2)

    seq_list = [d["index"] for d in batch["documents"]]

    #Reshape label dictionaries for display
    #! This should go in models.py
    label_list = []
    for doc in batch["documents"]:
        label_set = defaultdict(dict)

        for coder in doc["labels"]:
            #print "\t", coder
            answer_set = models.get_most_recent_answer_set(
                doc["labels"][coder])

            #Append question labels to the label_set object
            for question in answer_set:
                label_set[question][coder] = answer_set[question]

        label_list.append(label_set)

#    print json.dumps(label_list, cls=MongoEncoder, indent=2)

    result = {
        'batch': batch,
        'seq_list': seq_list,
        'label_list': json.dumps(label_list, cls=MongoEncoder, indent=2),
        #        'label_list_2': json.dumps(batch["documents"], cls=MongoEncoder, indent=2),
    }
    #print json.dumps(batch, cls=MongoEncoder, indent=2)

    return render_to_response('review.html',
                              result,
                              context_instance=RequestContext(request))
コード例 #4
0
ファイル: views.py プロジェクト: abegong/textbadger
def review(request, mongo, batch_index):
    batch = mongo.get_collection("tb_app_batch").find_one(
        {"profile.index": int(batch_index)},
        {"profile":1, "reports":1, "documents":1}
    )
    codebook = mongo.get_collection("tb_app_collection").find_one(
        {"_id": ObjectId(batch["profile"]["codebook_id"])},
        {}
    )

    #print json.dumps(batch, cls=MongoEncoder, indent=2)

    seq_list = [d["index"] for d in batch["documents"]]

    #Reshape label dictionaries for display
    #! This should go in models.py
    label_list = []
    for doc in batch["documents"]:
        label_set = defaultdict(dict)

        for coder in doc["labels"]:
            #print "\t", coder
            answer_set = models.get_most_recent_answer_set(doc["labels"][coder])

            #Append question labels to the label_set object
            for question in answer_set:
                label_set[question][coder] = answer_set[question]

        label_list.append(label_set)

#    print json.dumps(label_list, cls=MongoEncoder, indent=2)
    
    result = {
        'batch': batch,
        'seq_list' : seq_list,
        'label_list': json.dumps(label_list, cls=MongoEncoder, indent=2),
#        'label_list_2': json.dumps(batch["documents"], cls=MongoEncoder, indent=2),
    }
    #print json.dumps(batch, cls=MongoEncoder, indent=2)

    return render_to_response('review.html', result, context_instance=RequestContext(request))