def new(cls, client, username, email, pw_hash, data_store=None, refer=None, **kwargs): if 'profile_name' not in kwargs: kwargs['profile_name'] = email[:email.index('@')] if 'statistics' not in kwargs: kwargs['statistics'] = UserStatistics.new(data_store) if 'settings' in kwargs: s = kwargs['settings'] kwargs['settings'] = cls.DEFAULT_SETTINGS kwargs['settings'].update(s) kwargs.update({ 'client': client, 'username': username, 'email': email, 'pw_hash': pw_hash }) ctrl = super(User, cls).new(data_store, **kwargs) if refer: ctrl.add_friend(refer) return ctrl