Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
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)
Ejemplo n.º 13
0
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