Skip to content

Instantly share code, notes, and snippets.

@techiev2
Last active December 23, 2015 06:29
Show Gist options
  • Save techiev2/6594407 to your computer and use it in GitHub Desktop.
Save techiev2/6594407 to your computer and use it in GitHub Desktop.
Model Controller
class Handler(RequestHandler, object):
"""
Base request handler overridden with required decorators and data
members.
"""
def set_default_headers(self, *args, **kwargs):
"""Set API handler default headers"""
super(Handler, self).set_default_headers(*args, **kwargs)
self.set_header("Access-Control-Allow-Origin", "*")
self.set_header('Access-Control-Allow-Methods',
'GET, POST, PUT, DELETE, OPTIONS')
def __init__(self, *args, **kwargs):
"""
Handler init.
"""
super(Handler, self).__init__(*args, **kwargs)
self.req_args = {x:y[0].split(',') if len(y) == 1 else [] if
len(y) == 0 else y for x, y in
self.request.arguments.iteritems()}
self.view = BaseView(self)
self.data, self.user, self.response, self.query_data = \
None, None, None, {}
if self.request.method in ['GET', 'PUT', 'POST']:
self.data = serialize(self.request.body)
# if self.request.uri not in ['/', '/register/']:
# self.token = self.request.headers.get('X-Signature')
# if self.token:
# self.algo, self.token = self.token.split('=')
# self.user = QueryObject(model='User',
# query={'token': str(self.token)})
# self.user = self.user.result[0] if \
# self.user.count == 1 else None
# if not self.user:
# self._transforms = []
# self.view.raise_error(401)
if not self.request.method in self.SUPPORTED_METHODS:
self._transforms = []
self.view.raise_error(405)
# Add decorators here
def get(self, *args, **kwargs):
"""
HTTP GET Request handler method.
"""
pass
# Add decorators here
def post(self, *args, **kwargs):
"""
HTTP POST Request handler method.
"""
pass
class UserController(Handler, object):
"""User controller"""
def __init__(self, *args, **kwargs):
"""Users controller init"""
self.model = 'UserDocument'
setattr(self, 'SUPPORTED_METHDOS', ('GET', 'PUT', 'POST', 'DELETE'))
super(UserController, self).__init__(*args, **kwargs)
self.as_json = True
self.template_file = 'user.html'
def get(self, *args, **kwargs):
self.path_kwargs = {} if not self.path_kwargs.get(
'username') else self.path_kwargs
u = QueryObject(self, self.model, self.path_kwargs)
self.view.render()
def put(self, *args, **kwargs):
self.path_kwargs = {} if not self.path_kwargs.get(
'username') else self.path_kwargs
if not self.path_kwargs:
self.response = {'status_code': 412}
self.view.as_json()
return
QueryObject(self, self.model,
self.path_kwargs).update(self.data)
self.view.as_json()
def post(self, *args, **kwargs):
u = CreateObject(self, 'UserDocument', self.data)
self.view.as_json()
def delete(self, *args, **kwargs):
self.response = QueryObject(self,
self.model,
self.path_kwargs).delete()
self.view.as_json()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment