예제 #1
0
async def admin_upload_content(request: Request,
                               content_data: UploadFile = File(...),
                               content_short: str = Form(...),
                               content_filetype: str = Form(...),
                               admin: User = Depends(get_current_admin)):
    from extensions.mongo import mongo_engine
    file_id = ObjectId()
    new_content = Content(id=file_id,
                          short=content_short,
                          filetype=content_filetype)
    await Content.insert_one(new_content.dict(by_alias=True))
    grid_in = mongo_engine.fs.open_upload_stream_with_id(
        file_id,
        content_data.filename,
        metadata=new_content.dict(by_alias=True))
    with content_data.file as f:
        await grid_in.write(f.read())
        await grid_in.close()
    return RedirectResponse(url="/", status_code=303)
예제 #2
0
async def init_testing_database():
    warning("Initialize fresh development database")
    await User.collection.drop()
    await Group.collection.drop()
    await Node.collection.drop()
    await Content.collection.drop()
    async for data in mongo_engine.fs.find():
        mongo_engine.fs.delete(data._id)

    # Pdf example content
    file_id = ObjectId()
    content_1 = Content(id=file_id,
                        short="An example of pdf file.",
                        filetype="pdf")
    await Content.collection.insert_one(content_1.dict(by_alias=True))
    grid_in = mongo_engine.fs.open_upload_stream_with_id(
        file_id, "pdfexample.pdf", metadata=content_1.dict(by_alias=True))
    with open("static/contents/pdfexample.pdf", "rb") as f:
        await grid_in.write(f.read())
        await grid_in.close()

    # Md example content
    file_id = ObjectId()
    content_2 = Content(id=file_id,
                        short="An example of md file.",
                        filetype="md")
    await Content.collection.insert_one(content_2.dict(by_alias=True))
    grid_in = mongo_engine.fs.open_upload_stream_with_id(
        file_id, "mdexample.pdf", metadata=content_2.dict(by_alias=True))
    with open("static/contents/mdexample.md", "rb") as f:
        await grid_in.write(f.read())
        await grid_in.close()

    inserted_nodes_result = await Node.collection.insert_many([
        {
            "short":
            f"node{i}",
            "contents": [
                # DBRef(**content_1.dict(by_alias=True)).dict(by_alias=True),
                content_1.id,
                content_2.id,
            ]
        } for i in range(10)
    ])
    # inserted_nodes_refs = [{"_id": _id, "collection_name": "nodes"} for _id in inserted_nodes_result.inserted_ids]
    inserted_groups_result = (await Group.collection.insert_many([{
        "short":
        "first",
        "nodes":
        inserted_nodes_result.inserted_ids[0:5]
    }, {
        "short":
        "second",
        "nodes":
        inserted_nodes_result.inserted_ids[3:97]
    }]))
    # inserted_groups_refs = [{"_id": _id, "collection_name": "groups"} for _id in inserted_groups_result.inserted_ids]
    User.collection.insert_many([
        {
            "email": "*****@*****.**",
            "password_hash": get_password_hash("pass"),
            "username": "",
            "groups": inserted_groups_result.inserted_ids,
        },
        {
            "email": "*****@*****.**",
            "password_hash": get_password_hash("pass"),
            "username": "",
            "groups": [],
            "is_admin": True,
        },
    ])