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
# coding=utf-8
from django.dispatch import receiver
from django.db.models.signals import post_save
from gm_types.gaia import INDEX_CARD_TYPE
from gm_types.user_hierarchy import FEEDBACK
from qa.models.answer import Answer
from talos.models.tractate import Tractate
from talos.models.diary import Diary
from user_hierarchy.models import UserFeedback
@receiver(post_save, sender=UserFeedback)
def user_feedbacke_post_save(sender, instance, created, **kwargs):
if not created:
return
if instance.feedback_type != FEEDBACK.LOW_QUALITY:
return
if instance.element_type == INDEX_CARD_TYPE.DIARY:
model = Diary
elif instance.element_type == INDEX_CARD_TYPE.QUESTION_ANSWER:
model = Answer
# class AnswerForm
elif instance.element_type == INDEX_CARD_TYPE.TRACTATE:
model = Tractate
# class TractateForm(forms.Form):
else:
return
try:
item = model.objects.get(id=instance.element_id)
except:
return
item.low_quality += 1
item.save()