def info_loop(self, widget): """check if all entries from Identification screen are filled. Callback defined in ui file.""" if (self.username_changed_id is None or self.hostname_changed_id is None): return if (widget is not None and widget.get_name() == 'fullname' and not self.username_edited): self.username.handler_block(self.username_changed_id) new_username = misc.utf8(widget.get_text().split(' ')[0]) new_username = new_username.encode('ascii', 'ascii_transliterate') new_username = new_username.decode().lower() new_username = re.sub('^[^a-z]+', '', new_username) new_username = re.sub('[^-a-z0-9_]', '', new_username) self.username.set_text(new_username) self.username.handler_unblock(self.username_changed_id) elif (widget is not None and widget.get_name() == 'username' and not self.hostname_edited): self.hostname.handler_block(self.hostname_changed_id) t = widget.get_text() if t: self.hostname.set_text(re.sub(r'\W', '', t) + self.suffix) self.hostname.handler_unblock(self.hostname_changed_id) # Do some initial validation. We have to process all the widgets so we # can know if we can really show the next button. Otherwise we'd show # it on any field being valid. complete = True if self.fullname.get_text(): self.fullname_ok.show() else: self.fullname_ok.hide() text = self.username.get_text() if text: errors = check_username(text) if errors: self.username_error(make_error_string(self.controller, errors)) complete = False else: self.username_ok.show() self.username_error_label.hide() else: self.username_ok.hide() self.username_error_label.hide() complete = False password_ok = validation.gtk_password_validate( self.controller, self.password, self.verified_password, self.password_ok, self.password_error_label, self.password_strength, self.allow_password_empty, ) complete = complete and password_ok txt = self.hostname.get_text() self.hostname_ok.show() if txt: errors = check_hostname(txt) if errors: self.hostname_error(make_error_string(self.controller, errors)) complete = False self.hostname_ok.hide() else: self.hostname_ok.show() self.hostname_error_label.hide() else: complete = False self.hostname_ok.hide() self.hostname_error_label.hide() self.controller.allow_go_forward(complete)