https://github.com/tarvitz/rtquery
Request Tracker Querying Library
https://github.com/tarvitz/rtquery
best-practices query-builder request-tracker
Last synced: 4 months ago
JSON representation
Request Tracker Querying Library
- Host: GitHub
- URL: https://github.com/tarvitz/rtquery
- Owner: tarvitz
- Created: 2017-11-12T23:22:47.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-02-10T20:44:15.000Z (over 8 years ago)
- Last Synced: 2025-12-15T05:33:03.770Z (7 months ago)
- Topics: best-practices, query-builder, request-tracker
- Language: Python
- Size: 25.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
Awesome Lists containing this project
README
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 ``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/