From 2848308a86e58cf227568aea9a3a21ae6537cd77 Mon Sep 17 00:00:00 2001
From: "Sachin S. Kamath" <sskamath96@gmail.com>
Date: Thu, 19 Oct 2017 15:59:30 +0530
Subject: [PATCH] Define basic controller and add flask_api boilerplate

Signed-off-by: Sachin S. Kamath <sskamath96@gmail.com>
---
 hodor/api/__init__.py     |  0
 hodor/api/user.py         | 12 ++++++++++++
 hodor/app.py              | 21 +++++++++++++++++++++
 hodor/controllers/user.py | 14 ++++++++++++++
 hodor/models/user.py      | 39 +++++++++++++++++++++++++++++++++++++++
 manage.py                 | 15 +++++++++++++++
 6 files changed, 101 insertions(+)
 create mode 100644 hodor/api/__init__.py
 create mode 100644 hodor/api/user.py
 create mode 100644 hodor/app.py
 create mode 100644 hodor/controllers/user.py
 create mode 100644 hodor/models/user.py
 create mode 100644 manage.py

diff --git a/hodor/api/__init__.py b/hodor/api/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/hodor/api/user.py b/hodor/api/user.py
new file mode 100644
index 0000000..2075c09
--- /dev/null
+++ b/hodor/api/user.py
@@ -0,0 +1,12 @@
+from hodor.app import api
+from flask_restplus import Resource
+
+ns = api.namespace('/users', description='Operations related to blog posts')
+
+@ns.route('/users')
+class listusers(Resource):
+    def get(self):
+        return {'user': 'noob'}
+
+
+api.add_resource(listusers, '/users')
\ No newline at end of file
diff --git a/hodor/app.py b/hodor/app.py
new file mode 100644
index 0000000..0f402ea
--- /dev/null
+++ b/hodor/app.py
@@ -0,0 +1,21 @@
+from flask import Flask, request
+from flask_restplus import Resource, Api
+from api.user import ns as user_namespace
+
+app = Flask(__name__)
+api = Api(app)
+
+todos = {}
+
+@api.route('/<string:todo_id>')
+class TodoSimple(Resource):
+    def get(self, todo_id):
+        return {todo_id: todos[todo_id]}
+
+    def put(self, todo_id):
+        todos[todo_id] = request.form['data']
+        return {todo_id: todos[todo_id]}
+
+api.add_namespace(user_namespace)
+if __name__ == '__main__':
+    app.run(debug=True)
\ No newline at end of file
diff --git a/hodor/controllers/user.py b/hodor/controllers/user.py
new file mode 100644
index 0000000..82f68d5
--- /dev/null
+++ b/hodor/controllers/user.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+from hodor import app
+from flask import jsonify
+
+
+@app.route('/')
+def start():
+    return jsonify({'hello':'world'})
+
+
+@app.route('/print', methods=['GET', 'POST'])
+def printer():
+    form = {'noob' : 'shit'}
+    return form
diff --git a/hodor/models/user.py b/hodor/models/user.py
new file mode 100644
index 0000000..c74526c
--- /dev/null
+++ b/hodor/models/user.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+from hodor import db
+
+class User(db.Model):
+    __tablename__ = 'users'
+
+    # Values entered by the user
+    username = db.Column(db.String(32), primary_key=True)
+    first_name = db.Column(db.String(32), nullable=False)
+    last_name = db.Column(db.String(32), nullable=False)
+    email = db.Column(db.String(64), unique=True, nullable=False)
+    password = db.Column(db.String(64), nullable=False)
+
+    # Platform values
+    disabled = db.Column(db.Boolean, default=False)
+    verified_account = db.Column(db.Boolean, default=False)
+    verification_code = db.Column(db.String(32), nullable=False)
+
+    def __unicode__(self):
+        return unicode(self.username)
+
+    def __init__(self, name):
+        """initialize with name."""
+        self.name = name
+
+    def save(self):
+        db.session.add(self)
+        db.session.commit()
+
+    @staticmethod
+    def get_all():
+        return User.query.all()
+
+    def delete(self):
+        db.session.delete(self)
+        db.session.commit()
+
+    def __repr__(self):
+        return "<User: {}>".format(self.name)
\ No newline at end of file
diff --git a/manage.py b/manage.py
new file mode 100644
index 0000000..e3f8d3f
--- /dev/null
+++ b/manage.py
@@ -0,0 +1,15 @@
+import os
+from flask_script import Manager # class for handling a set of commands
+from flask_migrate import Migrate, MigrateCommand
+from hodor import db, create_app
+from hodor.models.user import User
+
+app = create_app(config_name='development')
+
+migrate = Migrate(app, db)
+manager = Manager(app)
+
+manager.add_command('db', MigrateCommand)
+
+if __name__ == '__main__':
+    manager.run()
-- 
GitLab