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 = widget.get_text().split(' ')[0] new_username = new_username.encode('ascii', 'ascii_transliterate') new_username = new_username.lower() 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): if self.laptop: hostname_suffix = '-laptop' else: hostname_suffix = '-desktop' self.hostname.handler_block(self.hostname_changed_id) self.hostname.set_text(widget.get_text().strip() + hostname_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_valid_image.show() else: self.fullname_valid_image.hide() if self.username.get_text(): self.username_error_box.hide() self.username_valid_image.show() else: self.username_valid_image.hide() complete = False passw = self.password.get_text() vpassw = self.verified_password.get_text() allow_empty = self.allow_password_empty if allow_empty: self.password_valid.hide() elif passw and vpassw: if passw == vpassw: self.password_error_box.hide() (txt, color) = validation.human_password_strength(passw) txt = self.controller.get_string('ubiquity/text/password/' + txt) txt = '<small><span foreground="%s"><b>%s</b></span></small>' \ % (color, txt) self.password_valid.set_markup(txt) self.password_valid.show() else: self.password_valid.hide() complete = False else: self.password_valid.hide() complete = False txt = self.hostname.get_text() if txt: error_msg = check_hostname(txt) if not error_msg: self.hostname_error_box.hide() self.hostname_valid_image.show() else: self.hostname_error(error_msg) complete = False else: self.hostname_valid_image.hide() complete = False self.controller.allow_go_forward(complete)
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.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 passw = self.password.get_text() vpassw = self.verified_password.get_text() allow_empty = self.allow_password_empty if passw != vpassw: complete = False self.password_ok.hide() if passw and (len(vpassw) / float(len(passw)) > 0.8): # TODO Cache, use a custom string. txt = self.controller.get_string('ubiquity/text/password_mismatch') txt = '<small><span foreground="darkred"><b>%s</b></span></small>' % txt self.password_error_label.set_markup(txt) self.password_error_label.show() else: self.password_error_label.hide() if allow_empty: self.password_strength.hide() elif not passw: self.password_strength.hide() complete = False else: (txt, color) = validation.human_password_strength(passw) # TODO Cache txt = self.controller.get_string('ubiquity/text/password/' + txt) txt = '<small><span foreground="%s"><b>%s</b></span></small>' \ % (color, txt) self.password_strength.set_markup(txt) self.password_strength.show() if passw == vpassw: self.password_ok.show() 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)
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 = widget.get_text().split(' ')[0] new_username = new_username.encode('ascii', 'ascii_transliterate') new_username = new_username.lower() 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): hostname_suffix = '-jolicloud' self.hostname.handler_block(self.hostname_changed_id) self.hostname.set_text(widget.get_text().strip() + hostname_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_valid_image.show() else: self.fullname_valid_image.hide() if self.username.get_text(): self.username_error_box.hide() self.username_valid_image.show() else: self.username_valid_image.hide() complete = False passw = self.password.get_text() vpassw = self.verified_password.get_text() allow_empty = self.allow_password_empty if allow_empty: self.password_valid.hide() elif passw and vpassw: if passw == vpassw: self.password_error_box.hide() (txt, color) = validation.human_password_strength(passw) txt = self.controller.get_string('ubiquity/text/password/' + txt) txt = '<small><span foreground="%s"><b>%s</b></span></small>' \ % (color, txt) self.password_valid.set_markup(txt) self.password_valid.show() else: self.password_valid.hide() complete = False else: self.password_valid.hide() complete = False txt = self.hostname.get_text() if txt: error_msg = check_hostname(txt) if not error_msg: self.hostname_error_box.hide() self.hostname_valid_image.show() else: self.hostname_error(error_msg) complete = False else: self.hostname_valid_image.hide() complete = False self.controller.allow_go_forward(complete)