예제 #1
0
class Text(Field):

    __tablename__ = 'text'
    id = Column(db.ForeignKey("field.id"), primary_key=True)
    value = Column(db.String(200))

    __mapper_args__ = {"polymorphic_identity": "text"}
예제 #2
0
class Number(Field):

    __tablename__ = 'number'
    id = Column(db.ForeignKey("field.id"), primary_key=True)
    value = Column(db.Numeric())

    __mapper_args__ = {"polymorphic_identity": "number"}
예제 #3
0
class Color(Field):

    __tablename__ = 'color'
    id = Column(db.ForeignKey('field.id'), primary_key=True)
    color_code = Column(db.String(10))

    __mapper_args__ = {"polymorphic_identity": "color"}
예제 #4
0
class Select(Field):

    __tablename__ = 'select'
    id = Column(db.ForeignKey("field.id"), primary_key=True)
    selected_value = Column(db.String)
    possible_values = Column(db.JSON)

    __mapper_args__ = {"polymorphic_identity": "select"}
예제 #5
0
class Link(Field):

    __tablename__ = 'link'
    id = Column(db.ForeignKey('field.id'), primary_key=True)
    linked_space_id = reference_col('space', nullable=False)
    linked_space = relationship(
        'Space', backref=db.backref('link', uselist=False))

    __mapper_args__ = {"polymorphic_identity": "link"}
예제 #6
0
class Audio(Field):

    __tablename__ = 'audio'
    id = Column(db.ForeignKey("field.id"), primary_key=True)
    file_id = reference_col('file', nullable=True)
    file = relationship("File", backref=db.backref("audio", uselist=False))
    duration = Column(db.Integer)
    audio_format = Column(db.String(50))

    __mapper_args__ = {"polymorphic_identity": "audio"}
예제 #7
0
class Position(Field):

    __tablename__ = 'position'
    id = db.Column(db.ForeignKey("field.id"), primary_key=True)
    x = Column(db.Numeric(), default=0)
    y = Column(db.Numeric(), default=0)
    z = Column(db.Numeric(), default=0)
    w = Column(db.Numeric(), default=1)

    __mapper_args__ = {"polymorphic_identity": "position"}
예제 #8
0
class Image(Field):

    __tablename__ = 'image'
    id = Column(db.ForeignKey("field.id"), primary_key=True)
    file_id = reference_col('file', nullable=True)
    file = relationship("File", backref=db.backref("image", uselist=False))
    width = Column(db.Integer)
    height = Column(db.Integer)

    __mapper_args__ = {"polymorphic_identity": "image"}
예제 #9
0
class Object(Field):

    __tablename__ = 'object'
    id = Column(db.ForeignKey('field.id'), primary_key=True)
    folder = Column(db.String(512))
    object_filename = Column(db.String(100))
    thumbnail = Column(db.String(100))
    attribute = Column(db.String(200))

    __mapper_args__ = {"polymorphic_identity": "object"}
예제 #10
0
from flask_jwt_extended import current_user

from remixvr.database import (Model, SurrogatePK, db, reference_col,
                              relationship)

followers_assoc = db.Table(
    "followers_assoc",
    db.Column("follower", db.Integer, db.ForeignKey("userprofile.user_id")),
    db.Column("followed_by", db.Integer, db.ForeignKey("userprofile.user_id")))


class UserProfile(Model, SurrogatePK):
    __tablename__ = 'userprofile'

    # id is needed for primary join, it does work with SurrogatePK class
    id = db.Column(db.Integer, primary_key=True)

    user_id = reference_col('users', nullable=False, unique=True)
    user = relationship('User', backref=db.backref('profile', uselist=False))
    follows = relationship('UserProfile',
                           secondary=followers_assoc,
                           primaryjoin=id == followers_assoc.c.follower,
                           secondaryjoin=id == followers_assoc.c.followed_by,
                           backref='followed_by',
                           lazy='dynamic')

    def __init__(self, user, **kwargs):
        db.Model.__init__(self, user=user, **kwargs)

    def is_following(self, profile):
        return bool(
예제 #11
0
"""Project models."""

import datetime as dt
import uuid

from flask_jwt_extended import current_user
from slugify import slugify

from remixvr.database import (Model, SurrogatePK, relationship, reference_col,
                              Column, db)

from remixvr.profile.models import UserProfile

favoriter_assoc = db.Table(
    "favoritor_assoc",
    db.Column("favoriter", db.Integer, db.ForeignKey("userprofile.id")),
    db.Column("favorited_project", db.Integer, db.ForeignKey("project.id")))

tag_assoc = db.Table(
    "tag_assoc", db.Column("tag", db.Integer, db.ForeignKey("tags.id")),
    db.Column("project", db.Integer, db.ForeignKey("project.id")))


class Tags(Model):
    __tablename__ = 'tags'

    id = db.Column(db.Integer, primary_key=True)
    tagname = db.Column(db.String(100))

    def __init__(self, tagname):
        db.Model.__init__(self, tagname=tagname)