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}>'
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),
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))
"""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)
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,
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)
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')
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):
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),
# -*- 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,
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)
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,
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):