location = db.Column(db.String(255)) company_id = db.Column(db.Integer, db.ForeignKey(Company.id), nullable=True) user = db.relationship(User, backref=db.backref("profile", remote_side=id, uselist=False, cascade="all, delete-orphan")) company = db.relationship(Company, backref=db.backref("staff")) user_group = db.Table( 'user_group', db.Model.metadata, db.Column('user_id', db.Integer, db.ForeignKey('user.id')), db.Column('group_id', db.Integer, db.ForeignKey('group.id'))) class Group(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(255), unique=True, nullable=False) users = db.relationship("User", secondary=user_group, backref=db.backref("groups", lazy='dynamic')) def __unicode__(self): return str(self.name) def __repr__(self):
from flaskext.sqlalchemy import SQLAlchemy import datetime import flask import hashlib import json app = flask.Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.db' db = SQLAlchemy(app) accounts = db.Table( 'accounts', db.Column('account_id', db.String(32), db.ForeignKey('account.id')), db.Column('user_id', db.Integer, db.ForeignKey('user.id')), db.UniqueConstraint('account_id', 'user_id')) class User(db.Model): __table_args__ = (db.UniqueConstraint('name', 'email'), ) #family_id = db.Column(db.Integer,db.ForeignKey('family.id')) id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) password = db.Column(db.String(32)) email = db.Column(db.String(80)) accounts = db.relationship('Account', secondary=accounts, backref=db.backref('users', lazy='dynamic')) def __init__(self, name, email, password): self.name = name self.email = email self.password = hashlib.md5(password).hexdigest()
from bookmark import app, settings import logging from werkzeug.security import generate_password_hash from flaskext.login import UserMixin db = SQLAlchemy(app) app.config['SQLALCHEMY_DATABASE_URI'] = settings.SQLALCHEMY_DATABASE_URI logging.basicConfig() logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO) tags = db.Table( 'bookmark_tag', db.Column('bookmark_id', db.Integer, db.ForeignKey('bookmark.id'), nullable=False), db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), nullable=False)) class Bookmark(db.Model): id = db.Column(db.Integer, primary_key=True) tags = db.relationship('Tag', secondary=tags, backref=db.backref('bookmarks', lazy='dynamic')) link = db.Column(db.String(255), unique=True) title = db.Column(db.String(100), nullable=False) description = db.Column(db.Text(), nullable=False) def __repr__(self):
def to_dict(self, summary=False): rv = { 'source': self.source, 'source_url': self.source_url, 'date': http_date(self.pub_date), 'developer': self.developer.to_dict(summary=True) } if not summary: rv['html_text'] = unicode(self.html_text) if self.source == 'twitter': rv['twitter_text'] = self.text return rv user_favorites = db.Table('user_favorites', db.Column('user_id', db.Integer, db.ForeignKey('user.user_id')), db.Column('message_id', db.Integer, db.ForeignKey('message.message_id')) ) class User(db.Model): """Represents a user on the website. A user can sign in with his steam ID and for as long as he is logged in a few extra functions unlock (such as favoring tweets and posts and to vote on them. """ id = db.Column('user_id', db.Integer, primary_key=True) steam_id = db.Column(db.String(80)) is_admin = db.Column(db.Boolean) favorites = db.dynamic_loader('Message', secondary=user_favorites, query_class=Message.query_class) nickname = db.Column(db.String(120))
bills_as_ower_number = db.session.query(billowers)\ .filter(billowers.columns.get("bill_id") == self.id)\ .count() return bills_as_ower_number != 0 or len(self.bills) != 0 def __str__(self): return self.name def __repr__(self): return "<Person %s for project %s>" % (self.name, self.project.name) # We need to manually define a join table for m2m relations billowers = db.Table( 'billowers', db.Column('bill_id', db.Integer, db.ForeignKey('bill.id')), db.Column('person_id', db.Integer, db.ForeignKey('person.id')), ) class Bill(db.Model): class BillQuery(BaseQuery): def get(self, project, id): try: return self.join(Person, Project)\ .filter(Bill.payer_id == Person.id)\ .filter(Person.project_id == Project.id)\ .filter(Project.id == project.id)\ .filter(Bill.id == id).one() except orm.exc.NoResultFound: return None