def update( *, db_session, individual_contact: IndividualContact, individual_contact_in: IndividualContactUpdate, ) -> IndividualContact: """Updates an individual.""" individual_contact_data = individual_contact.dict() update_data = individual_contact_in.dict(skip_defaults=True, exclude={"filters"}) for field in individual_contact_data: if field in update_data: setattr(individual_contact, field, update_data[field]) if individual_contact_in.filters is not None: filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in individual_contact_in.filters ] individual_contact.filters = filters db_session.commit() return individual_contact
def create(*, db_session, document_in: DocumentCreate) -> Document: """Creates a new document.""" project = None if document_in.project: project = project_service.get_by_name(db_session=db_session, name=document_in.project.name) filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in document_in.filters ] # set the last reminder to now if document_in.evergreen: document_in.evergreen_last_reminder_at = datetime.utcnow() document = Document( **document_in.dict(exclude={"project", "filters"}), filters=filters, project=project, ) db_session.add(document) db_session.commit() return document
def update(*, db_session, service: Service, service_in: ServiceUpdate) -> Service: """Updates an existing service.""" service_data = jsonable_encoder(service) update_data = service_in.dict(skip_defaults=True, exclude={"filters"}) filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in service_in.filters ] if service_in.is_active: # user wants to enable the service oncall_plugin_instance = plugin_service.get_active_instance_by_slug( db_session=db_session, slug=service_in.type, project_id=service.project.id) if not oncall_plugin_instance.enabled: raise InvalidConfiguration( f"Cannot enable service: {service.name}. Its associated plugin {oncall_plugin_instance.plugin.title} is not enabled." ) for field in service_data: if field in update_data: setattr(service, field, update_data[field]) service.filters = filters db_session.add(service) db_session.commit() return service
def update(*, db_session, document: Document, document_in: DocumentUpdate) -> Document: """Updates a document.""" document_data = document.dict() # we reset the last evergreeen reminder to now if document_in.evergreen: if not document.evergreen: document_in.evergreen_last_reminder_at = datetime.utcnow() update_data = document_in.dict(skip_defaults=True, exclude={"filters"}) for field in document_data: if field in update_data: setattr(document, field, update_data[field]) if document_in.filters is not None: filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in document_in.filters ] document.filters = filters db_session.commit() return document
def create(*, db_session, team_contact_in: TeamContactCreate) -> TeamContact: project = project_service.get_by_name_or_raise( db_session=db_session, project_in=team_contact_in.project) filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in team_contact_in.filters ] team = TeamContact( **team_contact_in.dict(exclude={"project", "filters"}), filters=filters, project=project, ) db_session.add(team) db_session.commit() return team
def create(*, db_session, service_in: ServiceCreate) -> Service: """Creates a new service.""" project = project_service.get_by_name_or_raise( db_session=db_session, project_in=service_in.project) filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in service_in.filters ] service = Service( **service_in.dict(exclude={"filters", "project"}), filters=filters, project=project, ) db_session.add(service) db_session.commit() return service
def update(*, db_session, team_contact: TeamContact, team_contact_in: TeamContactUpdate) -> TeamContact: team_contact_data = team_contact.dict() update_data = team_contact_in.dict(skip_defaults=True, exclude={"filter"}) for field in team_contact_data: if field in update_data: setattr(team_contact, field, update_data[field]) if team_contact_in.filters is not None: filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in team_contact_in.filters ] db_session.filters = filters db_session.commit() return team_contact
def create( *, db_session, individual_contact_in: IndividualContactCreate) -> IndividualContact: """Creates an individual.""" project = project_service.get_by_name( db_session=db_session, name=individual_contact_in.project.name) filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in individual_contact_in.filters ] contact = IndividualContact( **individual_contact_in.dict(exclude={"project", "filters"}), filters=filters, project=project, ) db_session.add(contact) db_session.commit() return contact
def create(*, db_session, notification_in: NotificationCreate) -> Notification: """Creates a new notification.""" filters = [] if notification_in.filters: filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in notification_in.filters ] project = project_service.get_by_name_or_raise( db_session=db_session, project_in=notification_in.project) notification = Notification(**notification_in.dict( exclude={"filters", "project"}), filters=filters, project=project) db_session.add(notification) db_session.commit() return notification
def update(*, db_session, notification: Notification, notification_in: NotificationUpdate) -> Notification: """Updates a notification.""" notification_data = notification.dict() update_data = notification_in.dict( skip_defaults=True, exclude={"filters"}, ) for field in notification_data: if field in update_data: setattr(notification, field, update_data[field]) if notification_in.filters is not None: filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in notification_in.filters ] notification.filters = filters db_session.commit() return notification
def update( *, db_session, individual_contact: IndividualContact, individual_contact_in: IndividualContactUpdate, ) -> IndividualContact: individual_contact_data = jsonable_encoder(individual_contact_in) filters = [ search_filter_service.get(db_session=db_session, search_filter_id=f.id) for f in individual_contact_in.filters ] update_data = individual_contact_in.dict(skip_defaults=True, exclude={"filters"}) for field in individual_contact_data: if field in update_data: setattr(individual_contact, field, update_data[field]) individual_contact.filters = filters db_session.add(individual_contact) db_session.commit() return individual_contact
def test_delete(session, search_filter): from dispatch.search_filter.service import delete, get delete(db_session=session, search_filter_id=search_filter.id) assert not get(db_session=session, search_filter_id=search_filter.id)
def test_get(session, search_filter): from dispatch.search_filter.service import get t_search_filter = get(db_session=session, search_filter_id=search_filter.id) assert t_search_filter.id == search_filter.id