Skip to main content

Server side code to expose a datamodel for the flask-restless client

Project description

Build Status Codecov PyPI version

Purpose

This library is one part of a two part piece of code. It fulfills the server part to the flask-restless client. What it does is allow you to render your datamodel in a convenient JSON format. This JSON format is then read by the flask-restless-client, which in turn uses it to built itself, allowing for transparent access to your data model through HTTP.

Quickstart

Enabling this feature is as easy as registering an SQLAlchemy model in flask-restless. The only thing you need to do, is import the DataModel class from the library and use it to register your api.

import flask
import flask_restless
from flask_sqlalchemy import SQLAlchemy
from flask_restless_datamodel import DataModel
from my_models import Person, Computer, db

app = flask.Flask(__name__)
db = SQLAlchemy(app)

# Create a datamodel instance to register later
data_model = DataModel(manager)

manager = flask_restless.APIManager(app, flask_sqlalchemy_db=db)
manager.create_api(Person, methods=['GET'], include_columns=['name'])
manager.create_api(Computer, methods=['GET'], collection_name='compjutahs', exclude_columns=['name'])
manager.create_api(data_model, methods=['GET'])
# In case you want to expose the methods and properties as well
data_model.register_rpc_blueprint()

Which will expose an endpoint http://localhost:5000/flask-restless-datamodel which in turn will yield a result as followed

{
   "Computer":{
      "attributes":{
         "id":"integer",
         "owner_id":"integer",
         "owner_name":"unicode",
         "purchase_time":"datetime",
         "vendor":"unicode"
      },
      "collection_name":"compjutahs",
      "methods":{},
      "pk_name":"id",
      "relations":{
         "owner":{
            "backref":"computers",
            "foreign_model":"Person",
            "local_column":"owner_id",
            "relation_type":"MANYTOONE"
         },
         "peers":{
            "foreign_model":"Computer",
            "is_proxy":true,
            "relation_type":"MANYTOONE"
         }
      }
   },
   "Person":{
      "attributes":{
         "name":"unicode"
      },
      "collection_name":"person",
      "methods":{},
      "pk_name":"id",
      "relations":{

      }
   }
}

This result will be used by the client code to build models on the fly.

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-restless-datamodel-0.3.0.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

flask_restless_datamodel-0.3.0-py2.py3-none-any.whl (12.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file flask-restless-datamodel-0.3.0.tar.gz.

File metadata

File hashes

Hashes for flask-restless-datamodel-0.3.0.tar.gz
Algorithm Hash digest
SHA256 0eda27674f880da69401f104c580694fb5dc129d2717644806728420582e9f77
MD5 74e579bb4f8e638c7fe6b4afd3d6de83
BLAKE2b-256 dd56f911e651e3f339a6683449b82e61a32eb2ef35aa75c6399ca77439a6a6d2

See more details on using hashes here.

File details

Details for the file flask_restless_datamodel-0.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for flask_restless_datamodel-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5999e1a14bed6fd1037d7afb10f1af0c5b0f9c086fc87e49f244e75eb03247ad
MD5 f4b2900d94498f52085d7f8b818ee60c
BLAKE2b-256 d3420957e49b1a5d37cbe7d1d083b6595cdf2f8adfcb43fa0e1893560567add5

See more details on using hashes here.

Supported by

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