Ejemplo n.º 1
0
class ScaledPhoto(db.Model):
    """
    Scale Photo Model

    A reference to a full-sized image that can be used to scale an image to fit
    a specific ratio

    Members:
        ID      - Scaled Photo unique identifier
        photo   - Reference to a full-sized photo
        topoff  - Offset from the top of the image in pixels
        leftoff - Offset from the left of the image in pixels
        ratio   - The expected ratio of the image to be scaled
    """

    __tablename__ = "scaledphoto"
    __bind_key__ = "blogdb"
    id = db.Column(db.Integer, primary_key=True)
    photo = db.Column(db.Integer, db.ForeignKey("photo.id"))
    topoff = db.Column(db.Integer)
    leftoff = db.Column(db.Integer)
    ratio = db.Column(db.String(10))

    def __init__(self, photo, topoff, leftoff, ratio):
        self.photo = photo
        self.topoff = topoff
        self.leftoff = leftoff
        self.ratio = ratio

    def __repr__(self):
        return "{0}:{1}".format(self.photo.filename, self.id)
Ejemplo n.º 2
0
class User(db.Model, UserMixin):
    """
    User Model

    User information for posters and commenters

    Members:
        ID    - Unique user identifier
        name  - Name of user
        email - Email of user (unique)
    """
    __tablename__ = "user"
    __bind_key__ = "blogdb"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    email = db.Column(db.String(100), unique=True)
    password = db.Column(db.String())
    active = db.Column(db.Boolean(), default=True)
    roles = db.relationship("Role",
                            secondary=roles_users,
                            backref=db.backref("users", lazy="dynamic"))

    def __init__(self, name, email, password, roles, active=True):
        self.name = name
        self.email = email
        self.password = password
        self.roles = roles
        self.active = active

    def __repr__(self):
        return self.name
Ejemplo n.º 3
0
class Photo(db.Model):
    """
    Photo Model

    A full-sized uploaded image

    Members:
        ID            - Photo unique identifier
        filename      - Location of the image
        scaled_photos - Children of the Photo which refers to a scaled version
                          of the image
    """
    __tablename__ = "photo"
    __bind_key__ = "blogdb"
    id = db.Column(db.Integer, primary_key=True)
    filename = db.Column(db.String(255), unique=True)
    description = db.Column(db.String(255))
    scaledphotos = db.relationship("ScaledPhoto")

    def __init__(self, filename, description=""):
        self.filename = filename
        self.description = description

    def __repr__(self):
        return self.filename
Ejemplo n.º 4
0
class Trip(db.Model):
    """
    Trip Model
    
    A trip refers to a collection of posts to a specific location or for a
    specific vacation or trip

    Members:
        ID          - Trip unique identifier
        posts       - list of posts that correspond to the trip
        location    - Location of the trip (a.k.a. title)
        start_date  - Beginning of the date range for the trip
        end_date    - End of the date range for the trip
        cover_image - Image to show off the trip
    """
    __tablename__ = "trip"
    __bind_key__ = "blogdb"
    id = db.Column(db.Integer, primary_key=True)
    posts = db.relationship("Post", lazy="dynamic")
    location = db.Column(db.String(255), unique=True)
    start_date = db.Column(db.DateTime())
    end_date = db.Column(db.DateTime())
    cover_image = db.Column(db.Integer, db.ForeignKey("photo.id"))

    def __init__(self, location, start_date, end_date, cover_image):
        self.location = location
        self.start_date = start_date
        self.end_date = end_date
        self.cover_image = cover_image

    def __repr__(self):
        return self.location
Ejemplo n.º 5
0
class Role(db.Model, RoleMixin):
    __tablename__ = "role"
    __bind_key__ = "blogdb"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), unique=True)
    description = db.Column(db.String(100))

    def __init__(self, name, description):
        self.name = name
        self.description = description

    def __str__(self):
        return self.name

    def __repr__(self):
        return self.name
Ejemplo n.º 6
0
class Comment(db.Model):
    """
    Comment Model

    Members:
        ID      - Comment unique identifier
        post    - Parent post that the comment belongs to
        user    - User that made the comment
        content - Content of the comment
    """
    __tablename__ = "comment"
    __bind_key__ = "blogdb"
    id = db.Column(db.Integer, primary_key=True)
    post = db.Column(db.Integer, db.ForeignKey("post.id"))
    content = db.Column(db.String(10000))
    user = db.Column(db.Integer, db.ForeignKey("user.id"))

    def __init__(self, post, content, user):
        self.post = post
        self.content = content
        self.user = user

    def __repr__(self):
        return "{0}: {1}".format(self.post.name, self.content[:25])
Ejemplo n.º 7
0
class Post(db.Model):
    """
    Post Model

    Content and photo information for a blog post

    Members:
        ID            - Unique post identifier
        post_date     - Original date when the post was created
        modified_date - Date of the most recent update
        title         - Title of the post
        state         - Post state (draft/published)
        tags          - Keywords for tagging the post
        trip          - Trip that post is associated with
        comments      - List of comments that are associated with the post
        content       - Actual post content
    """
    __tablename__ = "post"
    __bind_key__ = "blogdb"
    id = db.Column(db.Integer, primary_key=True)
    post_date = db.Column(db.DateTime())
    modified_date = db.Column(db.DateTime())
    title = db.Column(db.String(100))
    state = db.Column(ChoiceType(POST_STATES))
    trip = db.Column(db.Integer, db.ForeignKey("trip.id"))
    comments = db.relationship("Comment")
    content = db.Column(db.String())

    def __init__(self, title, trip, content):
        self.title = title
        self.trip = trip
        self.content = content
        self.post_date = datetime.datetime.now()

    def __repr__(self):
        return self.title
Ejemplo n.º 8
0
from flask_security import (UserMixin, RoleMixin)
from madapp import db
from sqlalchemy_utils.types import ChoiceType
import datetime

POST_STATES = {
    "DR": "Draft",
    "PU": "Published",
}

roles_users = db.Table("roles_users",
                       db.Column("user_id", db.Integer(),
                                 db.ForeignKey("user.id")),
                       db.Column("role_id", db.Integer(),
                                 db.ForeignKey("role.id")),
                       info={"bind_key": "blogdb"})


class Role(db.Model, RoleMixin):
    __tablename__ = "role"
    __bind_key__ = "blogdb"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), unique=True)
    description = db.Column(db.String(100))

    def __init__(self, name, description):
        self.name = name
        self.description = description

    def __str__(self):
        return self.name