def register_link(self, reader, writer): connection = Connection(reader, writer, notify_queue=asyncio.Queue()) self._connections.append(connection) try: yield connection finally: self._connections.remove(connection)
def main(user_input): worker = Option_Worker(user_input) config_file, socket = worker.setWithOptions() config = Bot_Configuration(config_file) connect_to = config.get_connection_constants() twitch_connection = Connection(connect_to, socket) route_commander = Commander(All().commands(), config.get_admins(), twitch_connection) app = Trivvy(twitch_connection, route_commander) app.run()
def __init__(self, low=0.5, high=0.5): # classification thresholds self._low = float(low) self._high = float(high) # add and setup logger self._logger = logging.getLogger() logging.basicConfig(level=logging.DEBUG) # db connection self.db = Connection() # load info about allready classified entries self._logger.info('Loading Allready classified entries...') self.human = HumanClassification( '/mnt/minerva1/nlp/projects/twitter_classification/TwitterClassifier/pickles/HumanClassification' ) self.human.load() # load database of words self._logger.info('Loading word dictionary...') self.word_dict = WordDictionary( '/mnt/minerva1/nlp/projects/twitter_classification/TwitterClassifier/pickles/WordDictionary' ) self.word_dict.load() # timer self._timer = timeit.Timer()
from src.teste import Teste from src.connection import Connection import datetime import configparser #teste = Teste(10,20) #print(teste.soma()) cfg = configparser.ConfigParser() cfg.read('config.ini') url = cfg.get('development', 'url') port = cfg.getint('development', 'port') bd = cfg.get('development', 'bd') print(url + ' ' + str(port)) c = Connection(url, port, bd) db = c.getDB() json = {'nome': 'teste', 'date': datetime.datetime.now()} db.tickets.replace_one({'nome': 'teste'}, json, True)
def main(): folder = FileHandler() folder.create_folder() folder.move_file() for file in folder.fb2_books(folder.path_input): Connection().for_main(Model(folder.path_input, file))
import os, sys import copy import sqlalchemy from sqlalchemy.orm import sessionmaker #获取父级目录 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #父级目录加入系统环境 sys.path.append(BASE_DIR) from src.connection import Connection from src.log import Log from src.models import Role, User, Classes, Course, Record, Score, RecordUser from src.fomatter import Fomatter conn = Connection().create_connection() engine = sqlalchemy.create_engine(conn, encoding="utf-8", echo=False) session_class = sessionmaker(bind=engine) session = session_class() r1 = Role(name="admin") r2 = Role(name="teacher") r3 = Role(name="student") session.add_all([r1, r2, r3]) u1 = User(name="admin", password="******", qq="1", role_id=1) u2 = User(name="teacher", password="******", qq="2", role_id=2) u3 = User(name="shisanjun", password="******", qq="3", role_id=3)
class Views(object): engine=Connection().create_connection() logger=Log().logger() fomatter=Fomatter() Session=sessionmaker(bind=engine) session=Session() def __init__(self): self.auth_dict={} @classmethod def syncdb(self,argvs): """ 创建表结构 :param argvs: :return: """ from src.models import BASE BASE.metadata.create_all(bind=self.engine) def auth(self): """ 用户认证 :return: """ username=self.fomatter.input_str_format("请输入用户名") password=self.fomatter.input_str_format("请输入密码") user_obj=self.session.query(models.User).filter(models.User.username==username,models.User.password==password).first() if user_obj is None: self.auth_dict["username"]=username self.auth_dict["is_auth"]=False self.logger.debug("用户认证失败") else: self.auth_dict["username"]=username self.auth_dict["is_auth"]=True self.logger.debug("用户认证成功") return self.auth_dict def host_add(self,*args): """ 增加主机 :param args: :return: """ name=self.fomatter.input_str_format("请输入主机名") host=self.fomatter.input_str_format("请输入主机地址") port=self.fomatter.input_str_format("请输入主机端口") host_obj=models.Hosts(name=name,host=host,port=port) try: self.session_add(host_obj) except Exception as e: print(e) def host_list(self,*args): """ 查看所有主机 :param args: :return: """ host_objs=self.session.query(models.Hosts).all() if len(host_objs)==0: self.logger.info("主机表为空") return None else: self.fomatter.show_color("序号\t主机名\t主机地址\t端口") for host in host_objs: self.fomatter.show_color("%s\t%s\t%s\t%s" %(host.id,host.name,host.host,host.port)) return True def group_add(self,*args): """ 增加主机组 :param args: :return: """ name=self.fomatter.input_str_format("请输入主机名") group_obj=models.Groups(name=name) try: self.session_add(group_obj) except Exception as e: print(e) def group_list(self,*args): """ 查看所有主机 :param args: :return: """ group_objs=self.session.query(models.Groups).all() if len(group_objs)==0: self.logger.info("主机表组为空") return None else: self.fomatter.show_color("序号\t主机组名") for group_obj in group_objs: self.fomatter.show_color("%s\t%s" %(group_obj.id,group_obj.name)) return True def remoteuser_add(self,*args): """ 增加主机用户 :param args: :return: """ name=self.fomatter.input_str_format("请输入主机用户名") password=self.fomatter.show_color(input("请输入密码>>")) while True: type=self.fomatter.input_str_format("请选择类型1:密码;2秘钥") if type not in ("1","2"): continue else:break if type=="1": remoteuser_obj=models.RemoteUser(username=name,password=password,type="auth-password") elif type=="2": remoteuser_obj=models.RemoteUser(username=name,password=password,type="auth-key") try: self.session_add(remoteuser_obj) except Exception as e: print(e) def remoteuser_list(self,*args): """ 查看所有主机用户 :param args: :return: """ remoteuser_objs=self.session.query(models.RemoteUser).all() if len(remoteuser_objs)==0: self.logger.info("主机用户表为空") return None else: self.fomatter.show_color("序号\t用户名\t密码\t类型") for remoteuser_obj in remoteuser_objs: self.fomatter.show_color("%s\t%s\t%s\t%s" %(remoteuser_obj.id,remoteuser_obj.username,remoteuser_obj.password,remoteuser_obj.type.value)) return True def user_add(self,*args): """ 增加系统用户 :param args: :return: """ name=self.fomatter.input_str_format("请输入系统用户名") password=self.fomatter.input_str_format("请输入系统用户密码") user_obj=models.User(username=name,password=password) try: self.session_add(user_obj) except Exception as e: print(e) def user_list(self,*args): """ 查看所有主机 :param args: :return: """ user_objs=self.session.query(models.User).all() if len(user_objs)==0: self.logger.info("系统用户表为空") return None else: self.fomatter.show_color("序号\t主机组名") for user_obj in user_objs: self.fomatter.show_color("%s\t%s" %(user_obj.id,user_obj.username)) return True def hostuser_add(self,*args): """ 关联主机和主机用户 :param args: :return: """ if self.host_list() is None: self.logger.info("主机为空,请先添加主机") return host_id=self.fomatter.input_str_format("请输入主机序号") host_obj=self.session.query(models.Hosts).filter_by(id=host_id).first() if host_obj is None: self.logger.error("输入主机序号有误,请重新输入") return if self.remoteuser_list() is None: self.logger.info("主机用户为空,请先增加主机用户") return remoteuser_id=self.fomatter.input_str_format("请输入主机用户号") remoteuser_obj=self.session.query(models.RemoteUser).filter_by(id=remoteuser_id).first() if remoteuser_obj is None: self.logger.error("输入主机用户序号有误,请重新输入") return host_user_obj=models.HostUser(host_id=host_id,remoteuser_id=remoteuser_id) try: self.session_add(host_user_obj) except Exception as e: self.session.rollback() self.logger.info("记录已存在") def hostuser_list(self,*args): """ 查看所有主机和主机用户关联 :param args: :return: """ host_user_objs=self.session.query(models.HostUser).all() if len(host_user_objs)==0: self.logger.info("没有主机和主机用户关系") return None else: self.fomatter.show_color("序号\t主机名\t主机用户\t主机类型") for host_user_obj in host_user_objs: self.fomatter.show_color("%s\t%s\t%s\t%s" %(host_user_obj.id, host_user_obj.host.name,host_user_obj.remoteuser.username,host_user_obj.remoteuser.type.value)) return True def user_hostuser_add(self,*args): """ 增加系统用户和主机及用户关系统 :param args: :return: """ if self.user_list() is None: self.logger.info("用户表为空,请先添加") return user_id=self.fomatter.input_str_format("请输入用户序号") user_obj=self.session.query(models.User).filter_by(id=user_id).first() if user_obj is None: self.logger.error("输入用户序号有误,请重新输入") return if self.hostuser_list() is None: self.logger.info("请先增加主机和主机用户关系") return hostuser_id=self.fomatter.input_str_format("请输入主机与用户关系序号") hostuser_obj=self.session.query(models.HostUser).filter_by(id=hostuser_id).first() if hostuser_obj is None: self.logger.error("输入主机和用户关系序号有误,请重新输入") return if hostuser_obj not in user_obj.hostuser: user_obj.hostuser.append(hostuser_obj) try: self.session_add(user_obj) except Exception as e: self.session.rollback() self.logger.info("记录已存在") def user_hostuser_list(self,*args): """ 查看系统用户和主机及用户关系统 :param args: :return: """ user_objs=self.session.query(models.User).all() if user_objs is None: self.logger.error("输入主机和用户关系序号有误,请重新输入") self.fomatter.show_color("序号\t用户名\t主机名\t主机用户名\t主机用户类型") for user_obj in user_objs: for hostuser_obj in user_obj.hostuser: self.fomatter.show_color("%s\t%s\t%s\t%s\t%s" %(user_obj.id, user_obj.username,hostuser_obj.host.name,hostuser_obj.remoteuser.username,hostuser_obj.remoteuser.type.value)) def group_hostuser_add(self,*args): """ 增加主机组和主机及用户关系统 :param args: :return: """ if self.group_list() is None: self.logger.info("用户组表为空,请先添加") return group_id=self.fomatter.input_str_format("请输入用户序号") group_obj=self.session.query(models.Groups).filter_by(id=group_id).first() if group_obj is None: self.logger.error("输入用户组序号有误,请重新输入") return if self.hostuser_list() is None: self.logger.info("请先增加主机和主机用户关系") return hostuser_id=self.fomatter.input_str_format("请输入主机与用户关系序号") hostuser_obj=self.session.query(models.HostUser).filter_by(id=hostuser_id).first() if hostuser_obj is None: self.logger.error("输入主机和用户关系序号有误,请重新输入") return if hostuser_obj not in group_obj.hostuser: group_obj.hostuser.append(hostuser_obj) try: self.session_add(group_obj) except Exception as e: self.session.rollback() self.logger.info("记录已存在") def group_hostuser_list(self,*args): """ 查看主机组和主机及用户关系统 :param args: :return: """ group_objs=self.session.query(models.Groups).all() if group_objs is None: self.logger.error("输入主机和用户关系序号有误,请重新输入") self.fomatter.show_color("序号\t主机组名\t主机名\t主机用户名") for group_obj in group_objs: for hostuser_obj in group_obj.hostuser: self.fomatter.show_color("%s\t%s\t%s\t%s" %(group_obj.id, group_obj.name,hostuser_obj.host.name,hostuser_obj.remoteuser.username)) def user_group_add(self,*args): """ 增加系统用户和主机组关系统 :param args: :return: """ if self.user_list() is None: self.logger.info("用户表为空,请先添加") return user_id=self.fomatter.input_str_format("请输入用户序号") user_obj=self.session.query(models.User).filter_by(id=user_id).first() if user_obj is None: self.logger.error("输入用户序号有误,请重新输入") return if self.group_list() is None: self.logger.info("请先增加主机组") return group_id=self.fomatter.input_str_format("请输入主机组序号") group_obj=self.session.query(models.Groups).filter_by(id=group_id).first() if group_obj is None: self.logger.error("输入主机和用户关系序号有误,请重新输入") return if group_obj not in user_obj.groups: user_obj.groups.append(group_obj) try: self.session_add(user_obj) except Exception as e: self.logger.info("系统用户与主机组记录已存在") self.session.rollback() def user_group_list(self,*args): """ 查看系统用户和主机组关系统 :param args: :return: """ user_objs=self.session.query(models.User).all() if user_objs is None: self.logger.error("输入主机和用户关系序号有误,请重新输入") self.fomatter.show_color("序号\t用户\t用户组") for user_obj in user_objs: for group_obj in user_obj.groups: self.fomatter.show_color("%s\t%s\t%s" %(user_obj.id,user_obj.username,group_obj.name)) def session_add(self,data): """ 数据提交 :param data: :return: """ if type(data)=="list": self.session.add_all(data) else: self.session.add(data) self.session.commit() @classmethod def start_session(self): """ 用户会话 :return: """ print('欢迎使用保垒机 ') username=self.fomatter.input_str_format("请输入用户名") password=self.fomatter.input_str_format("请输入密码") user_obj=self.session.query(models.User).filter(models.User.username==username,models.User.password==password).first() if user_obj: self.fomatter.show_color(user_obj) # print(user_obj.hostuser) # print(user_obj.groups) exit_flag = False while not exit_flag: if user_obj.hostuser: print('\033[32;1mz.\tungroupped hosts (%s)\033[0m' %len(user_obj.hostuser) ) for index,group in enumerate(user_obj.groups): print('\033[32;1m%s.\t%s (%s)\033[0m' %(index,group.name, len(group.hostuser)) ) choice = input("[%s]:" % user_obj.username).strip() if len(choice) == 0:continue if choice == 'z': print("------ 主机组: 分未配的主机 ------" ) for index,hostuser in enumerate(user_obj.hostuser): print(" %s.\t%s@%s(%s)"%(index, hostuser.remoteuser.username, hostuser.host.name, hostuser.host.host, )) print("----------- END -----------" ) elif choice.isdigit(): choice = int(choice) if choice < len(user_obj.groups): print("------ 主机组: %s ------" % user_obj.groups[choice].name ) for index,bind_host in enumerate(user_obj.groups[choice].hostuser): print(" %s.\t%s@%s(%s)"%(index, bind_host.remoteuser.username, bind_host.host.name, bind_host.host.host, )) print("----------- END -----------" ) #host selection while not exit_flag: user_option = input("[(b)返回, (q)退出, 选择主机登陆]:").strip() if len(user_option)==0:continue if user_option == 'b':break if user_option == 'q': exit_flag=True if user_option.isdigit(): user_option = int(user_option) if user_option < len(user_obj.groups[choice].hostuser) : # print('host:',user_obj.groups[choice].hostuser[user_option]) # print('audit log:',user_obj.groups[choice].hostuser[user_option].audit_logs) ssh_login(user_obj, user_obj.groups[choice].hostuser[user_option], self.session, self.log_recording) else: print("no this option..") @classmethod def log_recording(self,user_obj,bind_host_obj,logs): ''' 日志记录 ''' # print("\033[41;1m--logs:\033[0m",logs) self.session.add_all(logs) self.session.commit()
class Function(object): logger = Log().logger() conn = Connection().create_connection() engine = sqlalchemy.create_engine(conn, encoding="utf-8", echo=False) auth_dict = {} def __init__(self): session_class = sessionmaker(bind=self.engine) self.session = session_class() self.format = Fomatter() def auth(self): """ 用户认证 :return: """ username = self.format.input_str_format("请输入用户名") password = self.format.input_str_format("请输入密码") user_obj = self.session.query(User).filter( User.name == username, User.password == password).first() if user_obj is None: self.auth_dict["username"] = username self.auth_dict["is_auth"] = False self.auth_dict["role"] = None self.auth_dict["user_id"] = None self.logger.debug("用户认证失败") else: self.auth_dict["username"] = username self.auth_dict["is_auth"] = True self.auth_dict["role"] = user_obj.role.name self.auth_dict["user_id"] = user_obj.id self.logger.debug("用户认证成功") return self.auth_dict def role_add(self, *args): """ 增加角色 :param args: :return: """ name = self.format.input_str_format("请输入角色名") role_obj = Role(name=name) try: self.session_add(role_obj) self.logger.debug("角色[%s]添加成功" % name) except: self.session.rollback() self.logger.error("角色[%s]已存在" % name) def role_update(self, *args): """ 角色更新 :param args: :return: """ name_old = self.format.input_str_format("请输入需要修改的角色名") role_obj = self.session.query(Role).filter_by(name=name_old).first() if role_obj is None: self.logger.info("角色名[%s]不存在!" % name_old) else: name_new = self.format.input_str_format("请输入需要修改新的角色名") role_obj.name = name_new self.session.commit() def role_list(self, *args): """ 所有角色列表 :param args: :return: """ role_objs = self.session.query(Role).all() if len(role_objs) == 0: self.logger.info("角色表为空") return None else: self.format.show_color("序号\t角色名") for role_obj in role_objs: self.format.show_color("%s\t%s" % (role_obj.id, role_obj.name)) return True def role_query(self, *args): """ 角色更新 :param args: :return: """ name = self.format.input_str_format("请输入查询角色名") role_objs = self.session.query(Role).filter( Role.name.like("%" + "%s" % name + "%")).all() if len(role_objs) == 0: self.logger.info("角色表为空") else: self.format.show_color("序号\t角色名") for role_obj in role_objs: self.format.show_color("%s\t%s" % (role_obj.id, role_obj.name)) def classes_add(self, *args): """ 增加班级 :param args: :return: """ name = self.format.input_str_format("请输入班级名") role_obj = Classes(name=name) try: self.session_add(role_obj) self.logger.debug("班级[%s]添加成功" % name) except: self.session.rollback() self.logger.error("班级[%s]已存在" % name) def classes_list(self, *args): """ 班级列表 :param args: :return: """ classes_objs = self.session.query(Classes).all() if len(classes_objs) == 0: self.logger.info("班级表为空") return None else: self.format.show_color("序号\t班级名") for classes_obj in classes_objs: self.format.show_color("%s\t%s" % (classes_obj.id, classes_obj.name)) return True def user_add(self, *args): """ 增加用户 :param args: :return: """ name = self.format.input_str_format("请输入用户名") password = self.format.input_str_format("请输入密码") qq = self.format.input_str_format("请输入QQ号") if self.role_list(): role_id = self.format.input_str_format("请输入角色ID号") user_obj = User(name=name, password=password, qq=qq, role_id=role_id) try: self.session_add(user_obj) self.logger.debug("用户[%s]添加成功" % name) except: self.session.rollback() self.logger.error("用户名或者QQ已存在") def user_add_teacher(self, *args): """ 增加学员 :param args: :return: """ name = self.format.input_str_format("请输入用户名") password = self.format.input_str_format("请输入密码") qq = self.format.input_str_format("请输入QQ号") role_obj = self.session.query(Role).filter_by(name="student").first() user_obj = User(name=name, password=password, qq=qq, role_id=role_obj.id) try: self.session_add(user_obj) self.logger.debug("学员[%s]添加成功" % name) except: self.session.rollback() self.logger.error("学员名或者QQ已存在") def user_list(self, *args): """ 查看所有用户 :param args: :return: """ user_objs = self.session.query(User).all() if len(user_objs) == 0: self.logger.info("用户表为空") return None else: self.format.show_color("序号\t姓名\tqq号\t角色") for user_obj in user_objs: self.format.show_color("%s\t%s\t%s\t\t%s" % (user_obj.id, user_obj.name, user_obj.qq, user_obj.role.name)) return True def user_student_list(self, *args): """ 查看所有学员 :param args: :return: """ user_objs = self.session.query(User).filter( User.role_id.in_( self.session.query( Role.id).filter_by(name="student").first())).all() if len(user_objs) == 0: self.logger.info("用户表为空") return None else: self.format.show_color("序号\t姓名\tqq号\t角色") for user_obj in user_objs: self.format.show_color("%s\t%s\t%s\t\t%s" % (user_obj.id, user_obj.name, user_obj.qq, user_obj.role.name)) return True def class_user(self, *args): """ 学员分配班级 :param args: :return: """ if self.classes_list(): class_id = self.format.input_str_format("请输入班级ID号") class_obj = self.session.query(Classes).filter_by( id=class_id).first() if self.user_list(): qq = self.format.input_str_format("请输入学号QQ号") user_obj = self.session.query(User).filter_by(qq=qq).first() user_obj.classes = [class_obj] try: self.session.commit() self.logger.debug("学员QQ[%s]分配班级成功" % qq) except: self.logger.error("学员已分配到此班级") def course_add(self, *args): """ 增加课程 :param args: :return: """ if self.classes_list(): class_id = self.format.input_str_format("请输入班级ID号") try: name = self.format.input_str_format("请输入课程名") course_oj = Course(name=name, classes_id=class_id) self.session_add(course_oj) self.logger.debug("课程[%s]增加成功" % name) except: self.logger.error("你输入的班级号不存在!") def course_list(self, *args): """ 查看所有课程 :param args: :return: """ course_objs = self.session.query(Course).all() if len(course_objs) == 0: self.logger.info("课程表为空") return None else: self.format.show_color("序号\t课程名\t班级名") for course_obj in course_objs: self.format.show_color( "%s\t%s\t%s" % (course_obj.id, course_obj.name, course_obj.classes.name)) return True def record_add(self, *args): """ 增加上课记录 :param args: :return: """ if self.course_list(): course_id = self.format.input_str_format("请输入课程ID号") try: name = self.format.input_str_format("请输入上课记录名") taskname = self.format.input_str_format("请输入上课作业要求") record_oj = Record(name=name, task=taskname, course_id=course_id) self.session_add(record_oj) self.logger.debug("上课记录[%s]增加成功" % name) except: self.logger.error("你输入的课程号不存在!") def record_list(self, *args): """ 所有课程记录 :param args: :return: """ record_objs = self.session.query(Record).all() if len(record_objs) == 0: self.logger.info("上课记录表为空") return None else: self.format.show_color("序号\t\t上课记录\t\t上课作业\t课程名\t\t班级名") for record_obj in record_objs: self.format.show_color("%s\t%s\t%s\t%s\t%s" \ %(record_obj.id,record_obj.name,record_obj.task,record_obj.course.name,record_obj.course.classes.name)) return True def record_user_add(self, *args): """ 学员上课记录 :param args: :return: """ if self.record_list(): record_id = self.format.input_str_format("请输入上课程记录ID号") record_obj = self.session.query(Record).filter_by( id=record_id).first() if self.user_list(): user_id = self.format.input_str_format("请输入学员ID号") user_obj = self.session.query(User).filter_by( id=user_id).first() record_user_obj = RecordUser(user_id=user_id, record_id=record_id) self.session_add(record_user_obj) def record_user_list(self, *args): """ 查看所有学员上课记录 :param args: :return: """ record_user_objs = self.session.query(RecordUser).all() if len(record_user_objs) == 0: self.logger.info("上课记录和用户关系表为空") return None else: self.format.show_color("序号\t课程\t上课记录\t作业\t上课学员") for record_user_obj in record_user_objs: user_obj = self.session.query(User).filter_by( id=record_user_obj.user_id).first() record_obj = self.session.query(Record).filter_by( id=record_user_obj.record_id).first() self.format.show_color("%s\t%s\t%s\t%s\t%s" \ %(record_user_obj.id,record_obj.course.name,record_obj.name,record_obj.task,user_obj.name)) return True def sumbit_user_record(self, *args): """ 提交作业 :param args: :return: """ userid = args[0] record_user_objs = self.session.query(RecordUser).filter( RecordUser.user_id == userid, RecordUser.record_id.in_( self.session.query(Record.id).filter_by(task_status=0))).all() if len(record_user_objs) == 0: self.logger.error("用户没有需要上交的作业") return record_user_ids = [] for record_user_obj in record_user_objs: record_user_ids.append("%s" % record_user_obj.id) self.format.show_color("%s\t%s\t%s\t%s\t%s" \ %(record_user_obj.id,record_user_obj.record.course.classes.name,\ record_user_obj.record.course.name,record_user_obj.record.name, record_user_obj.record.task )) while True: record_user_id = self.format.input_str_format("请输入作业ID号") if record_user_id not in record_user_ids: continue else: break is_ok = self.format.input_str_format("是否提交作业Y/N") if is_ok == "Y": record_obj = self.session.query(Record).filter( Record.id == self.session.query(RecordUser.record_id).filter( RecordUser.id == record_user_id)).first() record_obj.task_status = 1 self.logger.debug("[%s]提交作业成功" % userid) def score_add(self, *args): """ 审批作业 :param args: :return: """ if self.record_user_list(): record_user_id = self.format.input_str_format("请输入作业ID号") score_num = self.format.input_str_format("请输入成绩") try: score_obj = Score(number=score_num, record_user_id=record_user_id) self.session_add(score_obj) self.logger.debug("审批作业成功") except: self.logger.error("你输入的作业号不存在!") def score_query(self, *args): """ 查询成绩 :param args: :return: """ userid = args[0] score_objs = self.session.query(RecordUser).filter_by( user_id=userid).all() if len(score_objs) == 0: self.logger.error("用户成绩不存在!") return try: for score_obj in score_objs: self.format.show_color("%s\t%s\t%s\t%s\t%s\t%s" \ %(score_obj.id,score_obj.record.course.classes.name,\ score_obj.record.course.name,score_obj.record.name, score_obj.record.task,score_obj.score[0].number )) except: self.logger.error("用户成绩不存在!") def score_list(self, *args): """ 所有成绩列表 :param args: :return: """ score_objs = self.session.query(RecordUser).all() if len(score_objs) == 0: self.logger.error("用户[%s]成绩不存在!" % (score_objs.user.name)) return self.format.show_color("班级\t学员\t课程名\t上课记录\t作业名\t成绩") for score_obj in score_objs: self.format.show_color("%s\t%s\t%s\t%s\t%s\t%s" \ %(score_obj.user.classes[0].name,score_obj.user.name,score_obj.record.course.name,score_obj.record.name,score_obj.record.task,score_obj.score[0].number)) def sum_score_list(self, *args): """ 成绩排名 :param args: :return: """ userid = args[0] user_objs = (self.session.query(User).filter_by(id=userid).first()) self.format.show_color("班级\t用户\t总成绩\t排名") for class_obj in user_objs.classes: user_objs = self.session.query(Classes).filter( Classes.id == class_obj.id).first() if len(user_objs.user) == 0: return score_sorted = [] for user_obj in user_objs.user: record_user_objs = self.session.query(RecordUser).filter( RecordUser.user_id == user_obj.id).all() nums = [] for record_user_obj in record_user_objs: for score_obj in record_user_obj.score: nums.append(copy.deepcopy(score_obj.number)) score_sorted.append((user_obj.name, sum(nums))) new_scored = sorted(score_sorted, key=lambda score: score[1]) new_scored.reverse() for score_tmp in range(len(new_scored)): self.format.show_color( "%s\t%s\t%s\t%s" % (class_obj.name, new_scored[score_tmp][0], new_scored[score_tmp][1], score_tmp + 1)) def session_add(self, data): if type(data) == "list": self.session.add_all(data) else: self.session.add(data) self.session.commit()