{ "info": { "author": "Anton Kasyanov", "author_email": "antony.kasyanov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python", "Topic :: Database", "Topic :: Software Development :: Libraries" ], "description": "===========\r\nMiongo\r\n===========\r\n\r\nYet another MongoDB ORM for Python.\r\nSignals included!\r\n\r\n(Note: signals can be used independently from miongo models)\r\n\r\nStill in development, feedback is highly appreciated.\r\n\r\n\r\nUsage Examples\r\n==============\r\n\r\nInstallation::\r\n\r\n pip install miongo\r\n\r\nModels\r\n-------------\r\n\r\nHere's a simple example of model usage::\r\n\r\n #!/usr/bin/env python\r\n import pymongo\r\n from miongo import models\r\n\r\n # this is always required\r\n # mingo do not implement mongodb connection, you should do that\r\n models.mongodb_database = pymongo.MongoClient().test_database\r\n\r\n\r\n class TestModel(models.Model):\r\n _collection = 'testmodel'\r\n\r\n uid = models.Field()\r\n name = models.Field()\r\n enabled = models.Field(default=True)\r\n\r\n # creating and saving\r\n model = TestModel()\r\n model.uid = 1\r\n model.name = 'Antony'\r\n model.save()\r\n\r\n # finding in db\r\n model = TestModel()\r\n model.find({'uid': 1})\r\n print model.uid # 1\r\n print model.name # Antony\r\n print model.enabled # True\r\n\r\nSignals\r\n-------\r\nSignals can be used independently with your models too! Just use `signals.SignalEmitterMixin`, specify `AVAILABLE_SIGNALS` and call `self.emit_signal(signal_type)` to fire a signal when needed.\r\n\r\nHere's an example of implementing before and after save signals::\r\n\r\n #!/usr/bin/env python\r\n import pymongo\r\n from miongo import signals, models\r\n\r\n models.mongodb_database = pymongo.MongoClient().test_database\r\n\r\n # signals.SignalEmitterMixin is important here\r\n # it also can be used with other model classes\r\n class TestModel(models.Model, signals.SignalEmitterMixin):\r\n _collection = 'testmodel'\r\n\r\n BEFORE_SAVE = 0\r\n AFTER_SAVE = 1\r\n AVAILABLE_SIGNALS = [BEFORE_SAVE, AFTER_SAVE]\r\n\r\n name = models.Field()\r\n\r\n def save(self):\r\n self.emit_signal(self.BEFORE_SAVE)\r\n print 'Saving now!'\r\n super(TestModel, self).save()\r\n self.emit_signal(self.AFTER_SAVE)\r\n\r\n # let's define function that will be used by signal\r\n # you may use instance to modify object\r\n def signal_function(signal_type, instance):\r\n if signal_type == TestModel.BEFORE_SAVE:\r\n print 'Before save'\r\n elif signal_type == TestModel.AFTER_SAVE:\r\n print 'After save'\r\n\r\n model = TestModel()\r\n\r\n TestModel.connect_to_signal(TestModel.BEFORE_SAVE, signal_function)\r\n TestModel.connect_to_signal(TestModel.AFTER_SAVE, signal_function)\r\n\r\n model.save()\r\n\r\n # output is:\r\n #\r\n # Before save\r\n # Saving now!\r\n # After save\r\n\r\n(Note signals can be connected to the instance too)\r\n\r\nCredits\r\n=======\r\n\r\nAuthor:\r\nAnton Kasyanov (antony.kasyanov@gmail.com)\r\n\r\nSpecial thanks to:\r\nRuslan Didyk, Igor Emelyanov", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mind1master/miongo", "keywords": "mongo, mongodb, orm, signals", "license": "MIT/X11 license http://opensource.org/licenses/MIT", "maintainer": "", "maintainer_email": "", "name": "miongo", "package_url": "https://pypi.org/project/miongo/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/miongo/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/mind1master/miongo" }, "release_url": "https://pypi.org/project/miongo/0.1.1/", "requires_dist": null, "requires_python": null, "summary": "Yet another MongoDB ORM for Python. Signals included!", "version": "0.1.1" }, "last_serial": 910890, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e8d5ac14881508eb139cacd43c20d5e6", "sha256": "4d80700b46bab58bffb26afccbcac19532ff7705a1e2f33f0a226719895de7b0" }, "downloads": -1, "filename": "miongo-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e8d5ac14881508eb139cacd43c20d5e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4895, "upload_time": "2013-11-04T10:02:21", "url": "https://files.pythonhosted.org/packages/9b/0e/e0221daea6c34235880ee6187d9376ba139193add67079ea650603fa7fd6/miongo-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "667627f823c228fcafe1baf46267c7b0", "sha256": "4e06abf693d79906e420d1ad903e2686b77eb2ee4f92fd8dfc458543d3346f43" }, "downloads": -1, "filename": "miongo-0.1.1.tar.gz", "has_sig": false, "md5_digest": "667627f823c228fcafe1baf46267c7b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4911, "upload_time": "2013-11-04T10:05:32", "url": "https://files.pythonhosted.org/packages/af/ba/bac5bc99a1dce8ab4d321e253c07d0509a3b797c4a31b78112e57e3afa0e/miongo-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "667627f823c228fcafe1baf46267c7b0", "sha256": "4e06abf693d79906e420d1ad903e2686b77eb2ee4f92fd8dfc458543d3346f43" }, "downloads": -1, "filename": "miongo-0.1.1.tar.gz", "has_sig": false, "md5_digest": "667627f823c228fcafe1baf46267c7b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4911, "upload_time": "2013-11-04T10:05:32", "url": "https://files.pythonhosted.org/packages/af/ba/bac5bc99a1dce8ab4d321e253c07d0509a3b797c4a31b78112e57e3afa0e/miongo-0.1.1.tar.gz" } ] }