from flask import *
from redmine import Redmine
import sys
app = Flask(__name__)
REDMINE_KEY='sdfsdfsdfsdfsd'
REDMINE_URL='http://blabla/redmine'
redmine = Redmine(REDMINE_URL)
redmine = Redmine(REDMINE_URL, key=REDMINE_KEY)
neu = []
bearbeitung = []
erledigt = []
id_thema = ""
thema = ""
project = ""
zugewiesen = ""
def ticket_zugewiesen(diesTicket):
alleticket = redmine.issue.get(diesTicket)
try:
alleticket.assigned_to
except:
return True
def ticket_infos(diesTicket):
alleticket = redmine.issue.get(diesTicket)
try:
id_thema = alleticket.id
thema = alleticket.subject
project = alleticket.project.name
zugewiesen = alleticket.assigned_to
except:
id_thema = alleticket.id
thema = alleticket.subject
project = alleticket.project.name
return
neueIssues = redmine.issue.filter(status_id='1')
for i in neueIssues:
neu.append(i.id)
neueIssues = redmine.issue.filter(status_id='2')
for i in neueIssues:
bearbeitung.append(i.id)
neueIssues = redmine.issue.filter(status_id='5')
for i in neueIssues:
erledigt.append(i.id)
@app.route('/_sendinfo')
def info():
return jsonify(result=id_thema,thema=thema, project=project, zugewiesen=zugewiesen)
@app.route('/')
def home():
while True:
neu2 = []
bearbeitung2 = []
erledigt2 = []
neueIssues = redmine.issue.filter(status_id='1')
for neues in neueIssues:
neu2.append(neues.id)
neueIssues = redmine.issue.filter(status_id='2')
for bearbeitetes in neueIssues:
bearbeitung2.append(bearbeitetes.id)
neueIssues = redmine.issue.filter(status_id='5')
for erledigtes in neueIssues:
erledigt2.append(erledigtes.id)
for i in neu2:
if i not in neu:
janein = ticket_zugewiesen(i)
if janein is True:
l = ticket_infos(i)
else:
pass
neu = neu2
for ii in bearbeitung2:
if ii not in bearbeitung:
if ii in erledigt:
l = ticket_infos(ii)
erledigt = erledigt2
bearbeitung = bearbeitung2
for iii in erledigt2:
if iii not in erledigt:
l = ticket_infos(iii)
erledigt = erledigt2
return render_template("index.html")
if __name__ == '__main__':
app.run()
How can I make this endless loop in home()
work in flask?
Now it does not work.
Or is there a better way to get data from redmine?
I will check every round, that the endless loop make, if the three lists neu2, bearbeitung2, erledigt2 are equal to neu, bearbeitung, erledigt. And if there is a number more in "list2" i will display some information on the frontend (Browser) dynamically.
If I understand you correctly, you want to keep pushing updates to the browser from a single Flask route. Sadly, that is not possible. You will need to look into using browser-side JavaScript and either polling with AJAX, or websockets to push real-time updates.
The choice between AJAX and WS depends on your specific use case. Try looking into both. AJAX is probably simpler to set up, but Flask has some WS support as far as I can tell: https://github.com/miguelgrinberg/Flask-SocketIO
EDIT: You can also try using Server-Sent Events, if you don't need to support old browsers (though there seem to be polyfills, which provide support in old browsers as well). They are well explained here: How to implement server push in Flask framework? and seem really easy to use, though I've never personally tried.