/
controllers.py
51 lines (40 loc) · 1.27 KB
/
controllers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# encoding: utf-8
"""
Example Flask APIServer app.
"""
from flask import Flask, request, abort, redirect
import apiserver as api
class Person(object):
def __init__(self, name):
self.name = name
def __unicode__(self):
return self.name
@property
def properties(self):
return self.__dict__
class PersonController(api.RESTController):
route = '/people/<name>'
realm = 'people'
def show(self, name):
user = request.environ["user"]
if name not in ['Stan', 'Linn', 'Joseph']:
abort(404)
output = Person(name)
# don't show personal information to any joe schmoe
if user.may_see(self, "restricted"):
output.sisters = [Person('Suzanne'), Person('Joanne')]
output.sisters[1].age = 33
output.classes = ['Anthropology', 'Econ 101']
return api.formatted_response(
output,
html_template='people/person.html',
formats=['json', 'yaml', 'html', 'xml']
)
def destroy(self):
return 'Goodbye world'
class PeopleController(api.RESTController):
route = '/people'
realm = 'people'
@api.requires(realm, "unrestricted")
def show(self):
return api.formatted_response({})