Skip to main content

Request Tracker Querying Library

Project description


RT Query
========

.. image:: https://travis-ci.org/tarvitz/rtquery.svg?branch=master
:target: https://travis-ci.org/tarvitz/rtquery

.. image:: https://coveralls.io/repos/github/tarvitz/rtquery/badge.svg?branch=master
:target: https://coveralls.io/github/tarvitz/rtquery?branch=master

.. image:: https://badge.fury.io/py/rtquery.svg
:target: https://badge.fury.io/py/rtquery

.. contents::
:local:
:depth: 2

Abstract
--------
Simplifies query interface for |rt_tracker|_'s rest-api lib |rt_lib|_.
Main query interface has been take from |django|_ project

Requirements
------------

- Python 3.4+
- |rt_lib|_ (it's not dependency itself, but it uses in examples)

Usage
-----

.. code-block:: python

import rt

client = rt.Rt('http://localhost/rt/REST/1.0/',
basic_auth=('user', 'password'))
assert client.login()
#: rt filtering does not support `in` operation, so interface looks similar
#: to django querying, but it sticks to its limits.
query = Q(Subject__contains='[improvements]') | Q(Subject__contains='[enhancements]')
query &= Q(Queue='development', Status='sprint', Owner='User',
Priority__gt=80)
result = client.search(Queue=rt.ALL_QUEUES, raw_query=query.resolve())
print(result)
[{
"id": "ticket/471147",
"Queue": "development",
"Owner": "User",
"Creator": "User",
"Subject": "[improvements] Implement Requests Tracker simple querying",
"Status": "sprint",
"Priority": "99",
"InitialPriority": "40",
"FinalPriority": "40",
"Requestors": [
"user@example.org.fake"
],
"Created": "Thu Nov 02 19:26:40 2017",
"Starts": "Not set",
"Started": "Thu Nov 02 19:27:12 2017",
"Due": "Not set",
"Resolved": "Not set",
"Told": "Not set",
"LastUpdated": "Thu Nov 09 17:20:33 2017",
"TimeEstimated": "180 minutes",
"TimeWorked": "0",
"TimeLeft": "0",
"CF.{Tags}": "extra",
"CF.{Code Review}": "",
"CF.{Difficulty}": ""
}]

Extra functionality
-------------------
In addition to existent :py:class:`rtquery.Q` you can also try to use ``utils.query``
builder which is simple dsl to make ``Q`` objects from user input (argument parser for example)

.. code-block:: python

from rtquery.utils import query
qset = query("Queue = development & Status = sprint & Owner ~ user")
result = client.search(Queue=rt.ALL_QUEUES, raw_query=query.resolve())
# ...

.. references

.. |rt_tracker| replace:: Request Tracker
.. _rt_tracker: https://bestpractical.com/request-tracker
.. |rt_lib| replace:: RT Library
.. _rt_lib: https://github.com/CZ-NIC/python-rt
.. |django| replace:: Django Framework
.. _django: https://www.djangoproject.com/


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rtquery-0.10.0.tar.gz (15.9 kB view hashes)

Uploaded Source

Built Distribution

rtquery-0.10.0-py3-none-any.whl (21.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page