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)
Beispiel #3
0
    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)