Пример #1
0
    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):
Пример #2
0
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()
Пример #3
0
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):
        return '<Bookmark (%d, %s %s) %s>' % (self.id, self.title, self.link,
Пример #4
0
    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))
Пример #5
0
        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