Esempio n. 1
0
def settings(id):
    # Насройки, для их просмотра необходимо быть зарегестрированным
    form = SettingsForm()
    # При отикрытии страницы, сначала в неё загружаются данные,
    # введённые при регистрации, а затем уже их меняет пользователь
    if request.method == "GET":
        db_sess = db_session.create_session()
        user = db_sess.query(User).filter(User.id == id).first()
        if user and current_user == user:
            form.email.data = current_user.email
            form.surname.data = current_user.surname
            form.name.data = current_user.name
            form.age.data = current_user.age
            form.role.data = current_user.role
        else:
            abort(404)
    if form.validate_on_submit():
        # Все параметры пользователя меняются в зависимости от введённых в соответствующие поля данных
        db_sess = db_session.create_session()
        user = db_sess.query(User).filter(User.id == id).first()
        if user:
            if form.avatar.data:
                avatar = form.avatar.data
                # Все проверки повторяются из регистрации
                if avatar.filename.split('.')[-1] not in ['png', 'jpeg', 'jpg', 'ico', 'gif', 'bmp']:
                    return render_template('settings.html', title='Settings',
                                           form=form,
                                           message="This file is not an image")
                avatar_name = 'Avatar ' + form.email.data + ' ' + str(datetime.datetime.now()).replace(
                    ":", "-") + '.' + avatar.filename.split('.')[-1]
                if avatar_function(user.avatar) and os.path.isfile('static/img/Avatars/' + user.avatar):
                    # Проверяем, был ли предыдущий аватар системным, и если нет - удаляем его из хранилища
                    os.remove('static/img/Avatars/' + user.avatar)
                avatar.save("static/img/Avatars/" + avatar_name)
            else:
                avatar_name = current_user.avatar
            if form.old_password.data and form.new_password.data:
                # Проверяется старый пароль
                if not user.check_password(form.old_password.data.strip()):
                    return render_template('settings.html', title='Settings',
                                           form=form,
                                           message="Wrong password")
                # Проверяется, совпадают ли пароли
                elif form.old_password.data.strip() == form.new_password.data.strip():
                    return render_template('settings.html', title='Settings',
                                           form=form,
                                           message="These passwords are same")
                else:
                    # Если ошибок нет, проверяем надёжность пароля и сохраняем его пользователю
                    if check_user_password(form.new_password.data) != True:
                        return render_template('settings.html', title='Settings',
                                               form=form,
                                               message=check_user_password(form.new_password.data))
                    user.set_password(form.new_password.data.strip())
            # Необычные проверки на пароли, пользователю необходимо заполнить поля, иначе - ошибка
            elif form.new_password.data and not form.old_password.data:
                return render_template('settings.html', title='Settings',
                                       form=form,
                                       message="Please, enter the previous password to continue")
            # Далее - снова проверки на данные
            if len(form.surname.data) >= 20:
                return render_template('settings.html', title='Settings',
                                       form=form,
                                       message="Your surname is so big, please, enter up to 20 characters")
            if len(form.name.data) >= 15:
                return render_template('settings.html', title='Settings',
                                       form=form,
                                       message="Your name is so big, please, enter up to 15 characters")
            user.surname = form.surname.data.strip()[0].upper() + form.surname.data.strip()[1:]
            user.name = form.name.data.strip()[0].upper() + form.name.data.strip()[1:]
            if not form.age.data.isnumeric() or int(form.age.data) > 200:
                return render_template('settings.html', title='Settings',
                                       form=form,
                                       message="Please, enter your correct age")
            if int(form.age.data) < 12:
                return render_template('settings.html', title='Settings',
                                       form=form,
                                       message="We are sorry, this website is only for 12+ users")
            # Как и при регистрации, все данные сохраняются
            print('gor')
            user.age = form.age.data.strip()
            user.role = form.role.data
            user.avatar = avatar_name
            db_sess.merge(user)
            db_sess.commit()
            return redirect('/')
        else:
            abort(404)
    return render_template('settings.html', title='Settings', form=form)
Esempio n. 2
0
    def __init__(self, parent=None):
        self.uri = ""
        self.callswidgets = []
        self.contactswidgets = []
        self.config = ConfigParser.RawConfigParser()
        self.config.readfp(getConfig())
        super(Dialer, self).__init__(parent, QtCore.Qt.FramelessWindowHint)
        self.errortimer = QtCore.QTimer()
        self.errortimer.setInterval(1000)
        self.setupUi(self)
        try:
            if self.config.getboolean("main", "aot"):
                self.setWindowFlags(QtCore.Qt.FramelessWindowHint
                                    | QtCore.Qt.WindowStaysOnTopHint)
        except:
            pass

        try:
            if not self.config.getboolean("main", "ust"):
                a = 1 / 0
            else:
                self.dialButton.setIcon(QtGui.QIcon.fromTheme("call-start"))
                self.hangupButton.setIcon(QtGui.QIcon.fromTheme("call-stop"))
        except:
            self.setStyleSheet(
                """QPushButton,QToolButton {background-color: rgb(40,40,40); height: 20px; color: rgb(255,255,255);  border-style: outset; border-width: 1px;
                              border-color: rgb(50,50,50);}
                              QDialog {background-color: rgb(10,10,10); color: rgb(255,255,255); border-style: outset; border-width: 1px;
                                         border-color: rgb(50,50,50);
}
                              QLabel {color: rgb(255,255,255);}
                              QLineEdit {color: white; background-color: rgb(30,30,30); border-style: outset; border-width: 1px;
                                         border-color: rgb(50,50,50); }""")

        self.contactsForm = ContactsForm()
        self.numberEdit.button.setStyleSheet(
            "background: transparent; border: none; margin-right: 5px")
        self.notify = NotifyManager()
        self.inactiveIcon = QtGui.QIcon(":/inactive.png")
        self.connectedIcon = QtGui.QIcon(":/connected.png")
        self.errorIcon = QtGui.QIcon(":/error.png")

        self.dialIcon = QtGui.QIcon(":/call.png")
        self.hangupIcon = QtGui.QIcon(":/stop.png")
        self.settings = SettingsForm()
        self.controller = Controller(self)
        self.settings.load()
        self.createTrayIcon()
        self.connectSignals()

        self.server = None
        self.login = None
        self.password = None

        self.calls = HistoryAdapter()
        self.contacts = ContactsAdapter()
        try:
            self.server = self.config.get("sip", "server")
            self.login = self.config.get("sip", "login")
            self.password = self.config.get("sip", "password")
        except:
            pass

        for sd in self.controller.core.lib.enum_snd_dev():
            self.settings.inputComboBox.addItem(self.trans(sd.name))
            self.settings.outputComboBox.addItem(self.trans(sd.name))
        self.settings.load()
        try:
            self.controller.core.lib.set_snd_dev(
                self.settings.inputComboBox.currentIndex(),
                self.settings.outputComboBox.currentIndex())
        except:
            debug(_("Audio-device error"))