def create_user(self, context, request: TracimRequest, hapic_data=None): """ Create new user """ app_config = request.registry.settings["CFG"] # type: CFG uapi = UserApi( current_user=request.current_user, session=request.dbsession, config=app_config # User ) gapi = GroupApi( current_user=request.current_user, session=request.dbsession, config=app_config # User ) groups = [gapi.get_one_with_name(hapic_data.body.profile)] password = hapic_data.body.password if not password and hapic_data.body.email_notification: password = password_generator() user = uapi.create_user( auth_type=AuthType.UNKNOWN, email=hapic_data.body.email, password=password, timezone=hapic_data.body.timezone, lang=hapic_data.body.lang, name=hapic_data.body.public_name, do_notify=hapic_data.body.email_notification, groups=groups, do_save=True, ) uapi.execute_created_user_actions(user) return uapi.get_user_with_context(user)
def insert(self): u = User() u.display_name = 'Global manager' u.email = '*****@*****.**' u.password = '******' self._session.add(u) uapi = UserApi(session=self._session, config=self._config, current_user=u) uapi.execute_created_user_actions(u) g1 = Group() g1.group_id = 1 g1.group_name = 'users' g1.display_name = 'Users' g1.users.append(u) self._session.add(g1) g2 = Group() g2.group_id = 2 g2.group_name = 'trusted-users' g2.display_name = 'Trusted Users' g2.users.append(u) self._session.add(g2) g3 = Group() g3.group_id = 3 g3.group_name = 'administrators' g3.display_name = 'Administrators' g3.users.append(u) self._session.add(g3)
def create_user(self, context, request: TracimRequest, hapic_data=None): """ Create new user. Note: One of username or email required. """ app_config = request.registry.settings["CFG"] # type: CFG uapi = UserApi( current_user=request.current_user, session=request.dbsession, config=app_config # User ) if hapic_data.body.profile: profile = Profile.get_profile_from_slug(hapic_data.body.profile) else: profile = None password = hapic_data.body.password if not password and hapic_data.body.email_notification: password = password_generator() user = uapi.create_user( auth_type=AuthType.UNKNOWN, email=hapic_data.body.email, password=password, timezone=hapic_data.body.timezone, lang=hapic_data.body.lang, name=hapic_data.body.public_name, username=hapic_data.body.username, do_notify=hapic_data.body.email_notification, allowed_space=hapic_data.body.allowed_space, profile=profile, do_save=True, ) uapi.execute_created_user_actions(user) return uapi.get_user_with_context(user)
def insert(self): u = User() u.display_name = 'Global manager' u.email = '*****@*****.**' u.password = '******' self._session.add(u) uapi = UserApi( session=self._session, config=self._config, current_user=u) uapi.execute_created_user_actions(u) g1 = Group() g1.group_id = 1 g1.group_name = 'users' g1.display_name = 'Users' g1.users.append(u) self._session.add(g1) g2 = Group() g2.group_id = 2 g2.group_name = 'trusted-users' g2.display_name = 'Trusted Users' g2.users.append(u) self._session.add(g2) g3 = Group() g3.group_id = 3 g3.group_name = 'administrators' g3.display_name = 'Administrators' g3.users.append(u) self._session.add(g3)
class CreateUserCommand(UserCommand): def get_description(self) -> str: return """Create a new user account""" def get_parser(self, prog_name: str) -> argparse.ArgumentParser: parser = super().get_parser(prog_name) parser.add_argument( "--send-email", help= "send an email to the created user (you need to configure EMAIL-NOTIFICATION part in config file to use this feature)", dest="send_email", required=False, action="store_true", default=False, ) return parser def take_app_action(self, parsed_args: argparse.Namespace, app_context: AppEnvironment) -> None: # TODO - G.M - 05-04-2018 -Refactor this in order # to not setup object var outside of __init__ . if parsed_args.send_email and not parsed_args.email: print("Warning: No email provided, can not send email to user.") self._session = app_context["request"].dbsession self._app_config = app_context["registry"].settings["CFG"] self._user_api = UserApi(current_user=None, session=self._session, config=self._app_config) profile = None if parsed_args.profile: profile = Profile.get_profile_from_slug(parsed_args.profile) if not parsed_args.password and parsed_args.send_email: parsed_args.password = password_generator() try: user = self._user_api.create_user( email=parsed_args.email, name=parsed_args.public_name, password=parsed_args.password, username=parsed_args.username, timezone=parsed_args.timezone, lang=parsed_args.lang, allowed_space=parsed_args.allowed_space, profile=profile, do_save=True, do_notify=parsed_args.send_email, ) self._user_api.execute_created_user_actions(user) except TracimException as exc: self._session.rollback() print("Error: " + str(exc)) print("User not created.") raise exc print("User created")
class UpdateUserCommand(UserCommand): def get_parser(self, prog_name: str) -> argparse.ArgumentParser: parser = super().get_parser(prog_name) parser.add_argument( "-l", "--login", help="the user's login (either the email address or the username)", dest="login", required=True, ) return parser def get_description(self) -> str: return """Edit the account of a user""" def take_app_action(self, parsed_args: argparse.Namespace, app_context: AppEnvironment) -> None: # TODO - G.M - 05-04-2018 -Refactor this in order # to not setup object var outside of __init__ . self._session = app_context["request"].dbsession self._app_config = app_context["registry"].settings["CFG"] self._user_api = UserApi(current_user=None, session=self._session, config=self._app_config) user = self._user_api.get_one_by_login(parsed_args.login) profile = None if parsed_args.profile: profile = Profile.get_profile_from_slug(parsed_args.profile) try: user = self._user_api.update( user=user, email=parsed_args.email, name=parsed_args.public_name, password=parsed_args.password, timezone=parsed_args.timezone, username=parsed_args.username, allowed_space=parsed_args.allowed_space, profile=profile, do_save=True, ) self._user_api.execute_created_user_actions(user) except TracimException as exc: self._session.rollback() print("Error: " + str(exc)) print("User not updated.") raise exc print("User updated")
def create_workspaces_members_role( self, context, request: TracimRequest, hapic_data=None) -> UserRoleWorkspaceInContext: """ Add a member to this workspace. This feature is for workspace managers and administrators. """ newly_created = False email_sent = False app_config = request.registry.settings["CFG"] # type: CFG rapi = RoleApi(current_user=request.current_user, session=request.dbsession, config=app_config) uapi = UserApi( current_user=request.current_user, session=request.dbsession, config=app_config, show_deactivated=True, show_deleted=True, ) try: if hapic_data.body.user_id: user = uapi.get_one(hapic_data.body.user_id) elif hapic_data.body.user_email: user = uapi.get_one_by_email(hapic_data.body.user_email) else: user = uapi.get_one_by_username(hapic_data.body.user_username) if user.is_deleted: raise UserIsDeleted( "This user has been deleted. Unable to invite him.") if not user.is_active: raise UserIsNotActive( "This user is not activated. Unable to invite him") except UserDoesNotExist as exc: if not uapi.allowed_to_invite_new_user(hapic_data.body.user_email): raise exc if app_config.NEW_USER__INVITATION__DO_NOTIFY: user = uapi.create_user( auth_type=AuthType.UNKNOWN, email=hapic_data.body.user_email, password=password_generator(), do_notify=True, ) if (app_config.EMAIL__NOTIFICATION__ACTIVATED and app_config.NEW_USER__INVITATION__DO_NOTIFY and app_config.JOBS__PROCESSING_MODE == app_config.CST.SYNC): email_sent = True else: user = uapi.create_user( auth_type=AuthType.UNKNOWN, email=hapic_data.body.user_email, password=None, do_notify=False, ) uapi.execute_created_user_actions(user) newly_created = True role = rapi.create_one( user=user, workspace=request.current_workspace, role_level=WorkspaceRoles.get_role_from_slug( hapic_data.body.role).level, with_notif=app_config.EMAIL__NOTIFICATION__ENABLED_ON_INVITATION, flush=True, ) return rapi.get_user_role_workspace_with_context( role, newly_created=newly_created, email_sent=email_sent)