Example #1
0
    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
Example #2
0
        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
Example #3
0
    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()
Example #4
0
    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'}
Example #5
0
    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, )
Example #6
0
    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()
Example #7
0
    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}) не найдена")
Example #8
0
    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()
Example #9
0
        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()
Example #10
0
        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_())
Example #11
0
            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_())