def mutate(self, _, email, ws_id, start_date=None): check_role_or_error(ws_id=ws_id, role=WorkspaceUserRoles.ADMIN) start_date = start_date if start_date else datetime.datetime.utcnow() try: user = _UserModel.find(email=email) if user is None: if WorkspaceInvitation.find(email=email, ws_id=ws_id) is None: WorkspaceInvitation( email=email, ws_id=ws_id, start_date=start_date, status=WorkspaceInvitationStatus.PENDING).save() elif WorkspaceUser.find(user_id=user.id, ws_id=ws_id) is None: WorkspaceInvitation( email=email, ws_id=ws_id, start_date=start_date, status=WorkspaceInvitationStatus.ACCEPTED).save() WorkspaceUser(user_id=user.id, ws_id=ws_id, start_date=start_date).save() Persistent.commit() return AddMember(ok=True) except Exception as e: LOG.error(f'Could not add member into workspace. Error: {e}') Persistent.rollback() return GraphQLError('Could not add member into workspace.')
def mutate(self, _, email, ws_id): check_role_or_error(ws_id=ws_id, role=WorkspaceUserRoles.ADMIN) try: invitation = WorkspaceInvitation.find(ws_id=ws_id, email=email) if invitation: invitation.delete() ws_user = None user = _UserModel.find(email=email) if user: ws_user = WorkspaceUser.find(ws_id=ws_id, user_id=user.id) if ws_user: ws_user.delete() Persistent.commit() return RemoveMember(ok=True) except Exception as e: LOG.error(f'Could not remove member from workspace.. Error: {e}') Persistent.rollback() return GraphQLError('Could not remove member from workspace.')
def logged_id_user_load_callback(identity): from application.auth.models import User return User.find(email=identity)