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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from datetime import datetime, date, time
from django.core.management.base import BaseCommand
from gm_types.gaia import TOPIC_TYPE
from talos.models.diary import Diary
from talos.models.topic import Problem
today_date_time = datetime.combine(date.today(), time.min)
def _edit_diary_info():
need_edit_diaries = Diary.objects.filter(
is_online=True,
operation_time__isnull=False,
operation_time__gt=today_date_time
).only("id", "operation_time")
print("edit diary begin")
write_to_log_list = []
print("assemble diary log begin")
for diary in need_edit_diaries:
_log = "diary update, id={diary_id} raw_operate_time={diary_operate_time} update_time={update_time}\n".format(
diary_id=diary.id,
diary_operate_time=diary.operation_time.strftime("%Y-%m-%d %H:%M:%S"),
update_time=today_date_time.strftime("%Y-%m-%d %H:%M:%S")
)
write_to_log_list.append(_log)
print("assemble diary log end")
print("update diary operate_time begin")
for diary in need_edit_diaries:
diary.operation_time = today_date_time
diary.save(update_fields=["operation_time"])
print("update diary operate_time end")
print("diary edit operate time write to file begin")
with open("mimas_edit_diary_operate_time.log", "w") as f:
f.writelines(write_to_log_list)
print("diary edit operate time write to file end")
print("edit diary end")
def _edit_topic_info():
topic_type_list = [TOPIC_TYPE.ASK, TOPIC_TYPE.SHARE, TOPIC_TYPE.TOPIC]
write_to_log_list = []
need_edit_topic_diary_ids = set()
need_edit_topics = Problem.objects.filter(
is_online=True,
diary_id__isnull=False,
topic_type__in=topic_type_list,
operation_date__isnull=False,
operation_date__gt=today_date_time
).only("id", "diary_id", "operation_date")
print("edit topic begin")
print("assemble topic log begin")
for topic in need_edit_topics:
_log = "topic update,topic_id={topic_id} diary_id={diary_id} topic_raw_operate_time={topic_operate_time} update_time={update_time}\n".format(
topic_id=topic.id,
diary_id=topic.diary_id,
topic_operate_time=topic.operation_date.strftime("%Y-%m-%d %H:%M:%S"),
update_time=today_date_time.strftime("%Y-%m-%d %H:%M:%S")
)
write_to_log_list.append(_log)
need_edit_topic_diary_ids.add(topic.diary_id) # 不管日记本的手术时间咋样,都需要重置
print("assemble topic log end")
print("topic edit operate time write to file begin")
with open("mimas_edit_topic_operate_time.log", "w") as f:
f.writelines(write_to_log_list)
print("topic edit operate time write to file end")
print("update topic operate_date begin")
for topic in need_edit_topics:
topic.operation_date = today_date_time
topic.save(update_fields=["operation_date"])
print("update topic operate_date end")
topic_diary_write_to_log_list = []
topic_need_edit_diaries = Diary.objects.filter(id__in=need_edit_topic_diary_ids).only("id", "operation_time")
for topic_diary in topic_need_edit_diaries:
_log = "topic diary update, id={diary_id} raw_operate_time={diary_operate_time} update_time={update_time}\n".format(
diary_id=topic_diary.id,
diary_operate_time=topic_diary.operation_time.strftime("%Y-%m-%d %H:%M:%S"),
update_time=today_date_time.strftime("%Y-%m-%d %H:%M:%S")
)
topic_diary_write_to_log_list.append(_log)
print("topic diary edit operate time write to file begin")
with open("mimas_edit_topic_diary_operate_time.log", "w") as f:
f.writelines(topic_diary_write_to_log_list)
print("topic diary operate time write to file end")
print("update topic diary operate_time begin")
for topic_diary in topic_need_edit_diaries:
topic_diary.operation_time = today_date_time
topic_diary.save(update_fields=["operation_time"])
print("update topic diary operate_time end")
print("edit topic end")
class Command(BaseCommand):
def handle(self, *args, **options):
print("BEGIN")
_edit_diary_info()
_edit_topic_info()
print("END")