Skip to main content

Flask-RESTive extension to work with MongoDB.

Project description

# flask-restive-mongodb
Flask-RESTive extension to work with mongodb.

[![Build Status](https://travis-ci.org/left-join/flask-restive-mongodb.svg?branch=master)](https://travis-ci.org/left-join/flask-restive-mongodb)
[![Coverage Status](https://coveralls.io/repos/github/left-join/flask-restive-mongodb/badge.svg?branch=master)](https://coveralls.io/github/left-join/flask-restive-mongodb?branch=master)
[![Code Health](https://landscape.io/github/left-join/flask-restive-mongodb/master/landscape.svg?style=flat)](https://landscape.io/github/left-join/flask-restive-mongodb/master)
[![PyPI Version](https://img.shields.io/pypi/v/Flask-RESTive-MongoDB.svg)](https://pypi.python.org/pypi/Flask-RESTive-MongoDB)


## Installation

```bash
pip install flask-restive-mongodb
```

## How to use

```python
from datetime import datetime

import mongoengine as me
from flask import Flask
from flask_restive import Api, StorageResource, UUIDSchema, fields
from marshmallow import pre_load
from flask_restive_mongodb import Model, Storage


app = Flask(__name__)

app.config['MONGODB_DATABASE_URI'] = 'mongodb://localhost/local'


def utc_time():
return datetime.utcnow().replace(microsecond=0)


class ClientSchema(UUIDSchema):
first_name = fields.String(required=True)
last_name = fields.String(required=True)
created_on = fields.DateTime(
required=True,
missing=lambda: utc_time().isoformat())
updated_on = fields.DateTime()

class Meta(UUIDSchema.Meta):
sortable_fields = ('id', 'created_on', 'updated_on')
default_sorting = ('-updated_on', '-created_on', 'id')

@pre_load(pass_many=False)
def set_updated_on(self, data):
# update time stamp on each create/update operation
data['updated_on'] = utc_time().isoformat()
return data


class ClientModel(Model):
id = me.fields.UUIDField(primary_key=True)
first_name = me.fields.StringField()
last_name = me.fields.StringField()
created_on = me.fields.DateTimeField()
updated_on = me.fields.DateTimeField()


class ClientStorage(Storage):

class Meta(Storage.Meta):
model_cls = ClientModel
primary_key_fields = ('id',)


class ClientResource(StorageResource):
data_schema_cls = ClientSchema
storage_cls = ClientStorage


api = Api(app, prefix='/api/v1', api_resources=[
(ClientResource, ('/clients', '/clients/<uuid:id>')),
])


if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)

```


Project details


Download files

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

Source Distribution

Flask-RESTive-MongoDB-0.0.1.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

Flask_RESTive_MongoDB-0.0.1-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file Flask-RESTive-MongoDB-0.0.1.tar.gz.

File metadata

File hashes

Hashes for Flask-RESTive-MongoDB-0.0.1.tar.gz
Algorithm Hash digest
SHA256 b46d443f3fd9c6a0f1879602a0699bf5524ad2f888b865764924140b18d68f2b
MD5 aa1506086a7f3c7cc6cb82d9d38fec0f
BLAKE2b-256 886523b07e4dd4cfca2fc268fa44293b4ef3512a9b0b20c618c61282def5314d

See more details on using hashes here.

File details

Details for the file Flask_RESTive_MongoDB-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for Flask_RESTive_MongoDB-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 48008bdc7174d35bfb2509c5a1c8d1d34e4ec86a8549a29f832b62ea027a2d82
MD5 6cf73310a10dd3edb727c8340a70d22f
BLAKE2b-256 5da0e711e2dcde67c15f97aeb1aa18d3d10919b874c9a0176bf0cb6f4aad33f4

See more details on using hashes here.

Supported by

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