def __init__(self, **kwargs): super(User, self).__init__() # If no arguments are passed, then create a new DbUser if not kwargs: raise ValueError("User can not be instantiated without arguments") # If a DbUser is passed as argument. Just use it and # wrap it with a User object elif 'dbuser' in kwargs: # When a dbuser is passed as argument, then no other arguments # should be passed. if len(kwargs) > 1: raise ValueError("When a DbUser is passed as argument, no" "further arguments are accepted.") dbuser = kwargs.pop('dbuser') if not isinstance(dbuser, DbUser): raise ValueError("Expected a DbUser. Object of a different" "class was given as argument.") self._dbuser = dbuser # If the email of a users is given then create a new User object with # this email. elif 'email' in kwargs: # When a dbuser is passed as argument, then no other arguments # should be passed. if len(kwargs) > 1: raise ValueError("When an email is passed as argument, no" "further arguments are accepted.") email = normalize_email(kwargs.pop('email')) self._dbuser = DbUser(email=email) else: raise ValueError("Only dbuser & email are accepted as arguments")
def create(self, email, first_name='', last_name='', institution=''): """ Create a user with the provided email address :return: A new user object :rtype: :class:`aiida.orm.User` """ return SqlaUser(self.backend, normalize_email(email), first_name, last_name, institution)