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)
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"))