Updates server script to activate env; fixes in model.
authordsc <david.schoonover@gmail.com>
Mon, 26 Dec 2011 12:45:20 +0000 (04:45 -0800)
committerdsc <david.schoonover@gmail.com>
Mon, 26 Dec 2011 12:45:20 +0000 (04:45 -0800)
bin/serve.py [deleted file]
bin/server [new file with mode: 0755]
crisishaiku/models.py
crisishaiku/views.py
data/report/docs/fcir.pdf [moved from data/report/fcir.pdf with 100% similarity]
data/report/docs/fcir.txt [moved from data/report/fcir.txt with 100% similarity]
data/report/docs/fcir_final_report_full.pdf [moved from data/report/fcir_final_report_full.pdf with 100% similarity]
data/report/report-toc.yaml [new file with mode: 0644]

diff --git a/bin/serve.py b/bin/serve.py
deleted file mode 100755 (executable)
index d96a0b8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-from crisishaiku import app
-app.run(debug=True)
diff --git a/bin/server b/bin/server
new file mode 100755 (executable)
index 0000000..5fbd96e
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+if [ -z "$VIRTUAL_ENV" ]; then
+    . .env/bin/activate
+fi
+python crisishaiku
index f8e0067..804f478 100644 (file)
@@ -1,16 +1,16 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 
+# __all__
+
 from sqlalchemy import (
     Table, Column, ForeignKey,
     Boolean, Enum, Binary, PickleType,
     Integer, SmallInteger, BigInteger, Float,
     String, Text, Unicode, UnicodeText,
     DateTime, Date, Time,
-    func, )
+    func, TypeDecorator, )
 from sqlalchemy.orm import relationship, backref, aliased
-from sqlalchemy.types import TypeDecorator, VARCHAR
-from sqlalchemy.ext.associationproxy import association_proxy
 import anyjson as json
 
 from crisishaiku import db
@@ -23,7 +23,7 @@ from crisishaiku import db
 
 class JSONData(TypeDecorator):
     "Type representing serialized JSON data."
-    impl = VARCHAR
+    impl = String
     
     def process_bind_param(self, value, dialect):
         if value is not None:
@@ -43,74 +43,6 @@ class TimestampMixin(object):
 
 ### Model Classes
 
-class Target(db.Model):
-    "A polymorphic pointer to a Comment, Haiku, or Section."
-    id = Column(Integer, primary_key=True)
-    section  = relationship('Section')
-    haiku    = relationship('Haiku')
-    comment  = relationship('Comment')
-    
-    @property
-    def value(self):
-        return self.section or self.haiku or self.comment
-
-
-class Section(db.Model):
-    "A chunk of the Report. May represent a chapter/section node, or a paragraph of text."
-    id        = Column(Integer, primary_key=True)
-    title     = Column(String(200))
-    text      = Column(Text())
-    parent_id = Column(Integer, ForeignKey('section.id'))
-    children  = relationship('Section', lazy='dynamic', backref=backref('parent',  lazy='dynamic'))
-    haikus    = relationship('Haiku',   lazy='dynamic', backref=backref('context', lazy='dynamic'))
-
-
-class Haiku(db.Model):
-    id         = Column(Integer, primary_key=True)
-    text       = Column(Text())
-    start      = Column(Integer) # character index into the section where this haiku begins
-    context_id = Column(Integer, ForeignKey('section.id'))
-
-
-# likes = db.Table('likes',
-#     Column('user_id',    Integer, ForeignKey('user.id')),
-#     Column('target_id',  Integer, ForeignKey('target.id')),
-# )
-
-class Like(db.Model):
-    id        = Column(Integer, primary_key=True)
-    target    = relationship('Target', lazy='dynamic')
-    user_id   = Column(Integer, ForeignKey('user.id'))
-    ctime     = Column(DateTime, default=func.now())
-
-
-class Comment(TimestampMixin, db.Model):
-    id        = Column(Integer, primary_key=True)
-    target    = relationship('Target', lazy='dynamic')
-    author_id = Column(Integer, ForeignKey('user.id'))
-    text      = Column(Text())
-    approved  = Column(Boolean, default=False) # spam filter approval
-    deleted   = Column(Boolean, default=False)
-
-
-haiku_tags = db.Table('haiku_tags',
-    Column('tag_id',    Integer, ForeignKey('tag.id')),
-    Column('haiku_id',  Integer, ForeignKey('haiku.id')),
-)
-
-class Tag(db.Model):
-    id        = Column(Integer, primary_key=True)
-    name      = Column(String(120), unique=True)
-    haikus    = relationship('Haiku', secondary=haiku_tags, lazy='dynamic', backref=backref('tags', lazy='dynamic'))
-
-
-# user_tags = db.Table('user_tags',
-#     Column('tag', String(120), unique=True),
-#     Column('user_id',   Integer, ForeignKey('user.id')),
-#     Column('haiku_id',  Integer, ForeignKey('haiku.id')),
-# )
-
-
 class User(TimestampMixin, db.Model):
     id        = Column(Integer, primary_key=True)
     username  = Column(String(30), unique=True)
@@ -125,15 +57,15 @@ class User(TimestampMixin, db.Model):
     # OAuth & OpenID accounts
     accounts = Column(JSONData())
     
-    # We can store the verification crap elsewhere
-    # verification_token = Column(String(60))
-    
-    likes    = relationship('Like',    lazy='dynamic', backref=backref('user',   lazy='dynamic'))
+    # likes    = relationship('Like',    lazy='dynamic', backref=backref('user',   lazy='dynamic'))
     comments = relationship('Comment', lazy='dynamic', backref=backref('author', lazy='dynamic'))
     
-    # disable per-user tag tracking
+    # per-user tag tracking disabled for now
     ## tags = relationship('UserTag', backref=backref('user', lazy='dynamic'))
     
+    # We can store the verification crap elsewhere (and ignore it for now)
+    # verification_token = Column(String(60))
+    
     
     def __init__(self, username, email):
         self.username = username
@@ -142,3 +74,74 @@ class User(TimestampMixin, db.Model):
     def __repr__(self):
         return '<User %r, %r>' % (self.username, self.email)
 
+
+# class Section(db.Model):
+#     "A chunk of the Report. May represent a chapter/section node, or a paragraph of text."
+#     id        = Column(Integer, primary_key=True)
+#     title     = Column(String(200))
+#     text      = Column(Text())
+#     parent_id = Column(Integer, ForeignKey('section.id'))
+#     children  = relationship('Section', lazy='dynamic', backref=backref('parent',  lazy='dynamic'))
+#     haikus    = relationship('Haiku',   lazy='dynamic', backref=backref('context', lazy='dynamic'))
+
+
+# class Haiku(db.Model):
+#     id         = Column(Integer, primary_key=True)
+#     text       = Column(Text())
+#     start      = Column(Integer) # character index into the section where this haiku begins
+#     context_id = Column(Integer, ForeignKey('section.id'))
+
+
+class Comment(TimestampMixin, db.Model):
+    id        = Column(Integer, primary_key=True)
+    # target    = relationship('Target', lazy='dynamic')
+    author_id = Column(Integer, ForeignKey('user.id'))
+    text      = Column(Text())
+    approved  = Column(Boolean, default=False) # spam filter approval
+    deleted   = Column(Boolean, default=False)
+
+
+
+
+# class Target(db.Model):
+#     "A polymorphic pointer to a Comment, Haiku, or Section."
+#     id = Column(Integer, primary_key=True)
+#     section  = relationship('Section')
+#     haiku    = relationship('Haiku')
+#     comment  = relationship('Comment')
+#     
+#     @property
+#     def value(self):
+#         return self.section or self.haiku or self.comment
+
+
+# likes = db.Table('likes',
+#     Column('user_id',    Integer, ForeignKey('user.id')),
+#     Column('target_id',  Integer, ForeignKey('target.id')),
+# )
+
+# class Like(db.Model):
+#     id        = Column(Integer, primary_key=True)
+#     target    = relationship('Target', lazy='dynamic')
+#     user_id   = Column(Integer, ForeignKey('user.id'))
+#     ctime     = Column(DateTime, default=func.now())
+
+
+# haiku_tags = db.Table('haiku_tags',
+#     Column('tag_id',    Integer, ForeignKey('tag.id')),
+#     Column('haiku_id',  Integer, ForeignKey('haiku.id')),
+# )
+
+# class Tag(db.Model):
+#     id        = Column(Integer, primary_key=True)
+#     name      = Column(String(120), unique=True)
+#     haikus    = relationship('Haiku', secondary=haiku_tags, lazy='dynamic', backref=backref('tags', lazy='dynamic'))
+
+
+# user_tags = db.Table('user_tags',
+#     Column('tag', String(120), unique=True),
+#     Column('user_id',   Integer, ForeignKey('user.id')),
+#     Column('haiku_id',  Integer, ForeignKey('haiku.id')),
+# )
+
+
index 11706a1..e58bdef 100644 (file)
@@ -6,7 +6,8 @@ from flask import (
     render_template, g, flash, send_from_directory, )
 from path import path
 
-from crisishaiku import app, db, crypt, twitter, models
+from crisishaiku import app, db, crypt, twitter
+# from crisishaiku.models import User, Haiku, Section, Comment, Like, Target
 
 STATIC = path(app.root_path)/'static'
 
@@ -34,7 +35,7 @@ def oauth_authorized(res):
     next_url = request.args.get('next') or url_for('index')
     if res is None:
         flash(u'You denied the request to sign in.')
-        return redirect(next_url)
+        return redirect('/login')
     
     session['twitter_token'] = (
         res['oauth_token'],
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..b458d1b2e3d71f6c4054bb5f639ed9f7f1f152ae
--- /dev/null
@@ -0,0 +1,26 @@
+title: The Financial Crisis Inquiry Report
+subtitle: Final Report of the National Commission on the Causes of the Financial and Economic Crisis in the United States
+text: null
+type: root
+toc:
+    title   : null
+    part    : null
+    chapter : null
+children:
+-   title: null
+    type: part
+    children:
+    -   title: Commissioners
+    -   title: Commissioner Votes
+    -   title: Commission Staff List
+    -   title: Preface
+-   title: Conclusions of the Financial Crisis Inquiry Commission
+    type: part
+-   title: Crisis on the Horizon
+    type: part
+    toc:
+        title: Part I: {title}
+        part: 1
+    children:
+    -   title: Before Our Very Eyes
+    
Simple merge