2016-06-12 19 views
2

Ich versuche, alle Ises in einem Projekt mit dem Status Done or Closed aufzulisten. Wenn ich eine JQL-Abfrage mit erweiterter Suche ausführe, erhalte ich: 3096 Probleme im Projekt. Aber wenn ich es mit Python starte, bekomme ich ungefähr 50 Probleme.Jira sucht alle Probleme in einem Projekt mit Status Fertig oder Geschlossen

#/usr/bin/python 
import jira.client 
from jira.client import JIRA 

options = {'server': 'http://jira.confluence.no' } 
jira = JIRA(options, batch_auth=('admin', 'admin')) 
project = jira.projects() 

for project in projects: 
    issues = jira.search_issues('project=JA') 

for issue in issues: 
    if str(issue.fields.status) == 'Done' or str(issue.fields.status) == 'Closed': 
     print issue 

ich nur immer 50 oder so Probleme, obwohl mehr als 3000 Probleme mit dem Status dort Done oder Closed mit einer JQL Abfrage.

Gibt es vielleicht ein Limit?

+0

Wie viele Projekte haben Sie? Wie Sie es derzeit haben, wird 'Issues' die Probleme für das letzte Projekt enthalten (auch wenn es keine Probleme mit" project = JA "gibt). Wollen Sie die 'for issue'-Schleife in die' for project'-Schleife einbetten? In der Tat, warum hast du überhaupt den 'for project'-Loop? –

+0

Ich habe versucht, das 'for issue' in die 'for project'-Schleife einzubetten, aber ich sah die gleichen Probleme immer wieder. Hast du irgendwelche Vorschläge, wie ich es machen könnte? – user3580316

+0

Sie brauchen die 'for-point'-Schleife überhaupt nicht. Sie sagen bereits 'search_issues', an welchem ​​Projekt Sie interessiert sind. –

Antwort

4

Aus der Dokumentation bei https://pythonhosted.org/jira/:

search_issues(jql_str, startAt=0, maxResults=50, validate_query=True, 
       fields=None, expand=None, json_result=None) 

Notiere die maxResults Argument. Ich denke, Sie müssen maxResults=False angeben. Alternativ tun es in einer Schleife wie:

got = 50 
    total = 0 
    while got==50: 
     issues = jira.search_issues('project=JA', startAt = total) 
     .... 
     got = len(issues) 
     total += got 
+0

Ich denke, Sie haben meine Frage falsch verstanden. Ich sollte alle Probleme auflisten, aber ich habe nur 50 Probleme mit dem Code in dem obigen Beitrag. – user3580316

+4

@ user3580316: Ich habe es perfekt verstanden. Sie müssen entweder "gib mir viele Ergebnisse" angeben, oder Schleife um sie in Stücke zu bekommen. –

3

Die Antwort von Martin Bonner ist in Ordnung, aber ich bin Entsendung nur eine Antwort auf die weitere Klärung hinzuzufügen.

Die search_issues Methode verwendet die JIRA-REST-API die JQL Abfrage auszuführen, so können Sie auch auf der JIRA REST API documentation schauen die startat und maxResults Parameter zu verstehen:

enter image description here

Aus dieser Dokumentation I Nehmen wir an, dass maxResults nur einen int als Wert akzeptiert.

+0

Wie definiere ich unlimitierte Ergebnisse? Ist das richtig? 'issues = jira.search_issues ('projekt = JA', maxResults = 500000)' – user3580316

+0

Standardmäßig ist die Anzahl der zurückgegebenen Probleme auf 1000 begrenzt. Für JIRA Cloud können Sie diesen Wert nicht ändern: https://confluence.atlassian.com /jirakb/changing-maxresults-parameter-for-jira-rest-api-779160706.html – GlennV

+0

Wenn Sie Ihre eigene JIRA ausführen, können Sie in diesem Artikel sehen, wie Sie Ihre JIRA konfigurieren, um die maximale Anzahl der Ergebnisse zu ändern: https://confluence.atlassian.com/jirakb/how-to-increase-the-jira-search-results-limit-on-the-issue-navigator-357696242.html. Sie sollten sich jedoch bewusst sein, dass das Limit beabsichtigt ist und darauf abzielt, Leistungs- und Speicherprobleme zu vermeiden. Der empfohlene Ansatz besteht darin, Ergebnisse in Batches mithilfe der Parameter maxResults und startAt abzurufen. – GlennV

-2

Verwendung maxResults Parameter sollte in Ihrem Fall maxResults = 3000 arbeiten