class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) article_id = db.Column(db.Integer, db.ForeignKey('article.id')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) body = db.Column(db.Text(2000), nullable=False) date_posted = db.Column(db.DateTime(), default=dt.utcnow) last_updated = db.Column(db.DateTime()) def __repr__(self): return f'<Comment №{self.id} on post {self.article.title}>'
class Message(db.Model): id = db.Column(db.Integer, primary_key=True) sender_id = db.Column(db.Integer, db.ForeignKey('user.id')) recipient_id = db.Column(db.Integer, db.ForeignKey('user.id')) title = db.Column(db.String(200), nullable=False) body = db.Column(db.Text(2000), nullable=False) date_send = db.Column(db.DateTime(), default=dt.utcnow) seen = db.Column(db.Boolean(), default=False) deleted = db.Column(db.Boolean()) def __repr__(self): return f'<Message №{self.id} from {self.sender} to {self.recipient}>'
class Role(db.Model): user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True) role_name = db.Column(db.String(30)) date_granted = db.Column(db.DateTime(), default=dt.utcnow) def __repr__(self): return f'<User {self.user_id} is {self.role_name}>'
class UserInfo(db.Model): user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True) birthdate = db.Column(db.Date()) avatar = db.Column(db.String(120), default='default.png') gender = db.Column(db.String(1)) job = db.Column(db.String(60)) about = db.Column(db.Text(600)) origin_country_id = db.Column(db.Integer, db.ForeignKey('country.id')) registration_date = db.Column(db.Date(), default=dt.utcnow) last_seen = db.Column(db.DateTime(), default=dt.utcnow) origin_country = db.relationship('Country', lazy=True, uselist=False, backref=db.backref('natives', uselist=True)) def __repr__(self): return f'<Info about {self.user.username}>'
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) content = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def __repr__(self): return f"Post('{self.title}', '{self.date_posted}')"
class Article(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) body = db.Column(db.Text(100000), nullable=False) title = db.Column(db.String(200), index=True, nullable=False) article_type = db.Column(db.String(10)) date_posted = db.Column(db.DateTime(), default=dt.utcnow) last_updated = db.Column(db.DateTime()) comments = db.relationship('Comment', backref='article', cascade='all', lazy='dynamic') def __repr__(self): return (f'<Article {self.id} title {self.title} ' f'by user {self.article_author.username}>')
class CountryInfo(db.Model): country_id = db.Column(db.Integer, db.ForeignKey('country.id'), primary_key=True) capital = db.Column(db.String(20)) population = db.Column(db.Integer) land_area = db.Column(db.Integer) currency = db.Column(db.String(40)) currency_code = db.Column(db.String(3)) language = db.Column(db.String(30)) time_zone = db.Column(db.String(50)) time_offset = db.Column(db.String(10)) weather = db.Column(db.Text(600)) description = db.Column(db.Text(2000)) region = db.Column(db.String(20)) subregion = db.Column(db.String(40)) last_updated = db.Column(db.DateTime(), default=dt.utcnow) def __repr__(self): return f'<Info about {self.country.name}>'
from hashlib import md5 from time import time import jwt from flask import current_app from flask_login import UserMixin, current_user from flask_admin.contrib.sqla import ModelView from werkzeug.security import generate_password_hash, check_password_hash from travelblog import db, login, admin country_visitor = db.Table( 'country_visitor', db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True), db.Column('country_id', db.Integer, db.ForeignKey('country.id'), primary_key=True)) country_follower = db.Table( 'country_follower', db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True), db.Column('country_id', db.Integer, db.ForeignKey('country.id'),