Skip to main content

Easily build a webservice API on top of a cubic web database"

Project description

Summary

Easily build a webservice API on top of a cubic web database

Types

To build a wsme structure type that match an entity type:

from cubes.wsme.types import Base, wsattr

class CWUser(Base):
    login = wsattr('login', datatype=wsme.types.text)
    password = wsattr('upassword', datatype=wsme.types.text)

    in_group = wsattr('in_group', datatype=['CWGroup'])

class CWGroup(Base):
    name = wsattr('name', datatype=wsme.types.text)

    users = wsattr('in_group', role='subject', datatype=[CWUser])


def register_callback(vreg):
    CWUser.reginit(vreg)
    CWGroup.reginit(vreg)

# ...
user = req.find('CWUser', login=u"admin")
ws_user = CWUser(user, fetch=['in_group'])

assert ws_user.in_group[0].name == user.in_group[0].name

Query

Filter format

The filter format is partially inspired by https://www.parse.com/docs/rest#queries

operators

Key Operation ltLessThanlte Less Than Or Equal To gtGreaterThangte Greater Than Or Equal To neNotEqualToin Contained In ninNotContainedinor Or $and And

Filter attribute

Exact match:

{'attrname': value}

Other comparisons:

{'attrname': {'$op': value, '$op2': othervalue}}

Use and/or:

{'$or': {'attrname': value, 'attr2name': value}}
{'$or': [
    {'attrname': value},
    {'attrname': {
        '$in': [1, 2, 3]}}]}

Filter relations

If comparing by eid, same as attribute

Exact match:

{'relname': eid}

Other:

{"relname": {"$op": eid}}

Filter on relation target attributes/relations:

{"relname": <entity filter>}

{"relname": {"attrname": value}}

{"relname": {"$or": {"attrname": value, "attr2name": ovalue}}}

Supported by

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