1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# coding=utf8
from __future__ import unicode_literals, absolute_import, print_function
from django.db import models
from django.utils.html import escape
from gm_types.gaia import VOTEOBJECT
from talos.services.user import UserService
from talos.libs.image_utils import get_full_path
from talos.libs.datetime_utils import get_timestamp_or_none
from .topic import Problem
from .topicimage import TopicImage
class TopicVote(models.Model):
"""
赞话题
"""
class Meta:
verbose_name = u'赞话题'
verbose_name_plural = u'赞话题'
unique_together = ('user_id', 'topic')
db_table = 'api_topicvote'
app_label = 'talos'
user_id = models.IntegerField(verbose_name=u'用户外键id')
topic = models.ForeignKey(Problem, related_name="votes")
vote_time = models.DateTimeField(auto_now_add=True, verbose_name=u"点赞时间")
unread = models.BooleanField(default=True)
is_fake = models.BooleanField(default=False, verbose_name=u"是否机器人点赞")
topic_author_id = models.IntegerField(verbose_name=u'帖子用户外键id', db_index=True, default=None)
def to_dict(self):
content = self.topic.get_title()
images = TopicImage.objects.filter(topic=self.topic).order_by('id')
if self.topic.diary_id:
content = self.topic.answer
elif self.topic.is_topic:
content = self.topic.content.replace("\n", '').replace("\r", "").replace(" ", "")
user = UserService.get_user_by_user_id(user_id=self.user_id)
data = {
'topic_id': self.topic_id,
'nickname': user.nickname,
'user_id': self.user_id,
'vote_time': get_timestamp_or_none(self.vote_time),
'image': images and get_full_path(images[0].image_url, '-thumb') or '',
'content': escape(content),
'membership_level': user.membership_level,
'type': VOTEOBJECT.ACTIVITY_TOPIC if self.topic.activity_id else VOTEOBJECT.TOPIC,
'portrait': user.portrait,
}
return data
@property
def user(self):
return UserService.get_user_by_user_id(self.user_id)