mirror of
https://github.com/Microsoft/sql-server-samples.git
synced 2025-12-08 14:58:54 +00:00
74 lines
2.2 KiB
Python
74 lines
2.2 KiB
Python
from django.db import models
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from django.contrib.auth.models import User
|
|
from bootcamp.activities.models import Activity
|
|
from django.utils.html import escape
|
|
import bleach
|
|
|
|
|
|
class Feed(models.Model):
|
|
user = models.ForeignKey(User)
|
|
date = models.DateTimeField(auto_now_add=True)
|
|
post = models.TextField(max_length=255)
|
|
parent = models.ForeignKey('Feed', null=True, blank=True)
|
|
likes = models.IntegerField(default=0)
|
|
comments = models.IntegerField(default=0)
|
|
|
|
class Meta:
|
|
verbose_name = _('Feed')
|
|
verbose_name_plural = _('Feeds')
|
|
ordering = ('-date',)
|
|
|
|
def __unicode__(self):
|
|
return self.post
|
|
|
|
@staticmethod
|
|
def get_feeds(from_feed=None):
|
|
if from_feed is not None:
|
|
feeds = Feed.objects.filter(parent=None, id__lte=from_feed)
|
|
else:
|
|
feeds = Feed.objects.filter(parent=None)
|
|
return feeds
|
|
|
|
@staticmethod
|
|
def get_feeds_after(feed):
|
|
feeds = Feed.objects.filter(parent=None, id__gt=feed)
|
|
return feeds
|
|
|
|
def get_comments(self):
|
|
return Feed.objects.filter(parent=self).order_by('date')
|
|
|
|
def calculate_likes(self):
|
|
likes = Activity.objects.filter(activity_type=Activity.LIKE,
|
|
feed=self.pk).count()
|
|
self.likes = likes
|
|
self.save()
|
|
return self.likes
|
|
|
|
def get_likes(self):
|
|
likes = Activity.objects.filter(activity_type=Activity.LIKE,
|
|
feed=self.pk)
|
|
return likes
|
|
|
|
def get_likers(self):
|
|
likes = self.get_likes()
|
|
likers = []
|
|
for like in likes:
|
|
likers.append(like.user)
|
|
return likers
|
|
|
|
def calculate_comments(self):
|
|
self.comments = Feed.objects.filter(parent=self).count()
|
|
self.save()
|
|
return self.comments
|
|
|
|
def comment(self, user, post):
|
|
feed_comment = Feed(user=user, post=post, parent=self)
|
|
feed_comment.save()
|
|
self.comments = Feed.objects.filter(parent=self).count()
|
|
self.save()
|
|
return feed_comment
|
|
|
|
def linkfy_post(self):
|
|
return bleach.linkify(escape(self.post))
|