Skip to content

Commit

Permalink
Storing a feed on the server
Browse files Browse the repository at this point in the history
  • Loading branch information
ineentho committed May 25, 2015
1 parent ab6a598 commit 03dad2d
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 3 deletions.
21 changes: 20 additions & 1 deletion server/api_users.py
@@ -1,7 +1,7 @@
from flask import request, jsonify
from server import app, db
from server.auth import get_or_create
from server.channel import Video, Comment
from server.channel import Video, Comment, FeedItem
from server.user import User


Expand Down Expand Up @@ -49,13 +49,31 @@ def comment():
db.session.add(db_comment)
db.session.add(user)
db.session.add(video)
create_feed_comment(user, db_comment)
db.session.commit()

return jsonify({
'success': True
})


def create_feed_like(user, video):
"""
Adds an item to the users feed
Does not commit the item to the database
"""
feed_item = FeedItem(user, 0, video)
db.session.add(feed_item)


def create_feed_comment(user, comment):
"""
Adds an item to the users feed
Does not commit the item to the database
"""
feed_item = FeedItem(user, 1, comment)
db.session.add(feed_item)


def simple_user_list(followers, page):
base_resp = {
Expand Down Expand Up @@ -115,6 +133,7 @@ def toggle_like(video_id):
user.liked_videos.remove(video)
else:
user.liked_videos.append(video)
create_feed_like(user, video)
db.session.commit()

return jsonify({
Expand Down
26 changes: 24 additions & 2 deletions server/channel.py
Expand Up @@ -81,13 +81,13 @@ class Video(db.Model):
channel_id = db.Column(db.Integer, db.ForeignKey('channels.id'))
comments = db.relationship('Comment', backref='videos')


__table_args__ = (db.UniqueConstraint('slug', 'channel_id', name='_video_slug_uc'),)

def __init__(self, slug, name):
self.name = name
self.slug = slug


class Comment(db.Model):
__tablename__ = 'comments'
id = db.Column(db.Integer, primary_key=True)
Expand All @@ -97,4 +97,26 @@ class Comment(db.Model):

def __init__(self, comment, user):
self.comment = comment
self.user_id = user.id
self.user_id = user.id


class FeedItem(db.Model):
__tablename__ = 'feed'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('users.id')) # Backref'd as user
event_type = db.Column(db.Integer) # See init function
like_id = db.Column(db.Integer, db.ForeignKey('videos.id'))
like = db.relationship('Video')
comment_id = db.Column(db.Integer, db.ForeignKey('comments.id'))
comment = db.relationship('Comment')

def __init__(self, user, event_type, item):
self.event_type = event_type
self.user_id = user.id

if event_type == 0:
# Like
self.like_id = item.id
elif event_type == 1:
# Comment
self.comment_id = item.id
1 change: 1 addition & 0 deletions server/user.py
Expand Up @@ -27,6 +27,7 @@ class User(db.Model):
backref=db.backref('liking_users'))

comments = db.relationship('Comment', backref='user')
feed_items = db.relationship('FeedItem', backref='user')

def __init__(self, name, google_id):
self.name = name
Expand Down

0 comments on commit 03dad2d

Please sign in to comment.