def __init__(self, **kwargs): if 'auth' in kwargs.keys(): self.auth = kwargs.pop('auth') elif 'Auth' in kwargs.keys(): self.auth = kwargs.pop('Auth') else: raise ValueError('auth is required') if isinstance(self.auth, Auth): self.auth = { key: Auth.column_type(key)(value) for key, value in self.auth.dict().items() } else: self.auth = { key: Auth.column_type(key)(value) for key, value in self.auth.items() } if 'professor' in kwargs: self.professor = kwargs.pop('professor') elif 'Professor' in kwargs: self.professor = kwargs.pop('Professor') else: raise ValueError('professor is required') if 'data' in kwargs: self.data = TablesData(kwargs.get('data')) else: self.data = kwargs
def auth(**kwargs): self.session = Session() if 'POST' in methods: if request.method == 'POST': response = Response(request_type) data = self._read(request) if data is not None: authentication = None try: if self.__auth_require__: authentication = Auth.log_in(**data['user']) result = self.post(data=data.get('data'), auth=authentication, **kwargs) response.set_data(result) except Exception as e: response.set_error(f'{str(type(e))}: {str(e)}') finally: if authentication is not None: authentication.user.session().close() else: response.set_error("you send no data: {}".format( request.value)) return response() if 'GET' in methods: pass
def new_professor(): print('new_professor') response = Response('new_professor') data = JsonParser.read(request.data.decode('utf8').replace("'", '"')) session = Session() duplicate_login = session.query(Auth).filter( Auth.login == data['data']['login']).all() if len(duplicate_login) == 1: response.set_error('login') return response() professor = Professor.new(session, first_name=data['data']['first_name'], last_name=data['data']['last_name'], middle_name=data['data']['middle_name']) contact = ContactInfo.new(session, email=data['data']['email']) professor.contact = contact session.commit() auth = Auth.new(session, login=data['data']['login'], password=data['data']['password'], user_type=UserType.PROFESSOR, user_id=professor.id) session.commit() response.set_data({'ok': 'ok'}, NewProfessorResponse) return response()
def post(self, data: dict, auth: Auth, **kwargs): print('new_professor') session = Session() duplicate_login = session.query(Auth).filter( Auth.login == data['login']).all() if len(duplicate_login) == 1: raise Exception('login') professor = Professor.new(session, first_name=data['first_name'], last_name=data['last_name'], middle_name=data['middle_name']) contact = ContactInfo.new(session, email=data['email']) professor.contact = contact session.commit() auth = Auth.new(session, login=data['login'], password=data['password'], user_type=UserType.PROFESSOR, user_id=professor.id) session.commit() return {'ok': 'ok'}
def auth(self, *args): def on_error(msg): raise BisitorException(msg) from DataBase2 import Auth from Client.MyQt.Widgets.Network.Request import RequestWidget login = self.login_input.login() password = self.password_input.text() if login == '' or password == '': Message().information(self, 'Вход в систему', 'Укажите логин и пароль.') else: try: a = Auth.log_in(login, password) self.auth_success.emit(dict(login=login, password=password)) except InvalidLoginException: self.loading = FirstLoad.load(Auth(login=login, password=password), self.auth, )
def on_response(self, received_data: Dict, progress_bar): def create_row(item_data: Dict, class_: Type[_DBObject]): if not class_.get(session, **item_data): class_.new(session, **item_data) session.flush() progress_bar.increment() session = Session() received_data = ServerFirstLoadData(**received_data) TOTAL_LENGTH = progress_bar.last() progress_bar.set_part(TOTAL_LENGTH, len(received_data.data), "Загрузка данных") received_data.data.foreach(create_row) Auth.new(session, **received_data.auth) professor = Professor.new(session, **Map.item_type(received_data.professor[0], Professor)) professor._last_update_in = datetime.now() professor._last_update_out = datetime.now() session.commit()
def post(self, data: dict, auth: Auth, **kwargs): session = auth.session() group = session.query(Group).filter_by(**data, _is_deleted=False).first() if group is not None: students = Student.of(group) return { 'name': group.name, 'id': group.id, 'students': sorted(students, key=lambda x: x.full_name()) } else: raise NoDataError(f"группа с параметрами ({data}) не найдена")
def on_auth_success(self, auth): from DataBase2 import Auth from Client.Debug.WrongId import debug auth = Auth.log_in(**auth) professor = auth.user SettingsAPI.synch(professor) Settings.load(professor) debug(auth.user) # не смотря на то, что окно аутентификации больше не нужно, создав локальную переменную, # мы заставим сборщик мусора удалить python wrapper of MainWindow поле выхода из функции, # что поломает почти всё self.window = MainWindow(professor=professor) self.window.show() self.close()
def apply(data): def create_row(item_data: Dict, class_: Type[_DBObject]): if not class_.get(session, **item_data): class_.new(session, **item_data) session.flush() received_data = ServerFirstLoadData(**data) session = Session() auth = Auth.new(session, **received_data.auth) received_data.data.foreach(create_row) professor = Professor.new( session, **Map.item_type(received_data.professor[0], Professor)) professor._last_update_in = datetime.now() professor._last_update_out = datetime.now() session.commit() if on_finish: on_finish()
percent_vertical_model = PercentVerticalModel(lessons, students) percent_vertical_model.mimic(self.view.model()) self.view_show_color_rate.connect( percent_vertical_model.view_show_color_rate) self.percent_vertical_view.setModel(percent_vertical_model) percent_horizontal_model = PercentHorizontalModel(lessons, students) percent_horizontal_model.mimic(self.view.model()) self.percent_horizontal_view.setModel(percent_horizontal_model) model.item_changed.connect(percent_horizontal_model.data_updated) model.item_changed.connect(percent_vertical_model.data_updated) self.view.select_row.connect(model.select_row) # self.view.select_row.connect(percent_vertical_model.select_row) if __name__ == '__main__': app = QApplication(sys.argv) auth = Auth.log_in('VAE', '123456') group = Group.of(auth.user)[0] v = VisitTableWidget() v.setData(Lesson.of(group), Student.of(group)) v.view.selectColumn(2) v.show() sys.exit(app.exec_())
def starter(class_): def __starter__(): self.start_loader.emit(class_) return __starter__ btn = QPushButton(child.label) option_layout.addRow(btn, QLabel(child.description)) btn.clicked.connect(starter(child)) main_layout.addWidget(self.hello_label) main_layout.addLayout(option_layout) self.setLayout(main_layout) if __name__ == '__main__': app = QApplication(sys.argv) auth = Auth.get_or_create(login='******', password='******', user_id=1, user_type=UserType.PROFESSOR) professor = Professor.get_or_create(id=1) w = LoadingWizardWindow(professor=auth.user) w.show() sys.exit(app.exec_())