Пример #1
0
class UserMotivation (db.Model):
    __tablename__ = 'usermotivation_model'

    id = db.Column (db.Integer, primary_key = True)
    user_id = db.Column(db.Integer, db.ForeignKey('user_model.id', ondelete = 'CASCADE'))
    motivation_id = db.Column(db.Integer, db.ForeignKey('motivation_model.id', ondelete = 'CASCADE'))
    subcategory_id = db.Column (db.Integer, db.ForeignKey('subcategory_model.id', ondelete = 'CASCADE'))
    timestamp = db.Column(db.DateTime, nullable=False)
    visited  = db.Column (db.Boolean, nullable = False)

    def __init__ (self, user_id, motivation_id, subcategory_id, days, visited = False):
        self.user_id = user_id
        self.motivation_id = motivation_id
        self.subcategory_id = subcategory_id
        self.visited = visited
        self.timestamp = datetime.now().date() + timedelta (days = days)

    def save (self):
        db.session.add (self)
        db.session.commit()

    def mark_visited (self):
        self.visited = True
        db.session.commit()


    @staticmethod
    def expire_yesterday ():
        yesterday_records = UserMotivation.query.filter_by (timestamp = datetime.now().date() - timedelta (days = 1))
        for record in yesterday_records:
            record.mark_visited()
Пример #2
0
class Motivation (db.Model):
    __tablename__ = 'motivation_model'

    id = db.Column(db.Integer, primary_key = True)
    title = db.Column (db.String(40), nullable = True)
    description = db.Column (db.Text , nullable = False)
    subcategory_id = db.Column(db.Integer, db.ForeignKey('subcategory_model.id', ondelete = 'CASCADE'))
    timestamp = db.Column (db.DateTime)
    usermotivations = db.relationship ('UserMotivation' , cascade = 'all,delete', backref = 'motivation_model' , lazy = True)

    def __init__ (self, description, subcategory_id, title = None):
        self.title = title
        self.description = description
        self.timestamp = datetime.now()
        if title :
            self.title = title
        self.subcategory_id = subcategory_id

    def save (self):
        db.session.add (self)
        db.session.commit()

    def edit (self, title, description):
        self.title = title
        self.description = description
        db.session.commit()

    def delete (self):
        db.session.delete (self)
        db.session.commit()

    def append_usermotivation (self, usermotivation):
        self.usermotivations.append (usermotivation)
        db.session.commit()

    def serialize_one (self):
        return MotivationSchema().dump(self)

    @staticmethod
    def serialize_many (arg):
        return MotivationSchema(many=True).dump(arg)
Пример #3
0
class SubCategory (db.Model):
    __tablename__ = 'subcategory_model'

    id = db.Column (db.Integer, primary_key = True)
    name = db.Column (db.String (50) , nullable = False)
    icon_url = db.Column (db.Text)
    category_id = db.Column(db.Integer, db.ForeignKey('category_model.id', ondelete = 'CASCADE'))
    motivations = db.relationship ('Motivation' , cascade = 'all,delete', backref = 'subcategory_model' , lazy = True)
    usermotivations = db.relationship ('UserMotivation' , cascade = 'all,delete', backref = 'subcategory_model' , lazy = True)


    def __init__ (self, name, url, category_id):
        self.name = name
        self.icon_url = url
        self.category_id = category_id

    def save (self):
        db.session.add (self)
        db.session.commit()

    def edit (self, name, icon):
        self.name = name
        self.icon_url = icon
        db.session.commit()

    def delete (self):
        db.session.delete (self)
        db.session.commit()

    def append_motivation (self, motivation):
        self.motivations.append (motivation)
        db.session.commit()

    def serialize_one (self):
        return SubCategorySchema().dump(self)

    @staticmethod
    def serialize_many (arg):
        return SubCategorySchema(many=True).dump(arg)
Пример #4
0
from Cigar import DataBase as db

from flask_login import UserMixin
from werkzeug.security import generate_password_hash, check_password_hash
import random

from Cigar import MarshMallow as ma
from flask_marshmallow import Marshmallow

from Cigar.Motivation.model import Motivation, SubCategory, UserMotivation

user_motivation_bookmark = db.Table(
    'user_motivation_bookmark',
    db.Column('user_id', db.Integer, db.ForeignKey('user_model.id')),
    db.Column('motivation_id', db.Integer,
              db.ForeignKey('motivation_model.id')))


class User(db.Model, UserMixin):
    __tablename__ = 'user_model'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    email = db.Column(db.String(50), unique=True, nullable=False)
    role = db.Column(db.String(10), nullable=False)  #user, admin, owner
    pass_hash = db.Column(db.Text)
    motivation_count = db.Column(db.Integer, nullable=False)
    usermotivations = db.relationship('UserMotivation',
                                      cascade='all,delete',
                                      backref='user_model',
                                      lazy=True)