From: dsc Date: Mon, 26 Dec 2011 12:45:20 +0000 (-0800) Subject: Updates server script to activate env; fixes in model. X-Git-Url: http://git.less.ly:3516/?a=commitdiff_plain;h=3a0f3af673e89f778a57a9d38008d938437e30aa;p=crisishaiku.git Updates server script to activate env; fixes in model. --- diff --git a/bin/serve.py b/bin/serve.py deleted file mode 100755 index d96a0b8..0000000 --- a/bin/serve.py +++ /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 index 0000000..5fbd96e --- /dev/null +++ b/bin/server @@ -0,0 +1,6 @@ +#!/bin/bash + +if [ -z "$VIRTUAL_ENV" ]; then + . .env/bin/activate +fi +python crisishaiku diff --git a/crisishaiku/models.py b/crisishaiku/models.py index f8e0067..804f478 100644 --- a/crisishaiku/models.py +++ b/crisishaiku/models.py @@ -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 '' % (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')), +# ) + + diff --git a/crisishaiku/views.py b/crisishaiku/views.py index 11706a1..e58bdef 100644 --- a/crisishaiku/views.py +++ b/crisishaiku/views.py @@ -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'], diff --git a/data/report/fcir.txt b/data/report/docs/fcir.txt similarity index 100% rename from data/report/fcir.txt rename to data/report/docs/fcir.txt diff --git a/data/report/report-toc.yaml b/data/report/report-toc.yaml new file mode 100644 index 0000000..b458d1b --- /dev/null +++ b/data/report/report-toc.yaml @@ -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 +