예제 #1
0
파일: test_query.py 프로젝트: rbw/aiosnow
def test_query_builder_nested():
    class AssignmentGroup(ModelSchema):
        sys_id = fields.String()
        name = fields.String()

    class Incident(TableModel):
        number = fields.String()
        assignment_group = AssignmentGroup

    assert (
        str(Incident.assignment_group.name == "test123")
        == "assignment_group.name=test123"
    )
    assert (
        str(Incident.assignment_group.name.equals("test321"))
        == "assignment_group.name=test321"
    )
    assert (
        str(Incident.assignment_group.sys_id == "id123")
        == "assignment_group.sys_id=id123"
    )

    assert (
        str(
            select(
                Incident.assignment_group.name.equals("test")
                & Incident.number.ends_with("01")
            )
        )
        == "assignment_group.name=test^numberENDSWITH01"
    )
예제 #2
0
파일: test_query.py 프로젝트: rbw/aiosnow
def test_query_builder_or():
    class Incident(TableModel):
        sys_id = fields.String()
        impact = fields.Integer()

    sysparm_query = select(Incident.sys_id.equals("id123") | Incident.impact.equals(5))
    assert str(sysparm_query) == "sys_id=id123^ORimpact=5"
예제 #3
0
파일: test_query.py 프로젝트: rbw/aiosnow
def test_query_builder_and():
    class Incident(TableModel):
        number = fields.String()
        priority = fields.Integer()

    sysparm_query = select(
        Incident.number.equals("number123") & Incident.priority.less_than(2)
    )
    assert str(sysparm_query) == "number=number123^priority<2"
예제 #4
0
파일: test_query.py 프로젝트: rbw/aiosnow
def test_query_builder_nq():
    class Incident(TableModel):
        priority = fields.Integer()
        impact = fields.Integer()

    assert (
        str(
            select(
                Incident.priority.equals(2) & Incident.impact.equals(5)
                ^ Incident.impact.not_equals(1)
                | Incident.priority.equals(2)
            )
        )
        == "priority=2^impact=5^NQimpact!=1^ORpriority=2"
    )
예제 #5
0
async def main(client):
    query = select(
        Incident.assignment_group.name.equals("Hardware")
        & Incident.impact.greater_or_equals(1)).order_asc(Incident.number)

    async with Incident(client, table_name="incident") as api:
        for response in await api.get(query, limit=1):
            agrp = response["assignment_group"]
            print(
                "{number} ({sys_id}) is assigned to group: {ag_name} ({ag_id})"
                .format(
                    sys_id=response["sys_id"],
                    number=response["number"],
                    ag_id=agrp["sys_id"],
                    ag_name=agrp["name"],
                ))
예제 #6
0
파일: journal.py 프로젝트: rbw/aiosnow
async def main(client, q_number: str):
    async with Incident(
        client,
        table_name="incident",
        return_only=["sys_id", "number", "short_description"],
    ) as inc:
        response = await inc.get_one(Incident.number == q_number)
        record = response.data
        async with Journal(
            client,
            table_name="sys_journal_field",
            return_only=["element", "sys_created_on", "sys_created_by", "value"],
        ) as jnl:
            wn_query = select(
                Journal.element_id.equals(record["sys_id"])
                & Journal.element.equals("work_notes")
            ).order_asc(Journal.sys_created_on)

            record["journal"] = list(await jnl.get(wn_query))

        print(record)
예제 #7
0
파일: stream.py 프로젝트: rbw/aiosnow
async def main(client):
    async with Incident(client, table_name="incident") as inc:
        query = select().order_asc(inc.number)

        async for _, record in inc.stream(query, limit=500, page_size=50):
            print("{number} ({sys_id}): {short_description}".format(**record))