feedback.jobs 源代码

from datetime import datetime, timedelta

from django.db import transaction

from app.models import (
    User,
)
from app.config import *
from generic.models import YQPointRecord
from scheduler.periodic import periodical
from feedback.feedback_utils import inform_notification
from feedback.models import Feedback

__all__ = [
    'public_feedback_per_hour',
]


[文档] @periodical('cron', 'feedback_public_updater', minute=5) @transaction.atomic def public_feedback_per_hour(): '''查找距离组织公开反馈24h内没被审核的反馈,将其公开''' time = datetime.now() - timedelta(days=1) feedbacks = Feedback.objects.filter( issue_status=Feedback.IssueStatus.ISSUED, public_status=Feedback.PublicStatus.PRIVATE, publisher_public=True, org_public=True, public_time__lte=time, ) feedbacks.select_for_update().update( public_status=Feedback.PublicStatus.PUBLIC) for feedback in feedbacks: User.objects.modify_YQPoint(feedback.person.get_user(), CONFIG.yqpoint.per_feedback, "问题反馈", YQPointRecord.SourceType.FEEDBACK) inform_notification(feedback.org.otype.incharge, feedback.person, f"您的反馈[{feedback.title}]已被公开", feedback, anonymous=False) inform_notification(feedback.org.otype.incharge, feedback.org, f"您处理的反馈[{feedback.title}]已自动公开", feedback, anonymous=False)