hey it works

This commit is contained in:
Kenneth Reitz
2013-08-16 03:12:41 -04:00
parent 35ae5cfa61
commit 86c83e2f7f
3 changed files with 87 additions and 14 deletions
+68 -14
View File
@@ -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']
Executable
+18
View File
@@ -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
View File
@@ -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