Skip to main content

MDocument

Simple DRM for async mongo motor client

Usage

import asyncio

from MDocument import Document

class Comment(Document):
    __collection__ = "comments"


class Video(Document):
    __collection__ = "videos"

    @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!)
]

Play from console

If you want changes made from console immediately you can use update_immediately argument

run = loop.run_until_complete

video = run(Video.create(update_immediately=True,
    title="Test"))
video.length = "1:10"

Now we can find that original document was changed

print(run(Video.collection.find_one({"length": "1:10"})))
{'_id': ObjectId('5e75373e5eb6a8c6d24d3cce'), 'title': 'Test', 'length': '1:10'}

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


class Message(Document):
    __collection__ = "messages"

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!"
}

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

Uploaded Source

File details

Details for the file MDocument-1.0.1584885381.tar.gz.

File metadata

  • Download URL: MDocument-1.0.1584885381.tar.gz
  • Upload date:
  • Size: 5.9 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.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for MDocument-1.0.1584885381.tar.gz
Algorithm Hash digest
SHA256 c4820c3e008f06f83a2e71e9bced49fcb963243e9803b774f11a1c7b640c76d8
MD5 f0419cfc176529df5ebd1770dfc6894a
BLAKE2b-256 9c06f040cc5f7b6e11f1b7426922d8e3b26a95cae8ee99bcc5d8ea76c4f341bb

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

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

This release

1.0.1584885381 This release

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