Skip to main content

MDocument

pipeline status coverage report pypi link

Simple DRM for async mongo motor client

Usage

import asyncio

from mdocument import Document

import motor.motor_asyncio

client = motor.motor_asyncio.AsyncIOMotorClient()

class Comment(Document):
    collection = "comments"
    database = "mdocument"
    client = client


class Video(Document):
    collection = "videos"
    database = "mdocument"
    client = client

    @Document.related(self_field="_id", other_field="video")
    def comments(self):
        pass

async def main():
    video = await Video.create(
        title="Test",
    )

    comment1 = await Comment.create(
        video=video._id,
        message="First!",
    )

    comment2 = await Comment.create(
        video=video._id,
        message="Second!"
    )

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

Now we can easily access our comments using our related documents

print(await video.comments)
[
    Comment(_id=5e7533d55eb6a8c6d24d3cc7, video=5e7533d55eb6a8c6d24d3cc6, message=First!),
    Comment(_id=5e7533d55eb6a8c6d24d3cc8, video=5e7533d55eb6a8c6d24d3cc6, message=Second!)
]

Document methods

Here is a list of Document basic methods

.create

@classmethod
async def create(cls, **kwargs):

If you want to create a new document you can do it easily with .create method. Example:

import asyncio

from mdocument import Document

import motor.motor_asyncio

client = motor.motor_asyncio.AsyncIOMotorClient()

class Message(Document):
    collection = "messages"
    database = "mdocument"
    client = client


loop.run_until_complete(
    Message.create(from_user="admin", text="Test message!")
)

This will create document in database:

{
    '_id': ObjectId('5e75373e5eb6a8c6d14d3ccd'),
    'from_user': 'admin',
    'text': "Test message!"
}

.push_update

Updates document and all @related fields.

await Message.push_update()

.delete

Deletion of document from database. Based on your set @related rules all related documents will be modified too.

message = await Message.one(from_user="admin")

await message.delete()

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mdocument-3.0.1590436924.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mdocument-3.0.1590436924-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file mdocument-3.0.1590436924.tar.gz.

File metadata

  • Download URL: mdocument-3.0.1590436924.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2

File hashes

Hashes for mdocument-3.0.1590436924.tar.gz
Algorithm Hash digest
SHA256 c1197b64bf8c114cf1937e27614e30b2b00451e7e8dd7572b6a5943875caaae3
MD5 6221fda96a5f9702153b77328eb6287e
BLAKE2b-256 5c21cc81802d7410226f59ac74790def4dbc8f7c20a5f4e0073e588fe2583f86

See more details on using hashes here.

File details

Details for the file mdocument-3.0.1590436924-py3-none-any.whl.

File metadata

  • Download URL: mdocument-3.0.1590436924-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2

File hashes

Hashes for mdocument-3.0.1590436924-py3-none-any.whl
Algorithm Hash digest
SHA256 61ead6feceaccf1cb2aa5042fd309736de4a1e496614c70372b91b7a2ba52e50
MD5 4313cb912a25e43d5151c398dfe1ce33
BLAKE2b-256 fcca797f0498ef9661a6bd21b3324763d075a4856c65f9fc3db3e03e4d2f20eb

See more details on using hashes here.

Release history Release notifications | RSS feed

4.0.1611942696

2 files

4.0.1611942618

2 files

4.0.1611941755

2 files

4.0.1610663369

2 files

3.0.1647176776

2 files

3.0.1595801911

2 files

3.0.1595701480

2 files

3.0.1592410567

2 files

3.0.1592349929

2 files

3.0.1592254420

2 files

3.0.1592083234

2 files

3.0.1591920385

2 files

This release

3.0.1590436924 This release

2 files

3.0.1590238503

2 files

3.0.1586563022

2 files

3.0.1586561692

2 files

3.0.1585480453

2 files

3.0.1585479864

2 files

3.0.1585444432

2 files

2.1.1585444647

2 files

2.1.1585431917

2 files

2.1.1585400186

2 files

2.1.1585339565

2 files

2.1.1585249863

2 files

2.1.1585186501

2 files

2.0.1585164327

2 files

2.0.1585164170

2 files

2.0.1585152707

2 files

2.0.1585145723

2 files

2.0.1585096896

2 files

2.0.1584903176

2 files

1.0.1584890051

2 files

1.0.1584886606

1 file

1.0.1584885381

1 file

1.0.1584884718

1 file

1.0.1584829858

1 file

1.0.1584829687

1 file

1.0.1584797184

1 file

1.0.1584796898

1 file

1.0.1584796579

1 file

1.0.1584794233

1 file

1.0.1584793540

1 file

1.0.1584793409

1 file

0.6.1585444356

1 file

0.6.1584791178

1 file

0.6.1584790699

1 file

0.6.1584789593

1 file

0.5.1585444358

1 file

0.5.1584793101

1 file

0.5.1584787952

1 file

0.5

1 file

0.4

1 file

0.3

1 file

0.2

1 file

0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page