mirror of
https://github.com/kennethreitz-archive/fablib-api.git
synced 2026-06-05 15:20:17 +00:00
hey it works
This commit is contained in:
@@ -4,9 +4,12 @@ import os
|
||||
import hashlib
|
||||
|
||||
import boto
|
||||
from markdown import markdown
|
||||
from flask import Flask, request, abort, redirect
|
||||
from flask.ext.restful import Resource, Api, reqparse
|
||||
from markdown import markdown
|
||||
from flask.ext.sqlalchemy import SQLAlchemy
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
|
||||
|
||||
BUCKET_NAME = os.environ['BUCKET_NAME']
|
||||
DATABASE_URL = os.environ['DATABASE_URL']
|
||||
@@ -40,9 +43,11 @@ class Trunk(object):
|
||||
return text
|
||||
|
||||
app = Flask(__name__)
|
||||
app.debug=True
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = DATABASE_URL
|
||||
app.debug = True
|
||||
api = Api(app)
|
||||
trunk = Trunk(BUCKET_NAME)
|
||||
db = SQLAlchemy(app)
|
||||
|
||||
@app.route('/')
|
||||
def hello():
|
||||
@@ -52,19 +57,60 @@ todos = {}
|
||||
todos['1'] = 'yo'
|
||||
|
||||
|
||||
_user = {
|
||||
'name': 'kennethreitz',
|
||||
'email': 'me@kennethreitz.com',
|
||||
'password': 'xxxxx'
|
||||
}
|
||||
class BaseModel(object):
|
||||
def save(self):
|
||||
db.session.add(self)
|
||||
return db.session.commit()
|
||||
|
||||
_document = {
|
||||
'name': 'kennethreitz',
|
||||
'slug': 'emulators',
|
||||
'text': '# Emulators\n\nGames are fun.',
|
||||
'owner': 'kennethreitz'
|
||||
}
|
||||
class UserModel(db.Model, BaseModel):
|
||||
__tablename__ = 'users'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
email = db.Column(db.String(120), unique=True)
|
||||
username = db.Column(db.String(80), unique=True)
|
||||
password = db.Column(db.String(120), unique=False)
|
||||
|
||||
def __init__(self, username, email, password):
|
||||
self.username = username
|
||||
self.email = email
|
||||
self.set_password(password)
|
||||
|
||||
def __repr__(self):
|
||||
return '<User %r>' % self.username
|
||||
|
||||
def set_password(self, password):
|
||||
self.password = generate_password_hash(password)
|
||||
|
||||
def check_password(self, password):
|
||||
return check_password_hash(self.password, password)
|
||||
|
||||
@staticmethod
|
||||
def from_username(username):
|
||||
return UserModel.query.filter_by(username=username).first()
|
||||
|
||||
class DocumentModel(db.Model, BaseModel):
|
||||
__tablename__ = 'documents'
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
slug = db.Column(db.String(120))
|
||||
content = db.Column(db.String(80), unique=False)
|
||||
private = db.Column(db.Boolean, default=False)
|
||||
owner_id = db.Column(db.Integer, db.ForeignKey('users.id'))
|
||||
fork_of = db.Column(db.Integer, db.ForeignKey('documents.id'))
|
||||
|
||||
def __repr__(self):
|
||||
return '<Document %r>' % self.id
|
||||
|
||||
@property
|
||||
def forks(self):
|
||||
return DocumentModel.query.filter_by(fork_of=self).all()
|
||||
|
||||
def set_content(self, data):
|
||||
key = trunk.set(data)
|
||||
self.content = key
|
||||
|
||||
@staticmethod
|
||||
def from_keys(username, slug):
|
||||
user = UserModel.from_username(username)
|
||||
return DocumentModel.query.filter_by(owner_id=user.id, slug=slug).first()
|
||||
|
||||
|
||||
class UserProfile(Resource):
|
||||
@@ -83,7 +129,15 @@ api.add_resource(UserProfile, '/<string:profile>')
|
||||
|
||||
class Document(Resource):
|
||||
def get(self, profile, document):
|
||||
return {'user': _user, 'document': _document}
|
||||
u = UserModel.from_username(profile)
|
||||
# d = UserModel.from_username(profile)
|
||||
d = DocumentModel.from_keys(profile, document)
|
||||
content = trunk.get(d.content)
|
||||
|
||||
user = {'username': u.username, 'email': u.email}
|
||||
doc = {'text': content}
|
||||
|
||||
return {'user': user, 'document': doc}
|
||||
|
||||
def put(self, profile, document):
|
||||
todos[profile] = request.form['data']
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from flask.ext.script import Manager
|
||||
|
||||
from fablib import app, db
|
||||
|
||||
|
||||
manager = Manager(app)
|
||||
|
||||
@manager.command
|
||||
def syncdb():
|
||||
"""Initializes the database."""
|
||||
db.create_all()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
manager.run()
|
||||
@@ -1,6 +1,7 @@
|
||||
Flask==0.10.1
|
||||
Flask-RESTful==0.2.5
|
||||
Flask-SQLAlchemy==1.0
|
||||
Flask-Script==0.6.2
|
||||
Jinja2==2.7.1
|
||||
Markdown==2.3.1
|
||||
MarkupSafe==0.18
|
||||
|
||||
Reference in New Issue
Block a user