class Ingroup(db.Model): id = db.Column(db.Integer, primary_key=True) myuser = db.Column(db.Integer, db.ForeignKey('user.id')) gp = db.Column(db.String(64), db.ForeignKey('group.groupname')) pg = db.Column(db.String(140)) time = db.Column(db.DateTime, index=True, default=datetime.utcnow) event = db.Column(db.String(250))
class Event(db.Model): id = db.Column(db.Integer, primary_key=True) gr = db.Column(db.String(64), db.ForeignKey('group.groupname')) ev = db.Column(db.String(140)) participants = db.Column(db.Integer) organiser = db.Column(db.Integer, db.ForeignKey('user.username')) location = db.Column(db.String(1024))
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) last_message_read_time = db.Column(db.DateTime) gposts = db.relationship('Ingroup', backref='writer', lazy='dynamic') followed = db.relationship('User', secondary=followers, primaryjoin=(followers.c.follower_id == id), secondaryjoin=(followers.c.followed_id == id), backref=db.backref('followers', lazy='dynamic'), lazy='dynamic') comments = db.relationship('Comment', backref='creator', lazy='dynamic') def new_messages(self): last_read_time = self.last_message_read_time or datetime(1900, 1, 1) return Message.query.filter_by(reciever=self.username).filter( Message.timestamp > last_read_time).count() def __repr__(self): return '<User {}>'.format(self.username) def set_password(self, password): self.password_hash = pwd_context.encrypt(password) def check_password(self, password): return pwd_context.verify(password, self.password_hash) def follow(self, user): if not self.is_following(user): self.followed.append(user) def unfollow(self, user): if self.is_following(user): self.followed.remove(user) def is_following(self, user): return self.followed.filter( followers.c.followed_id == user.id).count() > 0 def followed_posts(self): followed = Post.query.join( followers, (followers.c.followed_id == Post.user_id)).filter( followers.c.follower_id == self.id) #for p in followed: # form1 = CommentForm() # if form1.validate_on_submit(): # post = Post(body=form1.post.data, author=current_user) # db.session.add(post) # db.session.commit() #flash('You just now commented Wohoo XD!') #return redirect(url_for('index')) own = Post.query.filter_by(user_id=self.id) return followed.union(own).order_by(Post.timestamp.desc())
class Message(db.Model): id = db.Column(db.Integer, primary_key=True) sender = db.Column(db.String(64), db.ForeignKey('user.username')) msg = db.Column(db.String(700), index=True) reciever = db.Column(db.String(64), db.ForeignKey('user.id')) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) def __repr__(self): return '<Message {}>'.format(self.body)
class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String(140)) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) post_id = db.Column(db.Integer, db.ForeignKey('post.id')) us = db.Column(db.String(64), db.ForeignKey('user.username')) def __repr__(self): return '<Comment {}>'.format(self.body)
class Group(db.Model): id = db.Column(db.Integer, primary_key=True) userid = db.Column(db.Integer, db.ForeignKey('user.id')) groupname = db.Column(db.String(64), index=True) adminId = db.Column(db.Integer) def __repr__(self): return '<Group {}>'.format(self.groupname) def addMember(self, user): if not self.is_member(user): self.members.append(user) def is_member(self, user): return self.members.filter(group.c.self.userid == user.id).count() > 0 def removeMember(self, user): if self.is_member(user): self.members.remove(user) def grouppost(self): gname = self.groupname groupusers = Group.query.filter(Group.groupname == gname).all() #groupusers = groupusers.items #print(groupusers) for mem in groupusers: groupposts = Post.query.filter(mem.userid == Post.user_id) return groupposts.order_by(Post.timestamp.desc())
class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(20), unique=True, nullable=False) password = db.Column(db.String(20), nullable=False) tasks = db.relationship('Task', backref='poster') def __init__(self, name=None, email=None, password=None): self.name = name self.email = email self.password = password def __repr__(self): return '<User {0}>'.format(self.name)
class Subject(db.Model): __tablename__ = 'subjects' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50)) def __init__(self, name): self.name = name def __repr__(self): return '<Subject %r>' % self.name
class Task(db.Model): __tablename__ = "tasks" task_id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20), nullable=False) due_date = db.Column(db.String(20), nullable=False) priority = db.Column(db.Integer, nullable=False) posted_date = db.Column(db.Date, default=datetime.datetime.utcnow()) status = db.Column(db.Integer) user_id = db.Column(db.Integer, db.ForeignKey('users.id')) def __init__(self, name, due_date, priority, posted_date, status, user_id): self.name = name self.due_date = due_date self.priority = priority self.posted_date = posted_date self.status = status self.user_id = user_id def __repr__(self): return '<name {0}>'.format(self.name)
class Post(SearchableMixin, db.Model): __searchable__ = ['body'] id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String(140)) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) commentS = db.relationship('Comment', backref='POst', lazy='dynamic') #def get_comments(self): # return Comment.query.filter_by(post_id=post.id).order_by(Comment.timestamp.desc()) def __repr__(self): return '<Post {}>'.format(self.body)
class Like(db.Model): id = db.Column(db.Integer, primary_key=True) liker = db.Column(db.String(64), db.ForeignKey('user.username')) po = db.Column(db.Integer, db.ForeignKey('post.id'))
class Message(db.Model): id = db.Column(db.Integer, primary_key=True) sender = db.Column(db.String(64), db.ForeignKey('user.username')) msg = db.Column(db.String(700), index=True) reciever = db.Column(db.String(64), db.ForeignKey('user.id')) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)