Ejemplo n.º 1
0
from datetime import datetime
from blog import db
from blog.posts.utils import slugify

post_tags = db.Table(
    'post_tags', db.Column('post_id', db.Integer, db.ForeignKey('post.id')),
    db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')))


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(140))
    slug = db.Column(db.String(140), unique=True)
    body = db.Column(db.Text)
    created = db.Column(db.DateTime, default=datetime.now())
    tags = db.relationship('Tag',
                           secondary=post_tags,
                           backref=db.backref('posts', lazy='dynamic'))

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.generate_slug()

    def generate_slug(self):
        if self.title:
            self.slug = slugify(self.title)

    def __repr__(self):
        return f'<Post id: {self.id}, title: {self.title}>'

Ejemplo n.º 2
0
                add_to_index(obj.__tablename__, obj)
        for obj in session._changes['delete']:
            if isinstance(obj, SearchableMixin):
                remove_from_index(obj.__tablename__, obj)
        session._changes = None

    @classmethod
    def reindex(cls):
        for obj in cls.query:
            add_to_index(cls.__tablename__, obj)


db.event.listen(db.session, 'before_commit', SearchableMixin.before_commit)
db.event.listen(db.session, 'after_commit', SearchableMixin.after_commit)
followers = db.Table(
    'followers', db.Column('follower_id', db.Integer,
                           db.ForeignKey('user.id')),
    db.Column('followed_id', db.Integer, db.ForeignKey('user.id')))


class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    posts = db.relationship('Post', backref='author', lazy='dynamic')
    about_me = db.Column(db.String(140))
    last_seen = db.Column(db.DateTime, default=datetime.utcnow)
    followed = db.relationship('User',
                               secondary=followers,
                               primaryjoin=(followers.c.follower_id == id),
                               secondaryjoin=(followers.c.followed_id == id),
Ejemplo n.º 3
0
from blog import db
from werkzeug.security import generate_password_hash, check_password_hash
from blog import login_manager
from flask_login import UserMixin


@login_manager.user_loader
def load_user(user_id):
    return User.query.get(user_id)


user_favorite_post = db.Table(
    'user-favorite-post',
    db.Column('user_id',
              db.Integer,
              db.ForeignKey('user.id'),
              primary_key=True),
    db.Column('post_id',
              db.Integer,
              db.ForeignKey('posts.id'),
              primary_key=True))


class User(UserMixin, db.Model):

    __tablename__ = 'user'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(32), unique=True)
    email = db.Column(db.String(64), unique=True, nullable=False)
    password_hash = db.Column(db.String(256))
Ejemplo n.º 4
0
"""These are the models for the blog"""
from datetime import date

from blog import app, bcrypt, db

# Medium object for creating the many-to-many relationship between tags and posts
tags = db.Table('tags',
                db.Column('tag_slug', db.String, db.ForeignKey('tag.slug')),
                db.Column('post_slug', db.String, db.ForeignKey('post.slug')))


class Post(db.Model):
    """
    A post on the blog

    :key slug: Slug of this post (KEY)
    :key date: Date of this post
    :key title: Title of this post
    :key lead: The first two sentences of the post for display on selection pages
    :key body_md: Markdown version of this post
    :key body_html: HTML version of this post (generated automatically from markdown)
    :key css_file: Optional name of the custom css file (optional)
    :key js_file: Optional name of the custom css file (optional)
    :key user_shortname: Shortname of the user who posted this
    :key user: User who posted this
    :key tags: Tags for this post
    """
    slug = db.Column(db.String, primary_key=True)
    date = db.Column(db.Date, default=date.today())
    title = db.Column(db.String)
    lead = db.Column(db.Text)
Ejemplo n.º 5
0
from blog import db

from flask_login import UserMixin

from sqlalchemy.sql import func

from werkzeug.security import check_password_hash, generate_password_hash

# Like association table
likes = db.Table(
    "likes",
    db.Column("user_id",
              db.Integer,
              db.ForeignKey("user.id"),
              primary_key=True),
    db.Column("post_id",
              db.Integer,
              db.ForeignKey("post.id"),
              primary_key=True),
)

# Save association table
saves = db.Table(
    "saves",
    db.Column("user_id",
              db.Integer,
              db.ForeignKey("user.id"),
              primary_key=True),
    db.Column("post_id",
              db.Integer,
Ejemplo n.º 6
0
from datetime import datetime
from blog import db, login_manager
from werkzeug.security import generate_password_hash, check_password_hash
from flask_login import UserMixin

#reference for the many to many relationship method
#date accessed 12/02/2021
#https://www.youtube.com/watch?v=OvhoYbjtiKc
#https://flask-sqlalchemy.palletsprojects.com/en/2.x/models/
#fave posts table
favs = db.Table('favs',
                db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
                db.Column('post_id', db.Integer, db.ForeignKey('post.id')))

likes = db.Table('likes',
                 db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
                 db.Column('post_id', db.Integer, db.ForeignKey('post.id')))


#class for post model in database
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    title = db.Column(db.Text, nullable=False)
    content = db.Column(db.Text, nullable=False)
    image_file = db.Column(db.String(40),
                           nullable=False,
                           default='default.jpg')
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    tag = db.Column(db.Text, nullable=True)
Ejemplo n.º 7
0
from blog import db, login_manager
from flask_login import UserMixin

followers = db.Table(
    'followers', db.Column('id', db.Integer, primary_key=True),
    db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
    db.Column('follower_id', db.Integer, db.ForeignKey('user.id')))


class User(UserMixin, db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), nullable=False, unique=True)
    email = db.Column(db.String(50), nullable=False, unique=True)
    password = db.Column(db.String(500), nullable=False)
    firstname = db.Column(db.String(50), default='Firstname')
    lastname = db.Column(db.String(50), default='Lastname')
    city = db.Column(db.String(50), default='Moscow')
    birthdate = db.Column(db.String(50), nullable=True, default='1990-01-01')
    gender = db.Column(db.String(50), default='Male')
    is_confirmed = db.Column(db.Boolean, nullable=False, default=False)

    registration_date = db.Column(db.DateTime, nullable=True)
    userpic = db.Column(db.String(30), default='default.jpg')

    followers_qty = db.Column(db.Integer, default=0)

    posts = db.relationship('Post',
                            backref='user',
                            cascade="all, delete",
                            lazy='dynamic')
Ejemplo n.º 8
0
from blog import db,app
from datetime import datetime
from blog import login_manager
from flask_login import UserMixin
from flask_security import Security, SQLAlchemyUserDatastore,UserMixin, RoleMixin
from flask_security.forms import RegisterForm
from wtforms.validators import ValidationError

from wtforms import StringField

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))
#Roles And User Relationship
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')))
#Role For Admin
class Role(db.Model, RoleMixin):
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(80), unique=True)
    description = db.Column(db.String(255))

class User(db.Model,UserMixin):
    id=db.Column(db.Integer,primary_key=True)
    username=db.Column(db.String(20),unique=True)
    email=db.Column(db.String(120),unique=True,nullable=False)
    image=db.Column(db.String(20),nullable=False,default='zero.jpg')
    password=db.Column(db.String(60),nullable=False)
    active = db.Column(db.Boolean())
    confirmed_at = db.Column(db.DateTime())
    roles = db.relationship('Role', secondary=roles_users,backref=db.backref('users', lazy='dynamic'))
    def __repr__(self):
Ejemplo n.º 9
0
from blog import db, login_manager
from datetime import datetime
from flask_login import UserMixin

@login_manager.user_loader
def load_user(user_id):
    return Race.query.get(int(user_id))

linksag=db.Table('linksag',
            db.Column('activity_id', db.Integer, db.ForeignKey('activity.id'), nullable=False),
            db.Column('gruppo_id', db.Integer, db.ForeignKey('gruppo.id'), nullable=False)
)

linksgm=db.Table('linksgm',
            db.Column('marshal_id', db.Integer, db.ForeignKey('marshal.id'), nullable=False),
            db.Column('gruppo_id', db.Integer, db.ForeignKey('gruppo.id'), nullable=False)
)

linksar=db.Table('linksar',
            db.Column('activity_id', db.Integer, db.ForeignKey('activity.id'), nullable=False),
            db.Column('routine_id', db.Integer, db.ForeignKey('routine.id'), nullable=False)
)

linksgr=db.Table('linksgr',
            db.Column('gruppo_id', db.Integer, db.ForeignKey('gruppo.id'), nullable=False),
            db.Column('routine_id', db.Integer, db.ForeignKey('routine.id'), nullable=False)
)

linksgp=db.Table('linksgp',
            db.Column('gruppo_id', db.Integer, db.ForeignKey('gruppo.id'), nullable=False),
Ejemplo n.º 10
0
# -*- coding: utf-8 -*-
__author__ = 'Administrator'

import datetime
import re

from blog import db
from blog import login_manager, bcrypt


def slugify(s):
    return re.sub('[^\w]+', '-', s).lower()


entry_tags = db.Table(
    'entry_tags', db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
    db.Column('entry_id', db.Integer, db.ForeignKey('entry.id')))


class Entry(db.Model):
    __tablename__ = 'entry'
    STATUS_PUBLIC = 0
    STATUS_DRAFT = 1
    STATUS_DELETED = 2

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100))
    slug = db.Column(db.String(100), unique=True)
    body = db.Column(db.Text)
    status = db.Column(db.SmallInteger, default=STATUS_PUBLIC)
    created_timestamp = db.Column(db.DateTime,
Ejemplo n.º 11
0
from hashlib import md5
from time import time

from bcrypt import checkpw, gensalt, hashpw
from flask import current_app
from flask_security import RoleMixin, UserMixin
import jwt

from blog import db


# M2M links between Users and Roles
user_role = db.Table(
    "user_role",
    db.Column("user_id", db.Integer, db.ForeignKey("user.id",
                                                   ondelete="CASCADE")),
    db.Column("role_id", db.Integer, db.ForeignKey("role.id",
                                                   ondelete="CASCADE"))
)


class User(db.Model, UserMixin):
    """User model"""

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(64), unique=True)
    fullname = db.Column(db.String(64))
    birthday = db.Column(db.Date)
    sex = db.Column(db.String(1))
    password = db.Column(db.String(64))
    active = db.Column(db.Boolean)
Ejemplo n.º 12
0
from datetime import datetime
from blog import db

tags = db.Table(
    'tags',
    db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True),
    db.Column('post_id',
              db.Integer,
              db.ForeignKey('post.id'),
              primary_key=True))


class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(120), nullable=False)
    content = db.Column(db.Text, nullable=False)
    email = db.Column(db.String(120), nullable=False)
    date = db.Column(db.DateTime, nullable=False, default=datetime.now)
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'), nullable=False)

    def __repr__(self):
        return f"Comment({self.id}, '{self.title}')"


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(120), nullable=False)
    content = db.Column(db.Text, nullable=False)
    date = db.Column(db.DateTime, nullable=False, default=datetime.now)
    tags = db.relationship('Tag',
                           secondary=tags,
Ejemplo n.º 13
0
from datetime import datetime
from blog import db
from blog.posts.utils import slugify

post_tags = db.Table(
    'post_tags',
    db.Column('post_id', db.Integer,
              db.ForeignKey('post.id', ondelete="CASCADE")),
    db.Column('tag_id', db.Integer, db.ForeignKey('tag.id',
                                                  ondelete="CASCADE")))


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(140))
    slug = db.Column(db.String(140), unique=True)
    body = db.Column(db.Text)
    created = db.Column(db.DateTime, default=datetime.now())
    like_count = db.Column(db.Integer, default=0, nullable=False)
    dislike_count = db.Column(db.Integer, default=0, nullable=False)
    tags = db.relationship('Tag',
                           secondary=post_tags,
                           backref=db.backref('posts', lazy='dynamic'),
                           cascade="all,delete")
    comments = db.relationship('Comment')

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.generate_slug()

    def generate_slug(self):