Metadata-Version: 1.1
Name: pymongodm
Version: 2.0.3
Summary: pymongodm
Home-page: https://github.com/GlobalStudioES/pymongodm
Author: GlobalStudio
Author-email: contacto@globalstudio.es
License: GPL
Description: pymongodm
        =========
        
        pymongodm is a odm respecting pymongo functionality and adds
        functionality such as model validation.
        
        change your current orm by pymongodb.
        
        Before:
        
        .. figure:: http://i.imgur.com/8TTqJ9h.jpg
           :alt: Imgur
        
           Imgur
        After:
        
        .. figure:: http://i.imgur.com/NDna9Wp.jpg
           :alt: Imgur
        
           Imgur
        https://pypi.python.org/pypi/pymongodm
        
        install
        -------
        
        ::
        
            pip install pymongodm
        
        connect db
        ----------
        
        \`\`\`python import pymongodm
        
        pymongodm.connect('name\_db') \`\`\`
        
        or
        
        \`\`\`python import pymongodm import pymongo
        
        db = pymongo.MongoClient()['name\_db'] pymongodm.connect(db) \`\`\`
        
        use db
        ------
        
        \`\`\`python import pymongodm
        
        pymongodm.connect('example\_db')
        
        # Identical to pymongo pymongodm.db.nice\_collection.insert({'name':
        'pepis'}) print(pymongodm.db.nice\_collection.find\_one()) \`\`\`
        
        use models!
        -----------
        
        In version 2.0.0 change schema validator to cerberus (http://python-cerberus.org)
        =================================================================================
        
        \`\`\`python import pymongodm pymongodm.connect("gstudio")
        
        from pymongodm.models import Base
        
        class User(Base): schema = {"name": {'type': 'string'}, "other":
        {'type': 'list', 'required': False}} # optional, default is class\_name
        + s collection\_name = "random\_name"
        
        ::
        
            def cut_name(self):
                return self.name[:3]
        
        insert
        ======
        
        result = User({'name': 'pepito'}) print("id in db", result.\_id)
        
        convert dict to object Model
        ============================
        
        a = User({'\ *id': result.*\ id, 'name': result.name}) b =
        User(result.getattrs()) # get attrs return only db attrs c =
        User(result.get\_clean()) # not return except arguments (exclude\_view )
        d = User.find\_one({'\ *id': result.*\ id}) # normal query
        
        convert result finds to model
        =============================
        
        results = pymongodm.db.users.find().model(User) # or results =
        User.collect.find().model(User) # or result = User(id) # or result =
        User.find()
        
        for result in results: print(result.\ *id) print(result.name)
        print(result.cut*\ name())
        
        Modify values
        =============
        
        results = pymongodm.db.users.find().model(User) for result in results:
        result.name = "Pymongodm\_%s" % result.name result.other = ["random",
        "info"] result.update()
        
        Remove
        ======
        
        result.remove()
        
        \`\`\`
        
        Models options
        ~~~~~~~~~~~~~~
        
        use other collection
        ^^^^^^^^^^^^^^^^^^^^
        
        by default the name of the collection is the name of the class + s. It
        can be changed with the following argument: collection =
        "encoding\_profiles"
        
        hidden arguments in returns
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        exclude\_view = ['name']
        
        Rewrite basic methods
        ---------------------
        
        Only need declare identic name in your class
        
        .. code:: python
        
             
            class User(Base):
                schema = {"name": {'type': 'string'},
                          "other": {'type': 'list', 'required': False}}
                # optional, default is class_name + s
                collection_name = "random_name"
        
                def remove(self):
                    print("uhm ...")
        
        Plugins
        =======
        
        create new Plugins
        ------------------
        
        .. code:: python
        
            from pymongodm.models.plugins import Plugin
        
        
            class new_schemaValidation(Plugin):
                def __check(self, query):
                    print(query.fields)  # all values
                    return {'success': False,
                            'errors': {'example': 'yep'}}
        
                def pre_create(self, query):
                    return self.__check(query)
        
                def pre_update(self, query):
                    return self.__check(query)
        
                def post_create(self, query):
                    pass
        
                def post_update(self, query):
                    pass
        
        use new plugin
        --------------
        
        .. code:: python
        
            class User(Base):
                plugins = [new_schemaValidation]
                schema = {"name": {'type': 'string'},
                          "other": {'type': 'list', 'required': False}}
        
        
        
        -  2.0.3 (23-05-2017)
        -  add find() and find\_one()
        
        -  2.0.2 (24-03-2017)
        -  support unset
        
        -  2.0.1 (6-02-2017)
        -  Hack support ObjectId
        -  Fix minor bugs
        
        -  2.0.0 (29-12-2016)
        -  (!!) Changed validation system to cerberus
           (http://python-cerberus.org) check README.md
        
        -  1.0.8 (12-12-2016)
        -  Support insert id by create method
        
        -  1.0.7 (03-12-2016)
        -  Avoid recursive validation (inspect\_recursive=False)
        
        -  1.0.6 (10-11-2016)
        -  Fix .model in find method
        
        -  1.0.5 (05-10-2016)
        -  Fix remove item
        
        -  1.0.4 (29-9-2016)
        -  support custom\_id
        
        -  1.0.3 (28-9-2016)
        -  automatic creation
        
        1.0.2 (18-7-2016)
        =================
        
        -  add method insert()
        
        1.0.1 (12-7-2016)
        =================
        
        -  remove prints
        
        1.0.0 (12-7-2016)
        =================
        
        -  auto\_get = True
        -  disable automatic discover cache
        -  if you use auto\_get = False must make a .get() to get the data in
           the class
        -  Add support Python 2
        
        0.1.0 (11-7-2016)
        =================
        
        -  Add collect property
        
        0.0.5 (11-7-2016)
        =================
        
        -  fix require=False and value None
        
        0.0.4 (6-6-2016)
        ================
        
        -  Update readme
        
        0.0.3 (6-6-2016)
        ================
        
        -  Update readme
        -  Fix minor bugs
        
        0.0.2 (3-6-2016)
        ================
        
        -  Fix pip install
        
        0.0.1 (3-6-2016)
        ================
        
        -  Initial version
        
        
Keywords: globalstudio,odm,mongo,pymongo
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
