|
|
|
@ -2,6 +2,7 @@ from django.db import models |
|
|
|
from django.contrib.auth.models import User |
|
|
|
from django.contrib.auth.models import User |
|
|
|
from django.conf import settings |
|
|
|
from django.conf import settings |
|
|
|
from enum import Enum |
|
|
|
from enum import Enum |
|
|
|
|
|
|
|
from django.db.models import Q |
|
|
|
|
|
|
|
|
|
|
|
# Create your models here. |
|
|
|
# Create your models here. |
|
|
|
class PostState(Enum): |
|
|
|
class PostState(Enum): |
|
|
|
@ -19,26 +20,25 @@ class Post(models.Model): |
|
|
|
state = models.IntegerField(default=0) |
|
|
|
state = models.IntegerField(default=0) |
|
|
|
style = models.IntegerField(default=0) |
|
|
|
style = models.IntegerField(default=0) |
|
|
|
image_url = models.CharField(max_length=100) |
|
|
|
image_url = models.CharField(max_length=100) |
|
|
|
|
|
|
|
|
|
|
|
def __str__(self): |
|
|
|
def __str__(self): |
|
|
|
return self.title |
|
|
|
string = self.title |
|
|
|
|
|
|
|
if self.style == 2: |
|
|
|
|
|
|
|
string = "some image" |
|
|
|
|
|
|
|
elif self.style == 3: |
|
|
|
|
|
|
|
string = "Youtube: " + self.title |
|
|
|
|
|
|
|
return string |
|
|
|
|
|
|
|
|
|
|
|
def top_comments(self): |
|
|
|
def top_comments(self): |
|
|
|
return self.comment_set.order_by('-voters').all()[:1] |
|
|
|
return self.comment_set.order_by('-voters').all()[:1] |
|
|
|
|
|
|
|
|
|
|
|
def flat_comments(self, user): |
|
|
|
def flat_comments(self, user): |
|
|
|
flat = [] |
|
|
|
flat = [] |
|
|
|
for comment in self.comment_set.all(): |
|
|
|
for comment in self.comment_set.filter(Q(parent_comment=None)).all(): |
|
|
|
# flat.append(comment) |
|
|
|
children = comment.flat_children(0, user) |
|
|
|
flat.extend(comment.flat_children(0, user)) |
|
|
|
flat.extend(children) |
|
|
|
return flat |
|
|
|
return flat |
|
|
|
|
|
|
|
|
|
|
|
def is_youtube_video(self): |
|
|
|
|
|
|
|
return "youtube.com" in self.url |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# return self.comment_set.annotate(ratings_num=count('voters')).order_by('-ratings_num')[:5] |
|
|
|
|
|
|
|
# return self.comment_set.order_by('voters_num').all()[:5] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Comment(models.Model): |
|
|
|
class Comment(models.Model): |
|
|
|
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True) |
|
|
|
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True) |
|
|
|
post = models.ForeignKey(Post, on_delete=models.CASCADE) |
|
|
|
post = models.ForeignKey(Post, on_delete=models.CASCADE) |
|
|
|
|