Decorate your project with some fashionable supermodels
Project description
fashionable
Decorate your project with some fashionable supermodels.
Model example
from typing import List, Optional
from fashionable import Attribute, Model
class Project(Model):
id = Attribute(str, limit=32)
name = Attribute(str)
organization = Attribute(Optional[str])
domain = Attribute(Optional[str])
links = Attribute(Optional[List[str]])
project = Project(1, 'Test')
Supermodel example with Sanic
from typing import List, Optional
from fashionable import Attribute, Supermodel
from sanic import Sanic
from sanic.response import json, HTTPResponse
app = Sanic()
app.db = ...
class Project(Supermodel):
_ttl = 300
id = Attribute(str, limit=32)
name = Attribute(str)
organization = Attribute(Optional[str])
domain = Attribute(Optional[str])
links = Attribute(Optional[List[str]])
@staticmethod
async def _create(raw: dict):
await app.db.project_create(raw)
@staticmethod
async def _get(id_: str) -> Optional[dict]:
return await app.db.project_get(id_)
@staticmethod
async def _update(id_: str, raw: dict):
await app.db.project_update(id_, raw)
@staticmethod
async def _delete(id_: str):
await app.db.project_delete(id_)
@app.get('/project/<id_>')
async def project_get(request, id_):
project = await Project.get(id_)
return json(dict(project))
@app.post('/project')
async def project_create(request):
project = await Project.create(**request.json)
return json(
dict(project),
status=201,
headers={'Location': '/project/' + project.id},
)
@app.put('/project/<id_>')
async def project_update(request, id_):
project = await Project.get(id_, fresh=True)
await project.update(**request.json)
return json(dict(project))
@app.delete('/project/<id_>')
async def project_delete(request, id_):
project = await Project.get(id_, fresh=True)
await project.delete()
return HTTPResponse(status=204)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
fashionable-0.10.0.tar.gz
(6.6 kB
view hashes)
Built Distribution
Close
Hashes for fashionable-0.10.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eed468f2a43caf3c325d127d95720a4e13353ac294afd193992f6ddf1e632896 |
|
MD5 | 9d08b077483c3702d43e0fdea72df9de |
|
BLAKE2b-256 | 69ee91e139b3f1f7974da8026fd74022512e437ab8a1bf18928b63997229c24d |