Exemplo n.º 1
0
    def validate_python(self, form_fields, state):
        lc_id = form_fields.get('id', None)
        email_address = form_fields['email']
        user_name = form_fields['lusername']

        try:
            User.by_email_address(email_address)
        except NoResultFound:
            email_is_used = False
        else:
            email_is_used = True

        if User.by_user_name(user_name):
            new_user = False
        else:
            new_user = True

        if not lc_id:
            labcontroller = None
            luser = None
        else:
            labcontroller = LabController.by_id(lc_id)
            luser = labcontroller.user

        try:
            if not labcontroller and email_is_used: # New LC using dupe email
                raise ValueError
            if new_user and email_is_used: #New user using dupe email
                raise ValueError
            if luser:
                _check_user_email(email_address, luser.user_id)
        except ValueError:
            error = {'email' : self.message('not_unique', state)}
            raise Invalid('Email address is not unique', form_fields,
                state, error_dict=error)
Exemplo n.º 2
0
 def validate_python(self, form_fields, state):
     user_id = form_fields.get('user_id')
     email_address = form_fields['email_address']
     try:
         if not user_id: # New user
             try:
                 User.by_email_address(email_address)
             except NoResultFound:
                 pass
             else:
                 raise ValueError
         else:
             _check_user_email(email_address, user_id)
     except ValueError:
         error = {'email_address' : self.message('not_unique', state)}
         raise Invalid('Email address is not unique', form_fields,
             state, error_dict=error)
Exemplo n.º 3
0
def _check_user_email(email_address, user_id):
    try:
        user_by_email = User.by_email_address(email_address)
    except NoResultFound: # Email not being used
        pass
    else:
        #raise ValueError
        user_by_id = User.by_id(user_id)
        if user_by_id != user_by_email: # An existing email that is not theirs
            raise ValueError