async def resolve_find_user(self, info, guid, update_time): """default find method""" del update_time err = 'Error in GQL query - find_user.' with ax_model.try_catch(info.context['session'], err, no_commit=True): query = User.get_query(info) ax_user = query.filter(AxUser.guid == guid).first() return ax_user
async def resolve_blocked_users(self, info, update_time=None): """Get all users""" del update_time err = 'Error in GQL query - all_users.' with ax_model.try_catch(info.context['session'], err, no_commit=True): query = User.get_query(info) # SQLAlchemy query users_list = [] users_list = query.filter(AxUser.is_group.is_(False)).filter( AxUser.is_blocked.is_(True)).all() return users_list
async def resolve_only_users(self, info, search_string=None, update_time=None, guids=None, emails=None): """Get all users and groups in one search""" del update_time err = 'Error in GQL query - users_and_groups.' with ax_model.try_catch(info.context['session'], err, no_commit=True): query = User.get_query(info) users_list = [] if search_string and guids: real_guids = [] guids_dict = json.loads(guids) for guid in guids_dict["items"]: real_guids.append(uuid.UUID(guid)) users_list = query.filter( or_(AxUser.short_name.ilike(f"%{search_string}%"), AxUser.guid.in_(real_guids))).filter( AxUser.is_group.is_(False)).filter( AxUser.is_blocked.is_(False)).all() elif search_string and emails: real_guids = [] email_list = ast.literal_eval(emails) users_list = query.filter( or_(AxUser.short_name.ilike(f"%{search_string}%"), AxUser.email.in_(email_list))).filter( AxUser.is_group.is_(False)).filter( AxUser.is_blocked.is_(False)).all() elif not search_string and guids: real_guids = [] guids_dict = json.loads(guids) for guid in guids_dict["items"]: real_guids.append(uuid.UUID(guid)) users_list = query.filter(AxUser.guid.in_(real_guids)).filter( AxUser.is_group.is_(False)).filter( AxUser.is_blocked.is_(False)).all() elif search_string and not guids: users_list = query.filter( AxUser.short_name.ilike(f"%{search_string}%")).filter( AxUser.is_group.is_(False)).filter( AxUser.is_blocked.is_(False)).all() elif not search_string and not guids and emails: email_list = ast.literal_eval(emails) users_list = query.filter(AxUser.email.in_(email_list)).filter( AxUser.is_group.is_(False)).filter( AxUser.is_blocked.is_(False)).all() return users_list
async def resolve_page_users(self, info, page_guid, update_time=None): """Get users that allowed to view page""" del update_time err = 'Error in GQL query - resolve_page_users.' with ax_model.try_catch(info.context['session'], err, no_commit=True): user_list = await ax_dialects.dialect.select_page_users( db_session=info.context['session'], page_guid=page_guid) user_guids = [] for user in user_list: user_guids.append(user['guid']) query = User.get_query(info) # SQLAlchemy query ret_list = query.filter(AxUser.guid.in_(user_guids)).filter( AxUser.is_blocked.is_(False)).all() return ret_list
async def resolve_current_ax_user(self, info, update_time): """ Returns current AxUser """ del update_time err = 'Error in GQL query - find_user.' with ax_model.try_catch(info.context['session'], err, no_commit=True): current_user = info.context['user'] if not current_user: return None user_guid = current_user['user_id'] query = User.get_query(info) ax_user = query.filter(AxUser.guid == uuid.UUID(user_guid)).filter( AxUser.is_blocked.is_(False)).first() ax_user.is_active_admin = current_user.get('is_admin', False) return ax_user
async def resolve_all_users(self, info, search_string=None, update_time=None): """Get all users""" del update_time err = 'Error in GQL query - all_users.' with ax_model.try_catch(info.context['session'], err, no_commit=True): query = User.get_query(info) # SQLAlchemy query users_list = [] if not search_string: users_list = query.filter(AxUser.is_group.is_(False)).filter( AxUser.is_blocked.is_(False)).all() else: users_list = query.filter(AxUser.is_group.is_(False)).filter( AxUser.short_name.ilike(f"%{search_string}%")).filter( AxUser.is_blocked.is_(False)).all() return users_list