194 lines
7.5 KiB
Python
194 lines
7.5 KiB
Python
|
# coding: gb2312
|
|||
|
import json
|
|||
|
import os
|
|||
|
import time
|
|||
|
import traceback
|
|||
|
|
|||
|
from AcrossPlatform.get_platform import GLOBAL_DIR
|
|||
|
from DeviceDefine.consensus import *
|
|||
|
from LogRecord.log_recorder import GLOBAL_LOG
|
|||
|
from PureBackend.base_driver import BaseDriver, MODEL_MEDIAPIPE
|
|||
|
from PureBackend.general import *
|
|||
|
|
|||
|
|
|||
|
# ѵ<><D1B5><EFBFBD>Ѷ<EFBFBD>
|
|||
|
difficulty_lookup = {
|
|||
|
DIFFICULT_HARD: "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD>", DIFFICULT_EASY: "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD>", COMMON_EASY: "<EFBFBD><EFBFBD>ͨ<EFBFBD>Ѷ<EFBFBD>"
|
|||
|
}
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
standards_lookup = {
|
|||
|
STANDARDS_NEW: "<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", STANDARDS_OLD: "<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
|||
|
}
|
|||
|
DIFFICULT_FILE = os.path.join(GLOBAL_DIR, "train_info.json")
|
|||
|
SUMMARY_FILE = os.path.join(GLOBAL_DIR, "summary_info.json")
|
|||
|
DIFFICULTY_MES = "difficulty_mes"
|
|||
|
DIFFICULTY_DIS = "difficulty_display"
|
|||
|
DIFFICULTY = "difficulty"
|
|||
|
STANDARDS_DIS = "standards_display"
|
|||
|
STANDARDS = "standards"
|
|||
|
|
|||
|
|
|||
|
class StandardManager(BaseDriver):
|
|||
|
|
|||
|
def __init__(self, master_mode=True, positioning=True, camera=True, model=MODEL_MEDIAPIPE, speaker=True,
|
|||
|
multi_positioning_mode=True, device_type=UNKNOWN, pure_mode=False):
|
|||
|
super().__init__(master_mode, positioning, camera, model, speaker, multi_positioning_mode, device_type, pure_mode)
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD>
|
|||
|
# <20><><EFBFBD>ɳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD><D1B6><EFBFBD><EFBFBD><EFBFBD>json<6F>ļ<EFBFBD>
|
|||
|
if not os.path.exists(DIFFICULT_FILE):
|
|||
|
self.train_info = {
|
|||
|
DIFFICULTY_DIS: difficulty_lookup[DIFFICULT_HARD],
|
|||
|
DIFFICULTY: DIFFICULT_HARD,
|
|||
|
STANDARDS_DIS: standards_lookup[STANDARDS_OLD],
|
|||
|
STANDARDS: STANDARDS_OLD,
|
|||
|
}
|
|||
|
try:
|
|||
|
with open(DIFFICULT_FILE, "w+", encoding='utf-8_sig') as f:
|
|||
|
json.dump(self.train_info, f, ensure_ascii=False)
|
|||
|
except:
|
|||
|
pass
|
|||
|
else:
|
|||
|
try:
|
|||
|
with open(DIFFICULT_FILE, "r", encoding='utf-8_sig') as f:
|
|||
|
self.train_info = json.load(f)
|
|||
|
except:
|
|||
|
pass
|
|||
|
|
|||
|
# <20><><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>
|
|||
|
if not os.path.exists(SUMMARY_FILE):
|
|||
|
batch = self.manager.get_this_batch()
|
|||
|
if not batch:
|
|||
|
this_time = int(time.time())
|
|||
|
batch = time.strftime("%Y<EFBFBD><EFBFBD>%m<EFBFBD><EFBFBD>%d<EFBFBD><EFBFBD>%Hʱ", time.localtime(this_time))
|
|||
|
self.summary_info = {
|
|||
|
'batch': batch,
|
|||
|
'default_projects': {SITUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', RUNAROUND: '30*2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', PULLUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
|
|||
|
RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
|
|||
|
'default_batch': batch,
|
|||
|
'default_class_projects': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
|
|||
|
'default_class_batch': batch,
|
|||
|
'default_group_projects': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
|
|||
|
'default_team_project': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
|
|||
|
'default_team_batch': batch,
|
|||
|
'default_team_class': ['1<EFBFBD><EFBFBD>'],
|
|||
|
'default_personal_projects': {SITUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', RUNAROUND: '30*2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', PULLUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
|
|||
|
RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
|
|||
|
'default_personal_batch': [batch],
|
|||
|
'default_personal_personal': {'id': 1, 'name': '<EFBFBD><EFBFBD>Ա1'}
|
|||
|
}
|
|||
|
try:
|
|||
|
with open(SUMMARY_FILE, "w+", encoding='utf-8_sig') as f:
|
|||
|
json.dump(self.summary_info, f, ensure_ascii=False)
|
|||
|
except:
|
|||
|
pass
|
|||
|
else:
|
|||
|
try:
|
|||
|
with open(SUMMARY_FILE, "r", encoding='utf-8_sig') as f:
|
|||
|
self.summary_info = json.load(f)
|
|||
|
batch = self.manager.get_this_batch()
|
|||
|
if batch:
|
|||
|
self.summary_info['batch'] = self.manager.get_this_batch()
|
|||
|
except:
|
|||
|
batch = self.manager.get_this_batch()
|
|||
|
if not batch:
|
|||
|
this_time = int(time.time())
|
|||
|
batch = time.strftime("%Y<EFBFBD><EFBFBD>%m<EFBFBD><EFBFBD>%d<EFBFBD><EFBFBD>%Hʱ", time.localtime(this_time))
|
|||
|
self.summary_info = {
|
|||
|
'batch': batch,
|
|||
|
'default_projects': {SITUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', RUNAROUND: '30*2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', PULLUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
|
|||
|
RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
|
|||
|
'default_batch': batch,
|
|||
|
'default_class_projects': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
|
|||
|
'default_class_batch': batch,
|
|||
|
'default_group_projects': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
|
|||
|
'default_team_project': {RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
|
|||
|
'default_team_batch': batch,
|
|||
|
'default_team_class': ['1<EFBFBD><EFBFBD>'],
|
|||
|
'default_personal_projects': {SITUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', RUNAROUND: '30*2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
|
|||
|
PULLUP: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',
|
|||
|
RUNNING: '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'},
|
|||
|
'default_personal_batch': [batch],
|
|||
|
'default_personal_personal': {'id': 1, 'name': '<EFBFBD><EFBFBD>Ա1'}
|
|||
|
}
|
|||
|
|
|||
|
# <20><><EFBFBD>»<EFBFBD><C2BB><EFBFBD><EFBFBD><EFBFBD>Ϣjson
|
|||
|
def update_summary_info(self):
|
|||
|
try:
|
|||
|
with open(SUMMARY_FILE, "w", encoding='utf-8_sig') as f:
|
|||
|
json.dump(self.summary_info, f, ensure_ascii=False)
|
|||
|
return True
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
return False
|
|||
|
|
|||
|
# <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GET
|
|||
|
def get_batch(self):
|
|||
|
try:
|
|||
|
batch = self.summary_info['batch']
|
|||
|
return batch
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD>µĿ<C2B5><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GET
|
|||
|
def set_batch(self):
|
|||
|
try:
|
|||
|
batch = self.manager.generate_batch()
|
|||
|
self.summary_info['batch'] = batch
|
|||
|
return batch
|
|||
|
except Exception as e:
|
|||
|
GLOBAL_LOG.write(f"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{str(e)}<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>{traceback.format_exc()}")
|
|||
|
|
|||
|
# <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
def get_train_info(self):
|
|||
|
try:
|
|||
|
with open(DIFFICULT_FILE, 'r', encoding='utf-8_sig') as read_json:
|
|||
|
self.train_info = json.load(read_json)
|
|||
|
except:
|
|||
|
if os.path.exists(DIFFICULT_FILE):
|
|||
|
os.remove(DIFFICULT_FILE)
|
|||
|
self.train_info = {
|
|||
|
DIFFICULTY_DIS: difficulty_lookup[DIFFICULT_HARD],
|
|||
|
DIFFICULTY: DIFFICULT_HARD,
|
|||
|
STANDARDS_DIS: standards_lookup[STANDARDS_OLD],
|
|||
|
STANDARDS: STANDARDS_OLD,
|
|||
|
}
|
|||
|
with open(DIFFICULT_FILE, "w+", encoding='utf-8_sig') as f:
|
|||
|
json.dump(self.train_info, f, ensure_ascii=False)
|
|||
|
return self.train_info
|
|||
|
|
|||
|
# <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
def set_train_info(self, train_info):
|
|||
|
try:
|
|||
|
difficulty = train_info.get(DIFFICULTY)
|
|||
|
standards = train_info.get(STANDARDS)
|
|||
|
if not difficulty or not standards:
|
|||
|
return
|
|||
|
self.train_info = {
|
|||
|
DIFFICULTY_DIS: difficulty_lookup[difficulty],
|
|||
|
DIFFICULTY: difficulty,
|
|||
|
STANDARDS_DIS: standards_lookup[standards],
|
|||
|
STANDARDS: standards
|
|||
|
}
|
|||
|
with open(DIFFICULT_FILE, "w+", encoding='utf-8_sig') as f:
|
|||
|
json.dump(self.train_info, f, ensure_ascii=False)
|
|||
|
return True
|
|||
|
except:
|
|||
|
print(traceback.format_exc())
|
|||
|
return False
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>Ѷ<EFBFBD>
|
|||
|
@staticmethod
|
|||
|
def get_all_difficulty():
|
|||
|
return [
|
|||
|
{"value": value, "label": label}
|
|||
|
for value, label in difficulty_lookup.items()
|
|||
|
]
|
|||
|
|
|||
|
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еı<D0B5>
|
|||
|
@staticmethod
|
|||
|
def get_all_standard():
|
|||
|
return [
|
|||
|
{"value": value, "label": label}
|
|||
|
for value, label in standards_lookup.items()
|
|||
|
]
|