Skip to main content

MDocument

pipeline status

coverage report

Simple DRM for async mongo motor client

Usage

import asyncio

from mdocument import Document, DatabaseClient

client1 = DatabaseClient(uri="localhost")

class Comment(Document):
    _collection_ = "comments"
    _database_ = "mdocument"
    _client_ = client1


class Video(Document):
    _collection_ = "videos"
    _database_ = "mdocument"
    _client_ = client1

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


loop = asyncio.get_event_loop()
Document.setup(loop, "localhost", "test_database")

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

async def create(cls, loop=None, update_immediately=False, **kwargs):

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

import asyncio

from mdocument import Document, DatabaseClient


class Message(Document):
    _collection_ = "messages"
    _database_ = "mdocument"
    _client_ = DatabaseClient(host="localhost")

Document.setup(loop, "localhost", "test_database")

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-2.1.1585186501.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

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

mdocument-2.1.1585186501-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mdocument-2.1.1585186501.tar.gz
  • Upload date:
  • Size: 7.4 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.1.3 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for mdocument-2.1.1585186501.tar.gz
Algorithm Hash digest
SHA256 929bbed2180aeb2175399518f22ab13ad161b9ac8b12294c873df2a68daa9e93
MD5 74cfd496795518f16a5894dae383715c
BLAKE2b-256 d5d7fc719383dec20997689c27495e448efc449491d0a79d715d966a9fc5b939

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mdocument-2.1.1585186501-py3-none-any.whl
  • Upload date:
  • Size: 8.0 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.1.3 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for mdocument-2.1.1585186501-py3-none-any.whl
Algorithm Hash digest
SHA256 4e0008836867303083d041eb91b45fb947bdf9696df244c690f31a6046096e82
MD5 38a1e69bf483e3cc0dd0db0c2a61e4d2
BLAKE2b-256 578d0c1f4424e893cad23eb0776ed043cc3012e80dbe64e08e2bac5086df23db

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

3.0.1590436924

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

This release

2.1.1585186501 This release

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